From ea0e38f6bc1e458b34b11b40c1092036db34f548 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Wed, 27 Apr 2011 09:43:00 -0700 Subject: Re-org for Clipper system. --- pal.h | 134 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 pal.h (limited to 'pal.h') diff --git a/pal.h b/pal.h new file mode 100644 index 0000000..a2ee6cf --- /dev/null +++ b/pal.h @@ -0,0 +1,134 @@ +#ifndef PAL_H +#define PAL_H 1 + +/* General Purpose Registers. */ +#define v0 $0 +#define t0 $1 +#define t1 $2 +#define t2 $3 +#define t3 $4 +#define t4 $5 +#define t5 $6 +#define a0 $16 +#define a1 $17 +#define a2 $18 +#define a3 $19 +#define a4 $20 +#define a5 $21 +#define t8 $22 +#define t9 $23 +#define t10 $24 + +/* PALcode Shadow Registers. These registers are swapped out when + QEMU is in PALmode. Unlike real hardware, there is no enable bit. + However, also unlike real hardware, the originals can be accessed + via MTPR/MFPR. */ +#define p0 $8 +#define p1 $9 +#define p2 $10 +#define p3 $11 +#define p4 $12 +#define p5 $13 +#define p6 $14 // Used to save exc_addr for machine check +#define p7 $25 + +/* QEMU Processor Registers. */ +#define qemu_ps 0 +#define qemu_fen 1 +#define qemu_pcc_ofs 2 +#define qemu_trap_arg0 3 +#define qemu_trap_arg1 4 +#define qemu_trap_arg2 5 +#define qemu_exc_addr 6 +#define qemu_palbr 7 +#define qemu_ptbr 8 +#define qemu_vptptr 9 +#define qemu_unique 10 +#define qemu_sysval 11 +#define qemu_usp 12 + +#define qemu_shadow0 32 +#define qemu_shadow1 33 +#define qemu_shadow2 34 +#define qemu_shadow3 35 +#define qemu_shadow4 36 +#define qemu_shadow5 37 +#define qemu_shadow6 38 +#define qemu_shadow7 39 + +/* PALcode Processor Register Private Storage. */ +#define pt0 40 +#define pt1 41 +#define pt2 42 +#define pt3 43 +#define pt4 44 +#define pt5 45 +#define pt6 46 +#define pt7 47 +#define pt8 48 +#define pt9 49 +#define pt10 50 +#define pt11 51 +#define pt12 52 +#define pt13 53 +#define pt14 54 +#define pt15 55 +#define pt16 56 +#define pt17 57 +#define pt18 58 +#define pt19 59 +#define pt20 60 +#define pt21 61 +#define pt22 62 +#define pt23 63 + +/* QEMU function calls, via mtpr. */ +#define qemu_tbia 255 +#define qemu_tbis 254 +#define qemu_wait 253 +#define qemu_halt 252 + +/* PALcode uses of the private storage slots. */ +#define ptEntUna pt0 +#define ptEntIF pt1 +#define ptEntSys pt2 +#define ptEntInt pt3 +#define ptEntArith pt4 +#define ptEntMM pt5 +#define ptMces pt6 +#define ptKsp pt7 +#define ptKgp pt8 +#define ptPcbb pt9 +#define ptPgp pt10 +#define ptMisc pt11 +#define ptMchk0 pt12 +#define ptMchk1 pt13 +#define ptMchk2 pt14 +#define ptMchk3 pt15 +#define ptMchk4 pt16 +#define ptMchk5 pt17 +#define ptSys0 pt18 +#define ptSys1 pt19 + +/* + * Shortcuts for various PALmode instructions. + */ +#define mtpr hw_mtpr +#define mfpr hw_mfpr +#define stq_p hw_stq/p +#define stl_p hw_stl/p +#define ldl_p hw_ldl/p +#define ldq_p hw_ldq/p + +/* QEMU recognizes the EV4/EV5 HW_REI instruction as a special case of + the EV6 HW_RET instruction. This pulls the destination address from + the EXC_ADDR processor register. */ +#define hw_rei hw_ret ($31) + + +.macro ENDFN function + .type \function, @function + .size \function, . - \function +.endm + +#endif /* PAL_H */ -- cgit v1.1