Annotation of qemu/roms/qemu-palcode/sys-clipper.S, revision 1.1

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: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.