1
2
3
4#ifdef __KERNEL__
5#ifndef __ASM_PPC_PROCESSOR_H
6#define __ASM_PPC_PROCESSOR_H
7
8
9
10
11
12#define current_text_addr() ({ __label__ _l; _l: &&_l;})
13
14#include <linux/config.h>
15
16#include <asm/ptrace.h>
17#include <asm/types.h>
18#include <asm/mpc8xx.h>
19
20
21
22#ifdef CONFIG_PPC64BRIDGE
23#define MSR_SF (1<<63)
24#define MSR_ISF (1<<61)
25#endif
26#define MSR_VEC (1<<25)
27#define MSR_POW (1<<18)
28#define MSR_WE (1<<18)
29#define MSR_TGPR (1<<17)
30#define MSR_CE (1<<17)
31#define MSR_ILE (1<<16)
32#define MSR_EE (1<<15)
33#define MSR_PR (1<<14)
34#define MSR_FP (1<<13)
35#define MSR_ME (1<<12)
36#define MSR_FE0 (1<<11)
37#define MSR_SE (1<<10)
38#define MSR_DWE (1<<10)
39#define MSR_BE (1<<9)
40#define MSR_DE (1<<9)
41#define MSR_FE1 (1<<8)
42#define MSR_IP (1<<6)
43#define MSR_IR (1<<5)
44#define MSR_DR (1<<4)
45#define MSR_PE (1<<3)
46#define MSR_PX (1<<2)
47#define MSR_RI (1<<1)
48#define MSR_LE (1<<0)
49
50#ifdef CONFIG_APUS_FAST_EXCEPT
51#define MSR_ MSR_ME|MSR_IP|MSR_RI
52#else
53#define MSR_ MSR_ME|MSR_RI
54#endif
55#define MSR_KERNEL MSR_|MSR_IR|MSR_DR
56#define MSR_USER MSR_KERNEL|MSR_PR|MSR_EE
57
58
59
60#define FPSCR_FX 0x80000000
61#define FPSCR_FEX 0x40000000
62#define FPSCR_VX 0x20000000
63#define FPSCR_OX 0x10000000
64#define FPSCR_UX 0x08000000
65#define FPSCR_ZX 0x04000000
66#define FPSCR_XX 0x02000000
67#define FPSCR_VXSNAN 0x01000000
68#define FPSCR_VXISI 0x00800000
69#define FPSCR_VXIDI 0x00400000
70#define FPSCR_VXZDZ 0x00200000
71#define FPSCR_VXIMZ 0x00100000
72#define FPSCR_VXVC 0x00080000
73#define FPSCR_FR 0x00040000
74#define FPSCR_FI 0x00020000
75#define FPSCR_FPRF 0x0001f000
76#define FPSCR_FPCC 0x0000f000
77#define FPSCR_VXSOFT 0x00000400
78#define FPSCR_VXSQRT 0x00000200
79#define FPSCR_VXCVI 0x00000100
80#define FPSCR_VE 0x00000080
81#define FPSCR_OE 0x00000040
82#define FPSCR_UE 0x00000020
83#define FPSCR_ZE 0x00000010
84#define FPSCR_XE 0x00000008
85#define FPSCR_NI 0x00000004
86#define FPSCR_RN 0x00000003
87
88
89
90#define SPRN_CCR0 0x3B3
91#define SPRN_CDBCR 0x3D7
92#define SPRN_CTR 0x009
93#define SPRN_DABR 0x3F5
94#define SPRN_DAC1 0x3F6
95#define SPRN_DAC2 0x3F7
96#define SPRN_DAR 0x013
97#define SPRN_DBAT0L 0x219
98#define SPRN_DBAT0U 0x218
99#define SPRN_DBAT1L 0x21B
100#define SPRN_DBAT1U 0x21A
101#define SPRN_DBAT2L 0x21D
102#define SPRN_DBAT2U 0x21C
103#define SPRN_DBAT3L 0x21F
104#define SPRN_DBAT3U 0x21E
105#define SPRN_DBCR 0x3F2
106#define DBCR_EDM 0x80000000
107#define DBCR_IDM 0x40000000
108#define DBCR_RST(x) (((x) & 0x3) << 28)
109#define DBCR_RST_NONE 0
110#define DBCR_RST_CORE 1
111#define DBCR_RST_CHIP 2
112#define DBCR_RST_SYSTEM 3
113#define DBCR_IC 0x08000000
114#define DBCR_BT 0x04000000
115#define DBCR_EDE 0x02000000
116#define DBCR_TDE 0x01000000
117#define DBCR_FER 0x00F80000
118#define DBCR_FT 0x00040000
119#define DBCR_IA1 0x00020000
120#define DBCR_IA2 0x00010000
121#define DBCR_D1R 0x00008000
122#define DBCR_D1W 0x00004000
123#define DBCR_D1S(x) (((x) & 0x3) << 12)
124#define DAC_BYTE 0
125#define DAC_HALF 1
126#define DAC_WORD 2
127#define DAC_QUAD 3
128#define DBCR_D2R 0x00000800
129#define DBCR_D2W 0x00000400
130#define DBCR_D2S(x) (((x) & 0x3) << 8)
131#define DBCR_SBT 0x00000040
132#define DBCR_SED 0x00000020
133#define DBCR_STD 0x00000010
134#define DBCR_SIA 0x00000008
135#define DBCR_SDA 0x00000004
136#define DBCR_JOI 0x00000002
137#define DBCR_JII 0x00000001
138#define SPRN_DBCR0 0x3F2
139#define SPRN_DBCR1 0x3BD
140#define SPRN_DBSR 0x3F0
141#define DBSR_IC 0x80000000
142#define DBSR_TIE 0x10000000
143#define SPRN_DCCR 0x3FA
144#define DCCR_NOCACHE 0
145#define DCCR_CACHE 1
146#define SPRN_DCMP 0x3D1
147#define SPRN_DCWR 0x3BA
148#define DCWR_COPY 0
149#define DCWR_WRITE 1
150#define SPRN_DEAR 0x3D5
151#define SPRN_DEC 0x016
152#define SPRN_DER 0x095
153#define DER_RSTE 0x40000000
154#define DER_CHSTPE 0x20000000
155#define DER_MCIE 0x10000000
156#define DER_EXTIE 0x02000000
157#define DER_ALIE 0x01000000
158#define DER_PRIE 0x00800000
159#define DER_FPUVIE 0x00400000
160#define DER_DECIE 0x00200000
161#define DER_SYSIE 0x00040000
162#define DER_TRE 0x00020000
163#define DER_SEIE 0x00004000
164#define DER_ITLBMSE 0x00002000
165#define DER_ITLBERE 0x00001000
166#define DER_DTLBMSE 0x00000800
167#define DER_DTLBERE 0x00000400
168#define DER_LBRKE 0x00000008
169#define DER_IBRKE 0x00000004
170#define DER_EBRKE 0x00000002
171#define DER_DPIE 0x00000001
172#define SPRN_DMISS 0x3D0
173#define SPRN_DSISR 0x012
174#define SPRN_EAR 0x11A
175#define SPRN_ESR 0x3D4
176#define ESR_IMCP 0x80000000
177#define ESR_IMCN 0x40000000
178#define ESR_IMCB 0x20000000
179#define ESR_IMCT 0x10000000
180#define ESR_PIL 0x08000000
181#define ESR_PPR 0x04000000
182#define ESR_PTR 0x02000000
183#define ESR_DST 0x00800000
184#define ESR_DIZ 0x00400000
185#define SPRN_EVPR 0x3D6
186#define SPRN_HASH1 0x3D2
187#define SPRN_HASH2 0x3D3
188#define SPRN_HID0 0x3F0
189#define HID0_EMCP (1<<31)
190#define HID0_EBA (1<<29)
191#define HID0_EBD (1<<28)
192#define HID0_SBCLK (1<<27)
193#define HID0_EICE (1<<26)
194#define HID0_ECLK (1<<25)
195#define HID0_PAR (1<<24)
196#define HID0_DOZE (1<<23)
197#define HID0_NAP (1<<22)
198#define HID0_SLEEP (1<<21)
199#define HID0_DPM (1<<20)
200#define HID0_ICE (1<<15)
201#define HID0_DCE (1<<14)
202#define HID0_ILOCK (1<<13)
203#define HID0_DLOCK (1<<12)
204#define HID0_ICFI (1<<11)
205#define HID0_DCI (1<<10)
206#define HID0_SPD (1<<9)
207#define HID0_SGE (1<<7)
208#define HID0_SIED (1<<7)
209#define HID0_DFCA (1<<6)
210#define HID0_BTIC (1<<5)
211#define HID0_ABE (1<<3)
212#define HID0_FOLD (1<<3)
213#define HID0_BHTE (1<<2)
214#define HID0_BTCD (1<<1)
215#define HID0_NOPDST (1<<1)
216#define HID0_NOPTI (1<<0)
217#define SPRN_HID1 0x3F1
218#define SPRN_IABR 0x3F2
219#define SPRN_IAC1 0x3F4
220#define SPRN_IAC2 0x3F5
221#define SPRN_IBAT0L 0x211
222#define SPRN_IBAT0U 0x210
223#define SPRN_IBAT1L 0x213
224#define SPRN_IBAT1U 0x212
225#define SPRN_IBAT2L 0x215
226#define SPRN_IBAT2U 0x214
227#define SPRN_IBAT3L 0x217
228#define SPRN_IBAT3U 0x216
229#define SPRN_ICCR 0x3FB
230#define ICCR_NOCACHE 0
231#define ICCR_CACHE 1
232#define SPRN_ICDBDR 0x3D3
233#define SPRN_ICMP 0x3D5
234#define SPRN_ICTC 0x3FB
235#define SPRN_IMISS 0x3D4
236#define SPRN_IMMR 0x27E
237#define SPRN_L2CR 0x3F9
238#define L2CR_L2E 0x80000000
239#define L2CR_L2PE 0x40000000
240#define L2CR_L2SIZ_MASK 0x30000000
241#define L2CR_L2SIZ_256KB 0x10000000
242#define L2CR_L2SIZ_512KB 0x20000000
243#define L2CR_L2SIZ_1MB 0x30000000
244#define L2CR_L2CLK_MASK 0x0e000000
245#define L2CR_L2CLK_DISABLED 0x00000000
246#define L2CR_L2CLK_DIV1 0x02000000
247#define L2CR_L2CLK_DIV1_5 0x04000000
248#define L2CR_L2CLK_DIV2 0x08000000
249#define L2CR_L2CLK_DIV2_5 0x0a000000
250#define L2CR_L2CLK_DIV3 0x0c000000
251#define L2CR_L2RAM_MASK 0x01800000
252#define L2CR_L2RAM_FLOW 0x00000000
253#define L2CR_L2RAM_PIPE 0x01000000
254#define L2CR_L2RAM_PIPE_LW 0x01800000
255#define L2CR_L2DO 0x00400000
256#define L2CR_L2I 0x00200000
257#define L2CR_L2CTL 0x00100000
258#define L2CR_L2WT 0x00080000
259#define L2CR_L2TS 0x00040000
260#define L2CR_L2OH_MASK 0x00030000
261#define L2CR_L2OH_0_5 0x00000000
262#define L2CR_L2OH_1_0 0x00010000
263#define L2CR_L2SL 0x00008000
264#define L2CR_L2DF 0x00004000
265#define L2CR_L2BYP 0x00002000
266#define L2CR_L2IP 0x00000001
267#define SPRN_L2CR2 0x3f8
268#define SPRN_L3CR 0x3FA
269#define L3CR_L3E 0x80000000
270#define SPRN_MSSCR0 0x3f6
271#define SPRN_MSSSR0 0x3f7
272#define SPRN_ICTRL 0x3f3
273#define SPRN_LDSTCR 0x3f8
274#define SPRN_LDSTDB 0x3f4
275#define SPRN_LR 0x008
276#define SPRN_MMCR0 0x3B8
277#define SPRN_MMCR1 0x3BC
278#define SPRN_PBL1 0x3FC
279#define SPRN_PBL2 0x3FE
280#define SPRN_PBU1 0x3FD
281#define SPRN_PBU2 0x3FF
282#define SPRN_PID 0x3B1
283#define SPRN_PIR 0x3FF
284#define SPRN_PIT 0x3DB
285#define SPRN_PMC1 0x3B9
286#define SPRN_PMC2 0x3BA
287#define SPRN_PMC3 0x3BD
288#define SPRN_PMC4 0x3BE
289#define SPRN_PVR 0x11F
290#define SPRN_RPA 0x3D6
291#define SPRN_SDA 0x3BF
292#define SPRN_SDR1 0x019
293#define SPRN_SGR 0x3B9
294#define SGR_NORMAL 0
295#define SGR_GUARDED 1
296#define SPRN_SIA 0x3BB
297#define SPRN_SPRG0 0x110
298#define SPRN_SPRG1 0x111
299#define SPRN_SPRG2 0x112
300#define SPRN_SPRG3 0x113
301#define SPRN_SPRG4 0x114
302#define SPRN_SPRG5 0x115
303#define SPRN_SPRG6 0x116
304#define SPRN_SPRG7 0x117
305#define SPRN_SRR0 0x01A
306#define SPRN_SRR1 0x01B
307#define SPRN_SRR2 0x3DE
308#define SPRN_SRR3 0x3DF
309#define SPRN_TBRL 0x10C
310#define SPRN_TBRU 0x10D
311#define SPRN_TBWL 0x11C
312#define SPRN_TBWU 0x11D
313#define SPRN_TCR 0x3DA
314#define TCR_WP(x) (((x)&0x3)<<30)
315#define WP_2_17 0
316#define WP_2_21 1
317#define WP_2_25 2
318#define WP_2_29 3
319#define TCR_WRC(x) (((x)&0x3)<<28)
320#define WRC_NONE 0
321#define WRC_CORE 1
322#define WRC_CHIP 2
323#define WRC_SYSTEM 3
324#define TCR_WIE 0x08000000
325#define TCR_PIE 0x04000000
326#define TCR_FP(x) (((x)&0x3)<<24)
327#define FP_2_9 0
328#define FP_2_13 1
329#define FP_2_17 2
330#define FP_2_21 3
331#define TCR_FIE 0x00800000
332#define TCR_ARE 0x00400000
333#define SPRN_THRM1 0x3FC
334
335#define THRM1_TIN (1 << 31)
336#define THRM1_TIV (1 << 30)
337#define THRM1_THRES(x) ((x&0x7f)<<23)
338#define THRM3_SITV(x) ((x&0x3fff)<<1)
339#define THRM1_TID (1<<2)
340#define THRM1_TIE (1<<1)
341#define THRM1_V (1<<0)
342#define SPRN_THRM2 0x3FD
343#define SPRN_THRM3 0x3FE
344#define THRM3_E (1<<0)
345#define SPRN_TSR 0x3D8
346#define TSR_ENW 0x80000000
347#define TSR_WIS 0x40000000
348#define TSR_WRS(x) (((x)&0x3)<<28)
349#define WRS_NONE 0
350#define WRS_CORE 1
351#define WRS_CHIP 2
352#define WRS_SYSTEM 3
353#define TSR_PIS 0x08000000
354#define TSR_FIS 0x04000000
355#define SPRN_UMMCR0 0x3A8
356#define SPRN_UMMCR1 0x3AC
357#define SPRN_UPMC1 0x3A9
358#define SPRN_UPMC2 0x3AA
359#define SPRN_UPMC3 0x3AD
360#define SPRN_UPMC4 0x3AE
361#define SPRN_USIA 0x3AB
362#define SPRN_VRSAVE 0x100
363#define SPRN_XER 0x001
364#define SPRN_ZPR 0x3B0
365
366
367
368#define CTR SPRN_CTR
369#define DAR SPRN_DAR
370#define DABR SPRN_DABR
371#define DBAT0L SPRN_DBAT0L
372#define DBAT0U SPRN_DBAT0U
373#define DBAT1L SPRN_DBAT1L
374#define DBAT1U SPRN_DBAT1U
375#define DBAT2L SPRN_DBAT2L
376#define DBAT2U SPRN_DBAT2U
377#define DBAT3L SPRN_DBAT3L
378#define DBAT3U SPRN_DBAT3U
379#define DCMP SPRN_DCMP
380#define DEC SPRN_DEC
381#define DMISS SPRN_DMISS
382#define DSISR SPRN_DSISR
383#define EAR SPRN_EAR
384#define HASH1 SPRN_HASH1
385#define HASH2 SPRN_HASH2
386#define HID0 SPRN_HID0
387#define HID1 SPRN_HID1
388#define IABR SPRN_IABR
389#define IBAT0L SPRN_IBAT0L
390#define IBAT0U SPRN_IBAT0U
391#define IBAT1L SPRN_IBAT1L
392#define IBAT1U SPRN_IBAT1U
393#define IBAT2L SPRN_IBAT2L
394#define IBAT2U SPRN_IBAT2U
395#define IBAT3L SPRN_IBAT3L
396#define IBAT3U SPRN_IBAT3U
397#define ICMP SPRN_ICMP
398#define IMISS SPRN_IMISS
399#define IMMR SPRN_IMMR
400#define L2CR SPRN_L2CR
401#define LR SPRN_LR
402#define PVR SPRN_PVR
403#define RPA SPRN_RPA
404#define SDR1 SPRN_SDR1
405#define SPR0 SPRN_SPRG0
406#define SPR1 SPRN_SPRG1
407#define SPR2 SPRN_SPRG2
408#define SPR3 SPRN_SPRG3
409#define SPR4 SPRN_SPRG4
410#define SPR5 SPRN_SPRG5
411#define SPR6 SPRN_SPRG6
412#define SPR7 SPRN_SPRG7
413#define SPRG0 SPRN_SPRG0
414#define SPRG1 SPRN_SPRG1
415#define SPRG2 SPRN_SPRG2
416#define SPRG3 SPRN_SPRG3
417#define SPRG4 SPRN_SPRG4
418#define SPRG5 SPRN_SPRG5
419#define SPRG6 SPRN_SPRG6
420#define SPRG7 SPRN_SPRG7
421#define SRR0 SPRN_SRR0
422#define SRR1 SPRN_SRR1
423#define TBRL SPRN_TBRL
424#define TBRU SPRN_TBRU
425#define TBWL SPRN_TBWL
426#define TBWU SPRN_TBWU
427#define ICTC 1019
428#define THRM1 SPRN_THRM1
429#define THRM2 SPRN_THRM2
430#define THRM3 SPRN_THRM3
431#define XER SPRN_XER
432
433
434
435
436
437#define PVR_VER(pvr) (((pvr) >> 16) & 0xFFFF)
438#define PVR_REV(pvr) (((pvr) >> 0) & 0xFFFF)
439
440
441
442
443
444
445#define PVR_FAM(pvr) (((pvr) >> 20) & 0xFFF)
446#define PVR_MEM(pvr) (((pvr) >> 16) & 0xF)
447#define PVR_CORE(pvr) (((pvr) >> 12) & 0xF)
448#define PVR_CFG(pvr) (((pvr) >> 8) & 0xF)
449#define PVR_MAJ(pvr) (((pvr) >> 4) & 0xF)
450#define PVR_MIN(pvr) (((pvr) >> 0) & 0xF)
451
452
453
454#define PVR_403GA 0x00200000
455#define PVR_403GB 0x00200100
456#define PVR_403GC 0x00200200
457#define PVR_403GCX 0x00201400
458#define PVR_405GP 0x40110000
459#define PVR_STB03XXX 0x40310000
460#define PVR_601 0x00010000
461#define PVR_602 0x00050000
462#define PVR_603 0x00030000
463#define PVR_603e 0x00060000
464#define PVR_603ev 0x00070000
465#define PVR_603r 0x00071000
466#define PVR_604 0x00040000
467#define PVR_604e 0x00090000
468#define PVR_604r 0x000A0000
469#define PVR_620 0x00140000
470#define PVR_740 0x00080000
471#define PVR_750 PVR_740
472#define PVR_740P 0x10080000
473#define PVR_750P PVR_740P
474#define PVR_7400 0x000C0000
475#define PVR_7410 0x800C0000
476
477
478
479
480
481
482#define PVR_821 0x00500000
483#define PVR_823 PVR_821
484#define PVR_850 PVR_821
485#define PVR_860 PVR_821
486#define PVR_8240 0x00810100
487#define PVR_8260 PVR_8240
488
489
490
491
492
493#define _MACH_prep 0x00000001
494#define _MACH_Pmac 0x00000002
495#define _MACH_chrp 0x00000004
496
497
498#define _PREP_Motorola 0x01
499#define _PREP_Firm 0x02
500#define _PREP_IBM 0x00
501#define _PREP_Bull 0x03
502
503
504#define _CHRP_Motorola 0x04
505#define _CHRP_IBM 0x05
506
507#define _GLOBAL(n)\
508 .globl n;\
509n:
510
511
512
513#define stringify(s) tostring(s)
514#define tostring(s) #s
515
516#define mfdcr(rn) ({unsigned int rval; \
517 asm volatile("mfdcr %0," stringify(rn) \
518 : "=r" (rval)); rval;})
519#define mtdcr(rn, v) asm volatile("mtdcr " stringify(rn) ",%0" : : "r" (v))
520
521#define mfmsr() ({unsigned int rval; \
522 asm volatile("mfmsr %0" : "=r" (rval)); rval;})
523#define mtmsr(v) asm volatile("mtmsr %0" : : "r" (v))
524
525#define mfspr(rn) ({unsigned int rval; \
526 asm volatile("mfspr %0," stringify(rn) \
527 : "=r" (rval)); rval;})
528#define mtspr(rn, v) asm volatile("mtspr " stringify(rn) ",%0" : : "r" (v))
529
530
531
532#define SR0 0
533#define SR1 1
534#define SR2 2
535#define SR3 3
536#define SR4 4
537#define SR5 5
538#define SR6 6
539#define SR7 7
540#define SR8 8
541#define SR9 9
542#define SR10 10
543#define SR11 11
544#define SR12 12
545#define SR13 13
546#define SR14 14
547#define SR15 15
548
549#ifndef __ASSEMBLY__
550#if defined(CONFIG_ALL_PPC)
551extern int _machine;
552
553
554extern int _prep_type;
555
556
557
558
559
560extern unsigned char ucSystemType;
561extern unsigned char ucBoardRev;
562extern unsigned char ucBoardRevMaj, ucBoardRevMin;
563#else
564#define _machine 0
565#endif
566
567struct task_struct;
568void start_thread(struct pt_regs *regs, unsigned long nip, unsigned long sp);
569void release_thread(struct task_struct *);
570
571
572
573
574extern long kernel_thread(int (*fn)(void *), void *arg, unsigned long flags);
575
576
577
578
579#define EISA_bus 0
580#define EISA_bus__is_a_macro
581#define MCA_bus 0
582#define MCA_bus__is_a_macro
583
584
585extern struct task_struct *last_task_used_math;
586extern struct task_struct *last_task_used_altivec;
587
588
589
590
591
592
593
594#define TASK_SIZE (0x80000000UL)
595
596
597
598
599#define TASK_UNMAPPED_BASE (TASK_SIZE / 8 * 3)
600
601typedef struct {
602 unsigned long seg;
603} mm_segment_t;
604
605struct thread_struct {
606 unsigned long ksp;
607 unsigned long wchan;
608 struct pt_regs *regs;
609 mm_segment_t fs;
610 void *pgdir;
611 signed long last_syscall;
612 double fpr[32];
613 unsigned long fpscr_pad;
614 unsigned long fpscr;
615#ifdef CONFIG_ALTIVEC
616 vector128 vr[32];
617 vector128 vscr;
618 unsigned long vrsave;
619#endif
620};
621
622#define INIT_SP (sizeof(init_stack) + (unsigned long) &init_stack)
623
624#define INIT_THREAD { \
625 INIT_SP, \
626 0, \
627 0, \
628 KERNEL_DS, \
629 swapper_pg_dir, \
630 0, \
631 {0}, 0, 0 \
632}
633
634
635
636
637static inline unsigned long thread_saved_pc(struct thread_struct *t)
638{
639 return (t->regs) ? t->regs->nip : 0;
640}
641
642#define copy_segments(tsk, mm) do { } while (0)
643#define release_segments(mm) do { } while (0)
644
645unsigned long get_wchan(struct task_struct *p);
646
647#define KSTK_EIP(tsk) ((tsk)->thread.regs? (tsk)->thread.regs->nip: 0)
648#define KSTK_ESP(tsk) ((tsk)->thread.regs? (tsk)->thread.regs->gpr[1]: 0)
649
650
651
652
653#define THREAD_SIZE (2*PAGE_SIZE)
654#define alloc_task_struct() \
655 ((struct task_struct *) __get_free_pages(GFP_KERNEL,1))
656#define free_task_struct(p) free_pages((unsigned long)(p),1)
657#define get_task_struct(tsk) atomic_inc(&virt_to_page(tsk)->count)
658
659
660int ll_printk(const char *, ...);
661void ll_puts(const char *);
662
663#define init_task (init_task_union.task)
664#define init_stack (init_task_union.stack)
665
666
667void _nmask_and_or_msr(unsigned long nmask, unsigned long or_val);
668
669#define cpu_relax() do { } while (0)
670
671
672
673
674#define ARCH_HAS_PREFETCH
675#define ARCH_HAS_PREFETCHW
676#define ARCH_HAS_SPINLOCK_PREFETCH
677
678extern inline void prefetch(const void *x)
679{
680 __asm__ __volatile__ ("dcbt 0,%0" : : "r" (x));
681}
682
683extern inline void prefetchw(const void *x)
684{
685 __asm__ __volatile__ ("dcbtst 0,%0" : : "r" (x));
686}
687
688#define spin_lock_prefetch(x) prefetchw(x)
689
690#endif
691
692#define have_of (_machine == _MACH_chrp || _machine == _MACH_Pmac)
693
694#endif
695#endif
696