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 + -
显示快捷键?