Annotation of qemu/roms/qemu-palcode/pal.h, revision 1.1

1.1     ! root        1: /* Common definitions for QEMU Emulation PALcode
        !             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: #ifndef PAL_H
        !            22: #define PAL_H 1
        !            23: 
        !            24: /* General Purpose Registers.  */
        !            25: #define        v0      $0
        !            26: #define t0     $1
        !            27: #define t1     $2
        !            28: #define t2     $3
        !            29: #define t3     $4
        !            30: #define t4     $5
        !            31: #define t5     $6
        !            32: #define a0     $16
        !            33: #define a1     $17
        !            34: #define a2     $18
        !            35: #define a3     $19
        !            36: #define a4     $20
        !            37: #define a5     $21
        !            38: #define t8     $22
        !            39: #define t9     $23
        !            40: #define t10    $24
        !            41: 
        !            42: /* PALcode Shadow Registers.  These registers are swapped out when
        !            43:    QEMU is in PALmode.  Unlike real hardware, there is no enable bit.
        !            44:    However, also unlike real hardware, the originals can be accessed
        !            45:    via MTPR/MFPR.  */
        !            46: #define p0     $8
        !            47: #define p1     $9
        !            48: #define p2     $10
        !            49: #define p3     $11
        !            50: #define p4     $12
        !            51: #define p5     $13
        !            52: #define p6     $14             // Used to save exc_addr for machine check
        !            53: #define p7     $25
        !            54: 
        !            55: /* QEMU Processor Registers.  */
        !            56: #define        qemu_ps         0
        !            57: #define qemu_fen       1
        !            58: #define qemu_pcc_ofs   2
        !            59: #define qemu_trap_arg0 3
        !            60: #define qemu_trap_arg1 4
        !            61: #define qemu_trap_arg2 5
        !            62: #define qemu_exc_addr  6
        !            63: #define qemu_palbr     7
        !            64: #define qemu_ptbr      8
        !            65: #define qemu_vptptr    9
        !            66: #define qemu_unique    10
        !            67: #define qemu_sysval    11
        !            68: #define qemu_usp       12
        !            69: 
        !            70: #define qemu_shadow0   32
        !            71: #define qemu_shadow1   33
        !            72: #define qemu_shadow2   34
        !            73: #define qemu_shadow3   35
        !            74: #define qemu_shadow4   36
        !            75: #define qemu_shadow5   37
        !            76: #define qemu_shadow6   38
        !            77: #define qemu_shadow7   39
        !            78: 
        !            79: /* PALcode Processor Register Private Storage.  */
        !            80: #define pt0            40
        !            81: #define pt1            41
        !            82: #define pt2            42
        !            83: #define pt3            43
        !            84: #define pt4            44
        !            85: #define pt5            45
        !            86: #define pt6            46
        !            87: #define pt7            47
        !            88: #define pt8            48
        !            89: #define pt9            49
        !            90: #define pt10           50
        !            91: #define pt11           51
        !            92: #define pt12           52
        !            93: #define pt13           53
        !            94: #define pt14           54
        !            95: #define pt15           55
        !            96: #define pt16           56
        !            97: #define pt17           57
        !            98: #define pt18           58
        !            99: #define pt19           59
        !           100: #define pt20           60
        !           101: #define pt21           61
        !           102: #define pt22           62
        !           103: #define pt23           63
        !           104: 
        !           105: /* QEMU function calls, via mtpr.  */
        !           106: #define qemu_tbia      255
        !           107: #define qemu_tbis      254
        !           108: #define qemu_wait      253
        !           109: #define qemu_halt      252
        !           110: #define qemu_alarm     251
        !           111: #define qemu_walltime  250
        !           112: 
        !           113: /* PALcode uses of the private storage slots.  */
        !           114: #define ptEntUna       pt0
        !           115: #define ptEntIF                pt1
        !           116: #define ptEntSys       pt2
        !           117: #define ptEntInt       pt3
        !           118: #define ptEntArith     pt4
        !           119: #define ptEntMM                pt5
        !           120: #define ptMces         pt6
        !           121: #define ptKsp          pt7
        !           122: #define ptKgp          pt8
        !           123: #define ptPcbb         pt9
        !           124: #define ptPgp          pt10
        !           125: #define ptMisc         pt11
        !           126: #define ptMchk0                pt12
        !           127: #define ptMchk1                pt13
        !           128: #define ptMchk2                pt14
        !           129: #define ptMchk3                pt15
        !           130: #define ptMchk4                pt16
        !           131: #define ptMchk5                pt17
        !           132: #define ptSys0         pt18
        !           133: #define ptSys1         pt19
        !           134: 
        !           135: /*
        !           136:  * Shortcuts for various PALmode instructions.
        !           137:  */
        !           138: #define mtpr   hw_mtpr
        !           139: #define mfpr   hw_mfpr
        !           140: #define stq_p  hw_stq/p
        !           141: #define stl_p  hw_stl/p
        !           142: #define ldl_p  hw_ldl/p
        !           143: #define ldq_p  hw_ldq/p
        !           144: 
        !           145: /* QEMU recognizes the EV4/EV5 HW_REI instruction as a special case of
        !           146:    the EV6 HW_RET instruction.  This pulls the destination address from
        !           147:    the EXC_ADDR processor register.  */
        !           148: #define hw_rei hw_ret ($31)
        !           149: 
        !           150: 
        !           151: .macro ENDFN   function
        !           152:        .type   \function, @function
        !           153:        .size   \function, . - \function
        !           154: .endm
        !           155: 
        !           156: #endif /* PAL_H */

unix.superglobalmegacorp.com

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