|
|
1.1 ! root 1: /* PALcode and C runtime functions for the CLIPPER system emulation. ! 2: ! 3: Copyright (C) 2011 Richard Henderson ! 4: ! 5: This file is part of QEMU PALcode. ! 6: ! 7: This program is free software; you can redistribute it and/or modify ! 8: it under the terms of the GNU General Public License as published by ! 9: the Free Software Foundation; either version 2 of the License or ! 10: (at your option) any later version. ! 11: ! 12: This program is distributed in the hope that it will be useful, ! 13: but WITHOUT ANY WARRANTY; without even the implied warranty of ! 14: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the text ! 15: of the GNU General Public License for more details. ! 16: ! 17: You should have received a copy of the GNU General Public License ! 18: along with this program; see the file COPYING. If not see ! 19: <http://www.gnu.org/licenses/>. */ ! 20: ! 21: #include "pal.h" ! 22: #include SYSTEM_H ! 23: ! 24: /* ! 25: * Sys_Setup ! 26: * ! 27: * Do any system specific setup necessary. ! 28: * ! 29: * INPUT PARAMETERS ! 30: * ! 31: * a0 = whami ! 32: * p7 = return address ! 33: */ ! 34: .globl Sys_Setup ! 35: .ent Sys_Setup ! 36: Sys_Setup: ! 37: .frame $sp, 0, p7, 0 ! 38: lda t0, TYPHOON_CCHIP_DIR0 ! 39: lda t1, TYPHOON_CCHIP_DIR2 ! 40: lda t2, TYPHOON_CCHIP_IIC0 ! 41: lda t3, TYPHOON_CCHIP_IIC2 ! 42: and a0, 2, t4 ! 43: cmovne t4, t1, t0 ! 44: cmovne t4, t3, t2 ! 45: and a0, 1, t4 ! 46: sll t4, 6, t4 ! 47: addq t0, t4, t0 ! 48: addq t2, t4, t2 ! 49: LOAD_PHYS_CCHIP t4 ! 50: addq t0, t4, t0 ! 51: addq t2, t4, t2 ! 52: mtpr t0, ptCpuDIR ! 53: mtpr t2, ptCpuIIC ! 54: ret ! 55: .end Sys_Setup ! 56: ! 57: /* ! 58: * Sys_Dev_Vector ! 59: * ! 60: * Load the SRM interrupt vector for the system. ! 61: * ! 62: * INPUT PARAMETERS ! 63: * ! 64: * p7 = return address ! 65: * ! 66: * OUTPUT PARAMETERS ! 67: * ! 68: * a1 = interrupt vector ! 69: */ ! 70: ! 71: .globl Sys_Dev_Vector ! 72: .ent Sys_Dev_Vector ! 73: Sys_Dev_Vector: ! 74: .frame $sp, 0, p7, 0 ! 75: mfpr a1, ptCpuDIR // Load int mask for this CPU ! 76: ldq_p a1, 0(a1) ! 77: beq a1, CallPal_Rti // No interrupts asserted? ! 78: ! 79: cttz a1, a1 // Find the first asserted interrupt. ! 80: ! 81: cmpeq a1, 55, a0 // Is this an ISA interrupt? ! 82: addq a1, 16, a1 // PCI interrupt numbers start at 16 ! 83: beq a0, 1f ! 84: ! 85: LOAD_PHYS_PCHIP0_IACK a1 // IACK results in the ISA irq ! 86: ldl_p a1, 0(a1) ! 87: ! 88: 1: sll a1, 4, a1 ! 89: lda a1, 0x800(a1) ! 90: ret $31, (p7), 0 ! 91: .end Sys_Dev_Vector ! 92: ! 93: /* ! 94: * Cserve_Ena ! 95: * ! 96: * Unmask a PCI interrupt ! 97: */ ! 98: .globl Cserve_Ena ! 99: Cserve_Ena: ! 100: // FIXME ! 101: hw_rei ! 102: ENDFN Cserve_Ena ! 103: ! 104: /* ! 105: * Cserve_Dis ! 106: * ! 107: * Mask a PCI interrupt ! 108: */ ! 109: .globl Cserve_Dis ! 110: Cserve_Dis: ! 111: // FIXME ! 112: hw_rei ! 113: ENDFN Cserve_Dis ! 114: ! 115: /* ! 116: * PCI parameters ! 117: */ ! 118: ! 119: .section .sdata ! 120: ! 121: .align 3 ! 122: .globl pci_io_base ! 123: .type pci_io_base, @object ! 124: .size pci_io_base, 8 ! 125: pci_io_base: ! 126: .quad PIO_KSEG_ADDR + TYPHOON_PCHIP0_PCI_IO ! 127: ! 128: .globl pci_conf_base ! 129: .type pci_conf_base, @object ! 130: .size pci_conf_base, 8 ! 131: pci_conf_base: ! 132: .quad PIO_KSEG_ADDR + TYPHOON_PCHIP0_PCI_CONF ! 133: ! 134: .align 3 ! 135: .globl pci_mem_base ! 136: .type pci_mem_base, @object ! 137: .size pci_mem_base, 8 ! 138: pci_mem_base: ! 139: .quad PIO_KSEG_ADDR + TYPHOON_PCHIP0_PCI_MEM ! 140:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.