Commit yaboot 1.3.0
[yaboot.git] / include / asm / processor.h
1 #ifndef __ASM_PPC_PROCESSOR_H
2 #define __ASM_PPC_PROCESSOR_H
3
4 /* Bit encodings for Machine State Register (MSR) */
5 #define MSR_POW         (1<<18)         /* Enable Power Management */
6 #define MSR_TGPR        (1<<17)         /* TLB Update registers in use */
7 #define MSR_ILE         (1<<16)         /* Interrupt Little-Endian enable */
8 #define MSR_EE          (1<<15)         /* External Interrupt enable */
9 #define MSR_PR          (1<<14)         /* Supervisor/User privilege */
10 #define MSR_FP          (1<<13)         /* Floating Point enable */
11 #define MSR_ME          (1<<12)         /* Machine Check enable */
12 #define MSR_FE0         (1<<11)         /* Floating Exception mode 0 */
13 #define MSR_SE          (1<<10)         /* Single Step */
14 #define MSR_BE          (1<<9)          /* Branch Trace */
15 #define MSR_FE1         (1<<8)          /* Floating Exception mode 1 */
16 #define MSR_IP          (1<<6)          /* Exception prefix 0x000/0xFFF */
17 #define MSR_IR          (1<<5)          /* Instruction MMU enable */
18 #define MSR_DR          (1<<4)          /* Data MMU enable */
19 #define MSR_RI          (1<<1)          /* Recoverable Exception */
20 #define MSR_LE          (1<<0)          /* Little-Endian enable */
21
22 /* Bit encodings for Hardware Implementation Register (HID0)
23    on PowerPC 603, 604, etc. processors (not 601). */
24 #define HID0_EMCP       (1<<31)         /* Enable Machine Check pin */
25 #define HID0_EBA        (1<<29)         /* Enable Bus Address Parity */
26 #define HID0_EBD        (1<<28)         /* Enable Bus Data Parity */
27 #define HID0_SBCLK      (1<<27)
28 #define HID0_EICE       (1<<26)
29 #define HID0_ECLK       (1<<25)
30 #define HID0_PAR        (1<<24)
31 #define HID0_DOZE       (1<<23)
32 #define HID0_NAP        (1<<22)
33 #define HID0_SLEEP      (1<<21)
34 #define HID0_DPM        (1<<20)
35 #define HID0_ICE        (1<<15)         /* Instruction Cache Enable */
36 #define HID0_DCE        (1<<14)         /* Data Cache Enable */
37 #define HID0_ILOCK      (1<<13)         /* Instruction Cache Lock */
38 #define HID0_DLOCK      (1<<12)         /* Data Cache Lock */
39 #define HID0_ICFI       (1<<11)         /* Instruction Cache Flash Invalidate */
40 #define HID0_DCI        (1<<10)         /* Data Cache Invalidate */
41 #define HID0_SPD        (1<<9)          /* Speculative disable */
42 #define HID0_SIED       (1<<7)          /* Serial Instruction Execution [Disable] */
43 #define HID0_BHTE       (1<<2)          /* Branch History Table Enable */
44 #define HID0_BTCD       (1<<1)          /* Branch target cache disable */
45
46 /* fpscr settings */
47 #define FPSCR_FX        (1<<31)
48 #define FPSCR_FEX       (1<<30)
49
50 #define _GLOBAL(n)\
51         .globl n;\
52 n:
53
54 #define TBRU    269     /* Time base Upper/Lower (Reading) */
55 #define TBRL    268
56 #define TBWU    284     /* Time base Upper/Lower (Writing) */
57 #define TBWL    285
58 #define XER     1
59 #define LR      8
60 #define CTR     9
61 #define HID0    1008    /* Hardware Implementation */
62 #define PVR     287     /* Processor Version */
63 #define IBAT0U  528     /* Instruction BAT #0 Upper/Lower */
64 #define IBAT0L  529
65 #define IBAT1U  530     /* Instruction BAT #1 Upper/Lower */
66 #define IBAT1L  531
67 #define IBAT2U  532     /* Instruction BAT #2 Upper/Lower */
68 #define IBAT2L  533
69 #define IBAT3U  534     /* Instruction BAT #3 Upper/Lower */
70 #define IBAT3L  535
71 #define DBAT0U  536     /* Data BAT #0 Upper/Lower */
72 #define DBAT0L  537
73 #define DBAT1U  538     /* Data BAT #1 Upper/Lower */
74 #define DBAT1L  539
75 #define DBAT2U  540     /* Data BAT #2 Upper/Lower */
76 #define DBAT2L  541
77 #define DBAT3U  542     /* Data BAT #3 Upper/Lower */
78 #define DBAT3L  543
79 #define DMISS   976     /* TLB Lookup/Refresh registers */
80 #define DCMP    977
81 #define HASH1   978
82 #define HASH2   979
83 #define IMISS   980
84 #define ICMP    981
85 #define RPA     982
86 #define SDR1    25      /* MMU hash base register */
87 #define DAR     19      /* Data Address Register */
88 #define SPR0    272     /* Supervisor Private Registers */
89 #define SPRG0   272
90 #define SPR1    273
91 #define SPRG1   273
92 #define SPR2    274
93 #define SPRG2   274
94 #define SPR3    275
95 #define SPRG3   275
96 #define DSISR   18
97 #define SRR0    26      /* Saved Registers (exception) */
98 #define SRR1    27
99 #define IABR    1010    /* Instruction Address Breakpoint */
100 #define DEC     22      /* Decrementer */
101 #define EAR     282     /* External Address Register */
102 #define L2CR    1017    /* PPC 750 L2 control register */
103
104 #define THRM1   1020
105 #define THRM2   1021
106 #define THRM3   1022
107 #define THRM1_TIN 0x1
108 #define THRM1_TIV 0x2
109 #define THRM1_THRES (0x7f<<2)
110 #define THRM1_TID (1<<29)
111 #define THRM1_TIE (1<<30)
112 #define THRM1_V   (1<<31)
113 #define THRM3_E   (1<<31)
114
115 /* Segment Registers */
116 #define SR0     0
117 #define SR1     1
118 #define SR2     2
119 #define SR3     3
120 #define SR4     4
121 #define SR5     5
122 #define SR6     6
123 #define SR7     7
124 #define SR8     8
125 #define SR9     9
126 #define SR10    10
127 #define SR11    11
128 #define SR12    12
129 #define SR13    13
130 #define SR14    14
131 #define SR15    15
132
133 #ifndef __ASSEMBLY__
134 static __inline__ unsigned long mfmsr(void)
135 {
136         unsigned long msr;
137         __asm__ __volatile__("mfmsr %0" : "=r" (msr));
138         return msr;
139 }
140 #endif
141   
142 #endif /* __ASM_PPC_PROCESSOR_H */