reg.h
来自「linux 内核源代码」· C头文件 代码 · 共 779 行 · 第 1/3 页
H
779 行
/* * Contains the definition of registers common to all PowerPC variants. * If a register definition has been changed in a different PowerPC * variant, we will case it in #ifndef XXX ... #endif, and have the * number used in the Programming Environments Manual For 32-Bit * Implementations of the PowerPC Architecture (a.k.a. Green Book) here. */#ifndef _ASM_POWERPC_REG_H#define _ASM_POWERPC_REG_H#ifdef __KERNEL__#include <linux/stringify.h>#include <asm/cputable.h>/* Pickup Book E specific registers. */#if defined(CONFIG_BOOKE) || defined(CONFIG_40x)#include <asm/reg_booke.h>#endif /* CONFIG_BOOKE || CONFIG_40x */#ifdef CONFIG_8xx#include <asm/reg_8xx.h>#endif /* CONFIG_8xx */#define MSR_SF_LG 63 /* Enable 64 bit mode */#define MSR_ISF_LG 61 /* Interrupt 64b mode valid on 630 */#define MSR_HV_LG 60 /* Hypervisor state */#define MSR_VEC_LG 25 /* Enable AltiVec */#define MSR_POW_LG 18 /* Enable Power Management */#define MSR_WE_LG 18 /* Wait State Enable */#define MSR_TGPR_LG 17 /* TLB Update registers in use */#define MSR_CE_LG 17 /* Critical Interrupt Enable */#define MSR_ILE_LG 16 /* Interrupt Little Endian */#define MSR_EE_LG 15 /* External Interrupt Enable */#define MSR_PR_LG 14 /* Problem State / Privilege Level */#define MSR_FP_LG 13 /* Floating Point enable */#define MSR_ME_LG 12 /* Machine Check Enable */#define MSR_FE0_LG 11 /* Floating Exception mode 0 */#define MSR_SE_LG 10 /* Single Step */#define MSR_BE_LG 9 /* Branch Trace */#define MSR_DE_LG 9 /* Debug Exception Enable */#define MSR_FE1_LG 8 /* Floating Exception mode 1 */#define MSR_IP_LG 6 /* Exception prefix 0x000/0xFFF */#define MSR_IR_LG 5 /* Instruction Relocate */#define MSR_DR_LG 4 /* Data Relocate */#define MSR_PE_LG 3 /* Protection Enable */#define MSR_PX_LG 2 /* Protection Exclusive Mode */#define MSR_PMM_LG 2 /* Performance monitor */#define MSR_RI_LG 1 /* Recoverable Exception */#define MSR_LE_LG 0 /* Little Endian */#ifdef __ASSEMBLY__#define __MASK(X) (1<<(X))#else#define __MASK(X) (1UL<<(X))#endif#ifdef CONFIG_PPC64#define MSR_SF __MASK(MSR_SF_LG) /* Enable 64 bit mode */#define MSR_ISF __MASK(MSR_ISF_LG) /* Interrupt 64b mode valid on 630 */#define MSR_HV __MASK(MSR_HV_LG) /* Hypervisor state */#else/* so tests for these bits fail on 32-bit */#define MSR_SF 0#define MSR_ISF 0#define MSR_HV 0#endif#define MSR_VEC __MASK(MSR_VEC_LG) /* Enable AltiVec */#define MSR_POW __MASK(MSR_POW_LG) /* Enable Power Management */#define MSR_WE __MASK(MSR_WE_LG) /* Wait State Enable */#define MSR_TGPR __MASK(MSR_TGPR_LG) /* TLB Update registers in use */#define MSR_CE __MASK(MSR_CE_LG) /* Critical Interrupt Enable */#define MSR_ILE __MASK(MSR_ILE_LG) /* Interrupt Little Endian */#define MSR_EE __MASK(MSR_EE_LG) /* External Interrupt Enable */#define MSR_PR __MASK(MSR_PR_LG) /* Problem State / Privilege Level */#define MSR_FP __MASK(MSR_FP_LG) /* Floating Point enable */#define MSR_ME __MASK(MSR_ME_LG) /* Machine Check Enable */#define MSR_FE0 __MASK(MSR_FE0_LG) /* Floating Exception mode 0 */#define MSR_SE __MASK(MSR_SE_LG) /* Single Step */#define MSR_BE __MASK(MSR_BE_LG) /* Branch Trace */#define MSR_DE __MASK(MSR_DE_LG) /* Debug Exception Enable */#define MSR_FE1 __MASK(MSR_FE1_LG) /* Floating Exception mode 1 */#define MSR_IP __MASK(MSR_IP_LG) /* Exception prefix 0x000/0xFFF */#define MSR_IR __MASK(MSR_IR_LG) /* Instruction Relocate */#define MSR_DR __MASK(MSR_DR_LG) /* Data Relocate */#define MSR_PE __MASK(MSR_PE_LG) /* Protection Enable */#define MSR_PX __MASK(MSR_PX_LG) /* Protection Exclusive Mode */#ifndef MSR_PMM#define MSR_PMM __MASK(MSR_PMM_LG) /* Performance monitor */#endif#define MSR_RI __MASK(MSR_RI_LG) /* Recoverable Exception */#define MSR_LE __MASK(MSR_LE_LG) /* Little Endian */#ifdef CONFIG_PPC64#define MSR_ MSR_ME | MSR_RI | MSR_IR | MSR_DR | MSR_ISF |MSR_HV#define MSR_KERNEL MSR_ | MSR_SF#define MSR_USER32 MSR_ | MSR_PR | MSR_EE#define MSR_USER64 MSR_USER32 | MSR_SF#else /* 32-bit *//* Default MSR for kernel mode. */#ifndef MSR_KERNEL /* reg_booke.h also defines this */#define MSR_KERNEL (MSR_ME|MSR_RI|MSR_IR|MSR_DR)#endif#define MSR_USER (MSR_KERNEL|MSR_PR|MSR_EE)#endif/* Floating Point Status and Control Register (FPSCR) Fields */#define FPSCR_FX 0x80000000 /* FPU exception summary */#define FPSCR_FEX 0x40000000 /* FPU enabled exception summary */#define FPSCR_VX 0x20000000 /* Invalid operation summary */#define FPSCR_OX 0x10000000 /* Overflow exception summary */#define FPSCR_UX 0x08000000 /* Underflow exception summary */#define FPSCR_ZX 0x04000000 /* Zero-divide exception summary */#define FPSCR_XX 0x02000000 /* Inexact exception summary */#define FPSCR_VXSNAN 0x01000000 /* Invalid op for SNaN */#define FPSCR_VXISI 0x00800000 /* Invalid op for Inv - Inv */#define FPSCR_VXIDI 0x00400000 /* Invalid op for Inv / Inv */#define FPSCR_VXZDZ 0x00200000 /* Invalid op for Zero / Zero */#define FPSCR_VXIMZ 0x00100000 /* Invalid op for Inv * Zero */#define FPSCR_VXVC 0x00080000 /* Invalid op for Compare */#define FPSCR_FR 0x00040000 /* Fraction rounded */#define FPSCR_FI 0x00020000 /* Fraction inexact */#define FPSCR_FPRF 0x0001f000 /* FPU Result Flags */#define FPSCR_FPCC 0x0000f000 /* FPU Condition Codes */#define FPSCR_VXSOFT 0x00000400 /* Invalid op for software request */#define FPSCR_VXSQRT 0x00000200 /* Invalid op for square root */#define FPSCR_VXCVI 0x00000100 /* Invalid op for integer convert */#define FPSCR_VE 0x00000080 /* Invalid op exception enable */#define FPSCR_OE 0x00000040 /* IEEE overflow exception enable */#define FPSCR_UE 0x00000020 /* IEEE underflow exception enable */#define FPSCR_ZE 0x00000010 /* IEEE zero divide exception enable */#define FPSCR_XE 0x00000008 /* FP inexact exception enable */#define FPSCR_NI 0x00000004 /* FPU non IEEE-Mode */#define FPSCR_RN 0x00000003 /* FPU rounding control *//* Special Purpose Registers (SPRNs)*/#define SPRN_CTR 0x009 /* Count Register */#define SPRN_DSCR 0x11#define SPRN_CTRLF 0x088#define SPRN_CTRLT 0x098#define CTRL_CT 0xc0000000 /* current thread */#define CTRL_CT0 0x80000000 /* thread 0 */#define CTRL_CT1 0x40000000 /* thread 1 */#define CTRL_TE 0x00c00000 /* thread enable */#define CTRL_RUNLATCH 0x1#define SPRN_DABR 0x3F5 /* Data Address Breakpoint Register */#define DABR_TRANSLATION (1UL << 2)#define SPRN_DAR 0x013 /* Data Address Register */#define SPRN_DSISR 0x012 /* Data Storage Interrupt Status Register */#define DSISR_NOHPTE 0x40000000 /* no translation found */#define DSISR_PROTFAULT 0x08000000 /* protection fault */#define DSISR_ISSTORE 0x02000000 /* access was a store */#define DSISR_DABRMATCH 0x00400000 /* hit data breakpoint */#define DSISR_NOSEGMENT 0x00200000 /* STAB/SLB miss */#define SPRN_TBRL 0x10C /* Time Base Read Lower Register (user, R/O) */#define SPRN_TBRU 0x10D /* Time Base Read Upper Register (user, R/O) */#define SPRN_TBWL 0x11C /* Time Base Lower Register (super, R/W) */#define SPRN_TBWU 0x11D /* Time Base Upper Register (super, R/W) */#define SPRN_SPURR 0x134 /* Scaled PURR */#define SPRN_HIOR 0x137 /* 970 Hypervisor interrupt offset */#define SPRN_LPCR 0x13E /* LPAR Control Register */#define SPRN_DBAT0L 0x219 /* Data BAT 0 Lower Register */#define SPRN_DBAT0U 0x218 /* Data BAT 0 Upper Register */#define SPRN_DBAT1L 0x21B /* Data BAT 1 Lower Register */#define SPRN_DBAT1U 0x21A /* Data BAT 1 Upper Register */#define SPRN_DBAT2L 0x21D /* Data BAT 2 Lower Register */#define SPRN_DBAT2U 0x21C /* Data BAT 2 Upper Register */#define SPRN_DBAT3L 0x21F /* Data BAT 3 Lower Register */#define SPRN_DBAT3U 0x21E /* Data BAT 3 Upper Register */#define SPRN_DBAT4L 0x239 /* Data BAT 4 Lower Register */#define SPRN_DBAT4U 0x238 /* Data BAT 4 Upper Register */#define SPRN_DBAT5L 0x23B /* Data BAT 5 Lower Register */#define SPRN_DBAT5U 0x23A /* Data BAT 5 Upper Register */#define SPRN_DBAT6L 0x23D /* Data BAT 6 Lower Register */#define SPRN_DBAT6U 0x23C /* Data BAT 6 Upper Register */#define SPRN_DBAT7L 0x23F /* Data BAT 7 Lower Register */#define SPRN_DBAT7U 0x23E /* Data BAT 7 Upper Register */#define SPRN_DEC 0x016 /* Decrement Register */#define SPRN_DER 0x095 /* Debug Enable Regsiter */#define DER_RSTE 0x40000000 /* Reset Interrupt */#define DER_CHSTPE 0x20000000 /* Check Stop */#define DER_MCIE 0x10000000 /* Machine Check Interrupt */#define DER_EXTIE 0x02000000 /* External Interrupt */#define DER_ALIE 0x01000000 /* Alignment Interrupt */#define DER_PRIE 0x00800000 /* Program Interrupt */#define DER_FPUVIE 0x00400000 /* FP Unavailable Interrupt */#define DER_DECIE 0x00200000 /* Decrementer Interrupt */#define DER_SYSIE 0x00040000 /* System Call Interrupt */#define DER_TRE 0x00020000 /* Trace Interrupt */#define DER_SEIE 0x00004000 /* FP SW Emulation Interrupt */#define DER_ITLBMSE 0x00002000 /* Imp. Spec. Instruction TLB Miss */#define DER_ITLBERE 0x00001000 /* Imp. Spec. Instruction TLB Error */#define DER_DTLBMSE 0x00000800 /* Imp. Spec. Data TLB Miss */#define DER_DTLBERE 0x00000400 /* Imp. Spec. Data TLB Error */#define DER_LBRKE 0x00000008 /* Load/Store Breakpoint Interrupt */#define DER_IBRKE 0x00000004 /* Instruction Breakpoint Interrupt */#define DER_EBRKE 0x00000002 /* External Breakpoint Interrupt */#define DER_DPIE 0x00000001 /* Dev. Port Nonmaskable Request */#define SPRN_DMISS 0x3D0 /* Data TLB Miss Register */#define SPRN_EAR 0x11A /* External Address Register */#define SPRN_HASH1 0x3D2 /* Primary Hash Address Register */#define SPRN_HASH2 0x3D3 /* Secondary Hash Address Resgister */#define SPRN_HID0 0x3F0 /* Hardware Implementation Register 0 */#define HID0_EMCP (1<<31) /* Enable Machine Check pin */#define HID0_EBA (1<<29) /* Enable Bus Address Parity */#define HID0_EBD (1<<28) /* Enable Bus Data Parity */#define HID0_SBCLK (1<<27)#define HID0_EICE (1<<26)#define HID0_TBEN (1<<26) /* Timebase enable - 745x */#define HID0_ECLK (1<<25)#define HID0_PAR (1<<24)#define HID0_STEN (1<<24) /* Software table search enable - 745x */#define HID0_HIGH_BAT (1<<23) /* Enable high BATs - 7455 */#define HID0_DOZE (1<<23)#define HID0_NAP (1<<22)#define HID0_SLEEP (1<<21)#define HID0_DPM (1<<20)#define HID0_BHTCLR (1<<18) /* Clear branch history table - 7450 */#define HID0_XAEN (1<<17) /* Extended addressing enable - 7450 */#define HID0_NHR (1<<16) /* Not hard reset (software bit-7450)*/#define HID0_ICE (1<<15) /* Instruction Cache Enable */#define HID0_DCE (1<<14) /* Data Cache Enable */#define HID0_ILOCK (1<<13) /* Instruction Cache Lock */#define HID0_DLOCK (1<<12) /* Data Cache Lock */#define HID0_ICFI (1<<11) /* Instr. Cache Flash Invalidate */#define HID0_DCI (1<<10) /* Data Cache Invalidate */#define HID0_SPD (1<<9) /* Speculative disable */#define HID0_DAPUEN (1<<8) /* Debug APU enable */#define HID0_SGE (1<<7) /* Store Gathering Enable */#define HID0_SIED (1<<7) /* Serial Instr. Execution [Disable] */#define HID0_DFCA (1<<6) /* Data Cache Flush Assist */#define HID0_LRSTK (1<<4) /* Link register stack - 745x */#define HID0_BTIC (1<<5) /* Branch Target Instr Cache Enable */#define HID0_ABE (1<<3) /* Address Broadcast Enable */#define HID0_FOLD (1<<3) /* Branch Folding enable - 745x */#define HID0_BHTE (1<<2) /* Branch History Table Enable */#define HID0_BTCD (1<<1) /* Branch target cache disable */#define HID0_NOPDST (1<<1) /* No-op dst, dstt, etc. instr. */#define HID0_NOPTI (1<<0) /* No-op dcbt and dcbst instr. */#define SPRN_HID1 0x3F1 /* Hardware Implementation Register 1 */#define HID1_EMCP (1<<31) /* 7450 Machine Check Pin Enable */#define HID1_DFS (1<<22) /* 7447A Dynamic Frequency Scaling */#define HID1_PC0 (1<<16) /* 7450 PLL_CFG[0] */#define HID1_PC1 (1<<15) /* 7450 PLL_CFG[1] */#define HID1_PC2 (1<<14) /* 7450 PLL_CFG[2] */#define HID1_PC3 (1<<13) /* 7450 PLL_CFG[3] */#define HID1_SYNCBE (1<<11) /* 7450 ABE for sync, eieio */#define HID1_ABE (1<<10) /* 7450 Address Broadcast Enable */#define HID1_PS (1<<16) /* 750FX PLL selection */#define SPRN_HID2 0x3F8 /* Hardware Implementation Register 2 */#define SPRN_IABR 0x3F2 /* Instruction Address Breakpoint Register */#define SPRN_HID4 0x3F4 /* 970 HID4 */#define SPRN_HID5 0x3F6 /* 970 HID5 */#define SPRN_HID6 0x3F9 /* BE HID 6 */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?