123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- #ifndef _SELFTESTS_POWERPC_REG_H
- #define _SELFTESTS_POWERPC_REG_H
- #define __stringify_1(x) #x
- #define __stringify(x) __stringify_1(x)
- #define mfspr(rn) ({unsigned long rval; \
- asm volatile("mfspr %0," _str(rn) \
- : "=r" (rval))
- #define mtspr(rn, v) asm volatile("mtspr " _str(rn) ",%0" : \
- : "r" ((unsigned long)(v)) \
- : "memory")
- #define mb() asm volatile("sync" : : : "memory");
- #define barrier() asm volatile("" : : : "memory");
- #define SPRN_MMCR2 769
- #define SPRN_MMCRA 770
- #define SPRN_MMCR0 779
- #define MMCR0_PMAO 0x00000080
- #define MMCR0_PMAE 0x04000000
- #define MMCR0_FC 0x80000000
- #define SPRN_EBBHR 804
- #define SPRN_EBBRR 805
- #define SPRN_BESCR 806
- #define SPRN_BESCRS 800
- #define SPRN_BESCRSU 801
- #define SPRN_BESCRR 802
- #define SPRN_BESCRRU 803
- #define BESCR_PMEO 0x1
- #define BESCR_PME (0x1ul << 32)
- #define SPRN_PMC1 771
- #define SPRN_PMC2 772
- #define SPRN_PMC3 773
- #define SPRN_PMC4 774
- #define SPRN_PMC5 775
- #define SPRN_PMC6 776
- #define SPRN_SIAR 780
- #define SPRN_SDAR 781
- #define SPRN_SIER 768
- #define SPRN_TEXASR 0x82
- #define SPRN_TFIAR 0x81
- #define SPRN_TFHAR 0x80
- #define SPRN_TAR 0x32f
- #define PVR_VER(pvr) (((pvr) >> 16) & 0xFFFF)
- #define SPRN_PVR 0x11F
- #define PVR_CFG(pvr) (((pvr) >> 8) & 0xF)
- #define PVR_MAJ(pvr) (((pvr) >> 4) & 0xF)
- #define PVR_MIN(pvr) (((pvr) >> 0) & 0xF)
- #define SPRN_DSCR_PRIV 0x11
- #define SPRN_DSCR 0x03
- #define SPRN_PPR 896
- #define SPRN_AMR 13
- #define set_amr(v) asm volatile("isync;" \
- "mtspr " __stringify(SPRN_AMR) ",%0;" \
- "isync" : \
- : "r" ((unsigned long)(v)) \
- : "memory")
- #define TEXASR_FC 0xFE00000000000000
- #define TEXASR_FP 0x0100000000000000
- #define TEXASR_DA 0x0080000000000000
- #define TEXASR_NO 0x0040000000000000
- #define TEXASR_FO 0x0020000000000000
- #define TEXASR_SIC 0x0010000000000000
- #define TEXASR_NTC 0x0008000000000000
- #define TEXASR_TC 0x0004000000000000
- #define TEXASR_TIC 0x0002000000000000
- #define TEXASR_IC 0x0001000000000000
- #define TEXASR_IFC 0x0000800000000000
- #define TEXASR_ABT 0x0000000100000000
- #define TEXASR_SPD 0x0000000080000000
- #define TEXASR_HV 0x0000000020000000
- #define TEXASR_PR 0x0000000010000000
- #define TEXASR_FS 0x0000000008000000
- #define TEXASR_TE 0x0000000004000000
- #define TEXASR_ROT 0x0000000002000000
- #define MSR_HV (1ul << 60)
- #define MSR_TS_S_LG 33
- #define MSR_TS_T_LG 34
- #define __MASK(X) (1UL<<(X))
- #define MSR_TS_S __MASK(MSR_TS_S_LG)
- #define MSR_TS_T __MASK(MSR_TS_T_LG)
- #define VSX_XX1(xs, ra, rb) (((xs) & 0x1f) << 21 | ((ra) << 16) | \
- ((rb) << 11) | (((xs) >> 5)))
- #define STXVD2X(xs, ra, rb) .long (0x7c000798 | VSX_XX1((xs), (ra), (rb)))
- #define LXVD2X(xs, ra, rb) .long (0x7c000698 | VSX_XX1((xs), (ra), (rb)))
- #define ASM_LOAD_GPR_IMMED(_asm_symbol_name_immed) \
- "li 14, %[" #_asm_symbol_name_immed "];" \
- "li 15, %[" #_asm_symbol_name_immed "];" \
- "li 16, %[" #_asm_symbol_name_immed "];" \
- "li 17, %[" #_asm_symbol_name_immed "];" \
- "li 18, %[" #_asm_symbol_name_immed "];" \
- "li 19, %[" #_asm_symbol_name_immed "];" \
- "li 20, %[" #_asm_symbol_name_immed "];" \
- "li 21, %[" #_asm_symbol_name_immed "];" \
- "li 22, %[" #_asm_symbol_name_immed "];" \
- "li 23, %[" #_asm_symbol_name_immed "];" \
- "li 24, %[" #_asm_symbol_name_immed "];" \
- "li 25, %[" #_asm_symbol_name_immed "];" \
- "li 26, %[" #_asm_symbol_name_immed "];" \
- "li 27, %[" #_asm_symbol_name_immed "];" \
- "li 28, %[" #_asm_symbol_name_immed "];" \
- "li 29, %[" #_asm_symbol_name_immed "];" \
- "li 30, %[" #_asm_symbol_name_immed "];" \
- "li 31, %[" #_asm_symbol_name_immed "];"
- #define ASM_LOAD_FPR(_asm_symbol_name_addr) \
- "lfd 0, 0(%[" #_asm_symbol_name_addr "]);" \
- "lfd 1, 0(%[" #_asm_symbol_name_addr "]);" \
- "lfd 2, 0(%[" #_asm_symbol_name_addr "]);" \
- "lfd 3, 0(%[" #_asm_symbol_name_addr "]);" \
- "lfd 4, 0(%[" #_asm_symbol_name_addr "]);" \
- "lfd 5, 0(%[" #_asm_symbol_name_addr "]);" \
- "lfd 6, 0(%[" #_asm_symbol_name_addr "]);" \
- "lfd 7, 0(%[" #_asm_symbol_name_addr "]);" \
- "lfd 8, 0(%[" #_asm_symbol_name_addr "]);" \
- "lfd 9, 0(%[" #_asm_symbol_name_addr "]);" \
- "lfd 10, 0(%[" #_asm_symbol_name_addr "]);" \
- "lfd 11, 0(%[" #_asm_symbol_name_addr "]);" \
- "lfd 12, 0(%[" #_asm_symbol_name_addr "]);" \
- "lfd 13, 0(%[" #_asm_symbol_name_addr "]);" \
- "lfd 14, 0(%[" #_asm_symbol_name_addr "]);" \
- "lfd 15, 0(%[" #_asm_symbol_name_addr "]);" \
- "lfd 16, 0(%[" #_asm_symbol_name_addr "]);" \
- "lfd 17, 0(%[" #_asm_symbol_name_addr "]);" \
- "lfd 18, 0(%[" #_asm_symbol_name_addr "]);" \
- "lfd 19, 0(%[" #_asm_symbol_name_addr "]);" \
- "lfd 20, 0(%[" #_asm_symbol_name_addr "]);" \
- "lfd 21, 0(%[" #_asm_symbol_name_addr "]);" \
- "lfd 22, 0(%[" #_asm_symbol_name_addr "]);" \
- "lfd 23, 0(%[" #_asm_symbol_name_addr "]);" \
- "lfd 24, 0(%[" #_asm_symbol_name_addr "]);" \
- "lfd 25, 0(%[" #_asm_symbol_name_addr "]);" \
- "lfd 26, 0(%[" #_asm_symbol_name_addr "]);" \
- "lfd 27, 0(%[" #_asm_symbol_name_addr "]);" \
- "lfd 28, 0(%[" #_asm_symbol_name_addr "]);" \
- "lfd 29, 0(%[" #_asm_symbol_name_addr "]);" \
- "lfd 30, 0(%[" #_asm_symbol_name_addr "]);" \
- "lfd 31, 0(%[" #_asm_symbol_name_addr "]);"
- #ifndef __ASSEMBLER__
- void store_gpr(unsigned long *addr)
- void load_gpr(unsigned long *addr)
- void store_fpr(double *addr)
- #endif
- #endif
|