]> git.saurik.com Git - apple/xnu.git/blame - osfmk/ppc/asm.h
xnu-792.25.20.tar.gz
[apple/xnu.git] / osfmk / ppc / asm.h
CommitLineData
1c79356b 1/*
3a60a9f5 2 * Copyright (c) 2000-2005 Apple Computer, Inc. All rights reserved.
1c79356b 3 *
6601e61a 4 * @APPLE_LICENSE_HEADER_START@
1c79356b 5 *
6601e61a
A
6 * The contents of this file constitute Original Code as defined in and
7 * are subject to the Apple Public Source License Version 1.1 (the
8 * "License"). You may not use this file except in compliance with the
9 * License. Please obtain a copy of the License at
10 * http://www.apple.com/publicsource and read it before using this file.
8f6c56a5 11 *
6601e61a
A
12 * This Original Code and all software distributed under the License are
13 * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
8f6c56a5
A
14 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
15 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
6601e61a
A
16 * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
17 * License for the specific language governing rights and limitations
18 * under the License.
8f6c56a5 19 *
6601e61a 20 * @APPLE_LICENSE_HEADER_END@
1c79356b
A
21 */
22/*
23 * @OSF_COPYRIGHT@
24 */
25#ifndef _PPC_ASM_H_
26#define _PPC_ASM_H_
27
28#define __ASMNL__ @
29#define STRINGD .ascii
30
31#ifdef ASSEMBLER
32
33
34#define br0 0
35
36#define ARG0 r3
37#define ARG1 r4
38#define ARG2 r5
39#define ARG3 r6
40#define ARG4 r7
41#define ARG5 r8
42#define ARG6 r9
43#define ARG7 r10
44
45#define tmp0 r0 /* Temporary GPR remapping (603e specific) */
46#define tmp1 r1
47#define tmp2 r2
48#define tmp3 r3
49
50/* SPR registers */
51
52#define mq 0 /* MQ register for 601 emulation */
53#define rtcu 4 /* RTCU - upper word of RTC for 601 emulation */
54#define rtcl 5 /* RTCL - lower word of RTC for 601 emulation */
55#define dsisr 18
56#define ppcDAR 19
57#define ppcdar 19
58#define dar 19
59#define SDR1 25
60#define sdr1 25
61#define srr0 26
62#define srr1 27
63#define vrsave 256 /* Vector Register save */
64#define sprg0 272
65#define sprg1 273
66#define sprg2 274
67#define sprg3 275
55e303ae
A
68#define scomc 276
69#define scomd 277
1c79356b
A
70#define pvr 287
71
72#define IBAT0U 528
73#define IBAT0L 529
74#define IBAT1U 530
75#define IBAT1L 531
76#define IBAT2U 532
77#define IBAT2L 533
78#define IBAT3U 534
79#define IBAT3L 535
80#define ibat0u 528
81#define ibat0l 529
82#define ibat1u 530
83#define ibat1l 531
84#define ibat2u 532
85#define ibat2l 533
86#define ibat3u 534
87#define ibat3l 535
88
89#define DBAT0U 536
90#define DBAT0L 537
91#define DBAT1U 538
92#define DBAT1L 539
93#define DBAT2U 540
94#define DBAT2L 541
95#define DBAT3U 542
96#define DBAT3L 543
97#define dbat0u 536
98#define dbat0l 537
99#define dbat1u 538
100#define dbat1l 539
101#define dbat2u 540
102#define dbat2l 541
103#define dbat3u 542
104#define dbat3l 543
105
106#define ummcr2 928 /* Performance monitor control */
55e303ae
A
107#define upmc5 929 /* Performance monitor counter */
108#define upmc6 930 /* Performance monitor counter */
1c79356b
A
109#define ubamr 935 /* Performance monitor mask */
110#define ummcr0 936 /* Performance monitor control */
111#define upmc1 937 /* Performance monitor counter */
112#define upmc2 938 /* Performance monitor counter */
113#define usia 939 /* User sampled instruction address */
114#define ummcr1 940 /* Performance monitor control */
115#define upmc3 941 /* Performance monitor counter */
116#define upmc4 942 /* Performance monitor counter */
117#define usda 943 /* User sampled data address */
118#define mmcr2 944 /* Performance monitor control */
55e303ae
A
119#define pmc5 945 /* Performance monitor counter */
120#define pmc6 946 /* Performance monitor counter */
1c79356b
A
121#define bamr 951 /* Performance monitor mask */
122#define mmcr0 952
123#define pmc1 953
124#define pmc2 954
125#define sia 955
126#define mmcr1 956
127#define pmc3 957
128#define pmc4 958
129#define sda 959 /* Sampled data address */
130#define dmiss 976 /* ea that missed */
55e303ae 131#define trig0 976
1c79356b 132#define dcmp 977 /* compare value for the va that missed */
55e303ae 133#define trig1 977
1c79356b 134#define hash1 978 /* pointer to first hash pteg */
55e303ae 135#define trig2 978
1c79356b
A
136#define hash2 979 /* pointer to second hash pteg */
137#define imiss 980 /* ea that missed */
138#define tlbmiss 980 /* ea that missed */
139#define icmp 981 /* compare value for the va that missed */
140#define ptehi 981 /* compare value for the va that missed */
141#define rpa 982 /* required physical address register */
142#define ptelo 982 /* required physical address register */
143#define l3pdet 984 /* l3pdet */
144
145#define HID0 1008 /* Checkstop and misc enables */
146#define hid0 1008 /* Checkstop and misc enables */
147#define HID1 1009 /* Clock configuration */
148#define hid1 1009 /* Clock configuration */
d12e1678
A
149#define HID2 1016 /* Other processor controls */
150#define hid2 1016 /* Other processor controls */
1c79356b
A
151#define iabr 1010 /* Instruction address breakpoint register */
152#define ictrl 1011 /* Instruction Cache Control */
0b4e3aa0 153#define ldstdb 1012 /* Load/Store Debug */
55e303ae 154#define hid4 1012 /* Misc stuff */
1c79356b
A
155#define dabr 1013 /* Data address breakpoint register */
156#define msscr0 1014 /* Memory subsystem control */
55e303ae 157#define hid5 1014 /* Misc stuff */
1c79356b
A
158#define msscr1 1015 /* Memory subsystem debug */
159#define msssr0 1015 /* Memory Subsystem Status */
160#define ldstcr 1016 /* Load/Store Status/Control */
161#define l2cr2 1016 /* L2 Cache control 2 */
162#define l2cr 1017 /* L2 Cache control */
163#define l3cr 1018 /* L3 Cache control */
164#define ictc 1019 /* I-cache throttling control */
165#define thrm1 1020 /* Thermal management 1 */
166#define thrm2 1021 /* Thermal management 2 */
167#define thrm3 1022 /* Thermal management 3 */
168#define pir 1023 /* Processor ID Register */
169
55e303ae
A
170
171/* SPR registers (64-bit, PPC970 specific) */
172
173#define scomc_gp 276
174#define scomd_gp 277
175
176#define hsprg0 304
177#define hsprg1 305
178#define hdec 310
179#define hior 311
180#define rmor 312
181#define hrmor 313
182#define hsrr0 314
183#define hsrr1 315
184#define lpcr 318
185#define lpidr 319
186
187#define ummcra_gp 770
188#define upmc1_gp 771
189#define upmc2_gp 772
190#define upmc3_gp 773
191#define upmc4_gp 774
192#define upmc5_gp 775
193#define upmc6_gp 776
194#define upmc7_gp 777
195#define upmc8_gp 778
196#define ummcr0_gp 779
197#define usiar_gp 780
198#define usdar_gp 781
199#define ummcr1_gp 782
200#define uimc_gp 783
201
202#define mmcra_gp 786
203#define pmc1_gp 787
204#define pmc2_gp 788
205#define pmc3_gp 789
206#define pmc4_gp 790
207#define pmc5_gp 791
208#define pmc6_gp 792
209#define pmc7_gp 793
210#define pmc8_gp 794
211#define mmcr0_gp 795
212#define siar_gp 796
213#define sdar_gp 797
214#define mmcr1_gp 798
215#define imc_gp 799
216
217#define trig0_gp 976
218#define trig1_gp 977
219#define trig2_gp 978
220
221#define dabrx 1015
222
1c79356b
A
223; hid0 bits
224#define emcp 0
225#define emcpm 0x80000000
226#define dbp 1
227#define dbpm 0x40000000
228#define eba 2
229#define ebam 0x20000000
230#define ebd 3
231#define ebdm 0x10000000
232#define sbclk 4
233#define sbclkm 0x08000000
234#define eclk 6
235#define eclkm 0x02000000
236#define par 7
237#define parm 0x01000000
238#define sten 7
239#define stenm 0x01000000
483a1d10
A
240#define dnap 7
241#define dnapm 0x01000000
1c79356b
A
242#define doze 8
243#define dozem 0x00800000
244#define nap 9
245#define napm 0x00400000
246#define sleep 10
247#define sleepm 0x00200000
248#define dpm 11
249#define dpmm 0x00100000
250#define riseg 12
251#define risegm 0x00080000
252#define eiec 13
253#define eiecm 0x00040000
d52fe63f
A
254#define mum 14
255#define mumm 0x00020000
1c79356b
A
256#define nhr 15
257#define nhrm 0x00010000
258#define ice 16
259#define icem 0x00008000
260#define dce 17
261#define dcem 0x00004000
262#define ilock 18
263#define ilockm 0x00002000
264#define dlock 19
265#define dlockm 0x00001000
55e303ae 266#define exttben 19
1c79356b
A
267#define icfi 20
268#define icfim 0x00000800
269#define dcfi 21
270#define dcfim 0x00000400
271#define spd 22
272#define spdm 0x00000200
a3d08fcd
A
273#define hdice 23
274#define hdicem 0x00000100
1c79356b
A
275#define sge 24
276#define sgem 0x00000080
277#define dcfa 25
278#define dcfam 0x00000040
279#define btic 26
280#define bticm 0x00000020
281#define lrstk 27
282#define lrstkm 0x00000010
283#define abe 28
284#define abem 0x00000008
285#define fold 28
286#define foldm 0x00000008
287#define bht 29
288#define bhtm 0x00000004
289#define nopdst 30
290#define nopdstm 0x00000002
291#define nopti 31
292#define noptim 0x00000001
293
d52fe63f
A
294; hid1 bits
295#define hid1pcem 0xF8000000
296#define hid1prem 0x06000000
e5568f75
A
297#define hid1dfs0 8
298#define hid1dfs0m 0x00800000
299#define hid1dfs1 9
300#define hid1dfs1m 0x00400000
d52fe63f
A
301#define hid1pi0 14
302#define hid1pi0m 0x00020000
55e303ae 303#define hid1FCPErr 14
d52fe63f 304#define hid1ps 15
55e303ae 305#define hid1FCD0PErr 15
d52fe63f
A
306#define hid1psm 0x00010000
307#define hid1pc0 0x0000F800
308#define hid1pr0 0x00000600
309#define hid1pc1 0x000000F8
310#define hid1pc0 0x0000F800
311#define hid1pr1 0x00000006
55e303ae
A
312#define hid1FCD1PErr 16
313#define hid1FIERATErr 17
d12e1678
A
314
315; hid2 bits
316#define hid2vmin 18
317#define hid2vminm 0x00002000
318
1c79356b
A
319; msscr0 bits
320#define shden 0
321#define shdenm 0x80000000
322#define shden3 1
323#define shdenm3 0x40000000
324#define l1intvs 2
325#define l1intve 4
326#define l1intvb 0x38000000
327#define l2intvs 5
328#define l2intve 7
329#define l2intvb 0x07000000
330#define dl1hwf 8
331#define dl1hwfm 0x00800000
332#define dbsiz 9
333#define dbsizm 0x00400000
334#define emode 10
335#define emodem 0x00200000
336#define abgd 11
337#define abgdm 0x00100000
338#define tfsts 24
339#define tfste 25
340#define tfstm 0x000000C0
0b4e3aa0
A
341#define l2pfes 30
342#define l2pfee 31
343#define l2pfem 0x00000003
1c79356b
A
344
345; msscr1 bits
346#define cqd 15
347#define cqdm 0x00010000
348#define csqs 1
349#define csqe 2
350#define csqm 0x60000000
351
352; msssr1 bits - 7450
353#define vgL2PARA 0
354#define vgL3PARA 1
355#define vgL2COQEL 2
356#define vgL3COQEL 3
357#define vgL2CTR 4
358#define vgL3CTR 5
359#define vgL2COQR 6
360#define vgL3COQR 7
361#define vgLMQ 8
362#define vgSMC 9
363#define vgSNP 10
364#define vgBIU 11
365#define vgSMCE 12
366#define vgL2TAG 13
367#define vgL2DAT 14
368#define vgL3TAG 15
369#define vgL3DAT 16
370#define vgAPE 17
371#define vgDPE 18
372#define vgTEA 19
373
374; srr1 bits
375#define icmck 1
376#define icmckm 0x40000000
377#define dcmck 2
378#define dcmckm 0x20000000
379#define l2mck 3
380#define l2mckm 0x10000000
381#define tlbmck 4
382#define tlbmckm 0x08000000
383#define brmck 5
384#define brmckm 0x04000000
385#define othmck 10
386#define othmckm 0x00200000
387#define l2dpmck 11
388#define l2dpmckm 0x00100000
389#define mcpmck 12
390#define mcpmckm 0x00080000
391#define teamck 13
392#define teamckm 0x00040000
393#define dpmck 14
394#define dpmckm 0x00020000
395#define apmck 15
396#define apmckm 0x00010000
397
55e303ae
A
398#define mckIFUE 42
399#define mckLDST 43
400#define mckXCs 44
401#define mckXCe 45
402#define mckNoErr 0
403#define mckIFSLBPE 1
404#define mckIFTLBPE 2
405#define mckIFTLBUE 3
406
407; dsisr bits
408#define mckUEdfr 16
409#define mckUETwDfr 17
410#define mckL1DCPE 18
411#define mckL1DTPE 19
412#define mckDEPE 20
413#define mckTLBPE 21
414#define mckSLBPE 23
415
416; Async MCK source
417#define AsyMCKSrc 0x0226
418#define AsyMCKRSrc 0x0227
419#define AsyMCKext 0
420#define AsyMCKfir 1
421#define AsyMCKhri 2
422#define AsyMCKdbg 3
423#define AsyMCKncstp 4
424
425; Core FIR
426#define cFIR 0x0300
427#define cFIRrst 0x0310
428#define cFIRICachePE 0
429#define cFIRITagPE0 1
430#define cFIRITagPE1 2
431#define cFIRIEratPE 3
432#define cFIRIFUL2UE 4
433#define cFIRIFUCS 5
434#define cFIRDCachePE 6
435#define cFIRDTagPE 7
436#define cFIRDEratPE 8
437#define cFIRTLBPE 9
438#define cFIRSLBPE 10
439#define cFIRSL2UE 11
440
441; Core Error Inject
442#define CoreErrI 0x0350
443#define CoreIFU 0
444#define CoreLSU 1
445#define CoreRate0 2
446#define CoreRate1 3
447#define CoreOnce 0
448#define CoreSolid 2
449#define CorePulse 3
450
e5568f75
A
451; L2 FIR
452#define l2FIR 0x0400
453#define l2FIRrst 0x0410
454
455; Bus FIR
456#define busFIR 0x0A00
457#define busFIRrst 0x0A10
458
55e303ae
A
459; HID4
460#define hid4RMCI 23
461#define hid4FAlgn 24
462#define hid4DisPF 25
463#define hid4ResPF 26
464#define hid4EnSPTW 27
465#define hid4L1DCFI 28
466#define hid4DisDERpg 31
467#define hid4DisDCTpg 36
468#define hid4DisDCpg 41
469#define hid4DisTLBpg 48
470#define hid4DisSLBpg 54
471#define hid4MckEIEna 55
472
1c79356b
A
473; L2 cache control
474#define l2e 0
475#define l2em 0x80000000
476#define l2pe 1
477#define l2pem 0x40000000
478#define l2siz 2
479#define l2sizf 3
480#define l2sizm 0x30000000
481#define l2clk 4
482#define l2clkf 6
483#define l2clkm 0x0E000000
484#define l2ram 7
485#define l2ramf 8
486#define l2ramm 0x01800000
487#define l2do 9
488#define l2dom 0x00400000
489#define l2i 10
490#define l2im 0x00200000
491#define l2ctl 11
492#define l2ctlm 0x00100000
493#define l2ionly 11
494#define l2ionlym 0x00100000
495#define l2wt 12
496#define l2wtm 0x00080000
497#define l2ts 13
498#define l2tsm 0x00040000
499#define l2oh 14
500#define l2ohf 15
501#define l2ohm 0x00030000
502#define l2donly 15
503#define l2donlym 0x00010000
504#define l2sl 16
505#define l2slm 0x00008000
506#define l2df 17
507#define l2dfm 0x00004000
508#define l2byp 18
509#define l2bypm 0x00002000
510#define l2fa 19
511#define l2fam 0x00001000
512#define l2hwf 20
513#define l2hwfm 0x00000800
514#define l2io 21
515#define l2iom 0x00000400
516#define l2clkstp 22
517#define l2clkstpm 0x00000200
518#define l2dro 23
519#define l2drom 0x00000100
520#define l2ctr 24
521#define l2ctrf 30
522#define l2ctrm 0x000000FE
523#define l2ip 31
524#define l2ipm 0x00000001
525
526; L3 cache control
527#define l3e 0
528#define l3em 0x80000000
529#define l3pe 1
530#define l3pem 0x40000000
531#define l3siz 3
532#define l3sizm 0x10000000
533#define l3clken 4
534#define l3clkenm 0x08000000
535#define l3dx 5
536#define l3dxm 0x04000000
537#define l3clk 6
538#define l3clkf 8
539#define l3clkm 0x03800000
540#define l3io 9
541#define l3iom 0x00400000
542#define l3spo 13
543#define l3spom 0x00040000
544#define l3cksp 14
545#define l3ckspf 15
546#define l3ckspm 0x00030000
547#define l3psp 16
548#define l3pspf 18
549#define l3pspm 0x0000E000
550#define l3rep 19
551#define l3repm 0x00001000
552#define l3hwf 20
553#define l3hwfm 0x00000800
554#define l3i 21
555#define l3im 0x00000400
556#define l3rt 22
557#define l3rtf 23
558#define l3rtm 0x00000300
559#define l3dro 23
560#define l3drom 0x00000100
561#define l3cya 24
562#define l3cyam 0x00000080
563#define l3donly 25
564#define l3donlym 0x00000040
565#define l3dmem 29
566#define l3dmemm 0x00000004
567#define l3dmsiz 31
568#define l3dmsizm 0x00000001
569
570#define thrmtin 0
571#define thrmtinm 0x80000000
572#define thrmtiv 1
573#define thrmtivm 0x40000000
574#define thrmthrs 2
575#define thrmthre 8
576#define thrmthrm 0x3F800000
577#define thrmtid 29
578#define thrmtidm 0x00000004
579#define thrmtie 30
580#define thrmtiem 0x00000002
581#define thrmv 31
582#define thrmvm 0x00000001
583
584#define thrmsitvs 15
585#define thrmsitve 30
586#define thrmsitvm 0x0001FFFE
587#define thrme 31
588#define thrmem 0x00000001
589
590#define ictcfib 23
591#define ictcfie 30
592#define ictcfim 0x000001FE
593#define ictce 31
594#define ictcem 0x00000001
595
596#define cr0_lt 0
597#define cr0_gt 1
598#define cr0_eq 2
599#define cr0_so 3
600#define cr0_un 3
601#define cr1_lt 4
602#define cr1_gt 5
603#define cr1_eq 6
604#define cr1_so 7
605#define cr1_un 7
606#define cr2_lt 8
607#define cr2_gt 9
608#define cr2_eq 10
609#define cr2_so 11
610#define cr2_un 11
611#define cr3_lt 12
612#define cr3_gt 13
613#define cr3_eq 14
614#define cr3_so 15
615#define cr3_un 15
616#define cr4_lt 16
617#define cr4_gt 17
618#define cr4_eq 18
619#define cr4_so 19
620#define cr4_un 19
621#define cr5_lt 20
622#define cr5_gt 21
623#define cr5_eq 22
624#define cr5_so 23
625#define cr5_un 23
626#define cr6_lt 24
627#define cr6_gt 25
628#define cr6_eq 26
629#define cr6_so 27
630#define cr6_un 27
631#define cr7_lt 28
632#define cr7_gt 29
633#define cr7_eq 30
634#define cr7_so 31
635#define cr7_un 31
636
55e303ae
A
637#define slbESID 36
638#define slbKey 52
639#define slbIndex 52
640#define slbV 36
641#define slbVm 0x08000000
642#define slbCnt 64
643
1c79356b
A
644/*
645 * Macros to access high and low word values of an address
646 */
647
648#define HIGH_CADDR(x) ha16(x)
649#define HIGH_ADDR(x) hi16(x)
650#define LOW_ADDR(x) lo16(x)
651
652#endif /* ASSEMBLER */
653
91447636
A
654/* GUS Mode Register */
655#define GUSModeReg 0x0430
656#define GUSMdmapen 0x00008000
657#define GUSMstgtdis 0x00000080
658#define GUSMstgttim 0x00000038
659#define GUSMstgttoff 0x00000004
660
3a60a9f5
A
661/* PowerTune */
662#define PowerTuneControlReg 0x0AA001
663#define PowerTuneStatusReg 0x408001
664
1c79356b
A
665/* Tags are placed before Immediately Following Code (IFC) for the debugger
666 * to be able to deduce where to find various registers when backtracing
667 *
668 * We only define the values as we use them, see SVR4 ABI PowerPc Supplement
669 * for more details (defined in ELF spec).
670 */
671
672#define TAG_NO_FRAME_USED 0x00000000
673
674/* (should use genassym to get these offsets) */
675
676#define FM_BACKPTR 0
677#define FM_CR_SAVE 4
678#define FM_LR_SAVE 8 /* MacOSX is NOT following the ABI at the moment.. */
679#define FM_SIZE 64 /* minimum frame contents, backptr and LR save. Make sure it is quadaligned */
680#define FM_ARG0 56
681#define FM_ALIGN(l) ((l+15)&-16)
682#define PK_SYSCALL_BEGIN 0x7000
683
684
685/* redzone is the area under the stack pointer which must be preserved
686 * when taking a trap, interrupt etc.
687 */
688#define FM_REDZONE 224 /* is ((32-14+1)*4) */
689
690#define COPYIN_ARG0_OFFSET FM_ARG0
691
692#ifdef MACH_KERNEL
693#include <mach_kdb.h>
694#else /* MACH_KERNEL */
695#define MACH_KDB 0
696#endif /* MACH_KERNEL */
697
698#define BREAKPOINT_TRAP tw 4,r4,r4
699
700/* There is another definition of ALIGN for .c sources */
701#ifndef __LANGUAGE_ASSEMBLY
702#define ALIGN 4
703#endif /* __LANGUAGE_ASSEMBLY */
704
705#ifndef FALIGN
706#define FALIGN 4 /* Align functions on words for now. Cachelines is better */
707#endif
708
709#define LB(x,n) n
710#if __STDC__
711#define LCL(x) L ## x
712#define EXT(x) _ ## x
713#define LEXT(x) _ ## x ## :
714#define LBc(x,n) n ## :
715#define LBb(x,n) n ## b
716#define LBf(x,n) n ## f
717#else /* __STDC__ */
718#define LCL(x) L/**/x
719#define EXT(x) _/**/x
720#define LEXT(x) _/**/x/**/:
721#define LBc(x,n) n/**/:
722#define LBb(x,n) n/**/b
723#define LBf(x,n) n/**/f
724#endif /* __STDC__ */
725
726#define String .asciz
727#define Value .word
728#define Times(a,b) (a*b)
729#define Divide(a,b) (a/b)
730
731#define data16 .byte 0x66
732#define addr16 .byte 0x67
733
1c79356b 734#define MCOUNT
1c79356b
A
735
736#define ELF_FUNC(x)
737#define ELF_DATA(x)
738#define ELF_SIZE(x,s)
739
740#define Entry(x,tag) .text@.align FALIGN@ .globl EXT(x)@ LEXT(x)
741#define ENTRY(x,tag) Entry(x,tag)@MCOUNT
742#define ENTRY2(x,y,tag) .text@ .align FALIGN@ .globl EXT(x)@ .globl EXT(y)@ \
743 LEXT(x)@ LEXT(y) @\
744 MCOUNT
745#if __STDC__
746#define ASENTRY(x) .globl x @ .align FALIGN; x ## @ MCOUNT
747#else
748#define ASENTRY(x) .globl x @ .align FALIGN; x @ MCOUNT
749#endif /* __STDC__ */
750#define DATA(x) .globl EXT(x) @ .align ALIGN @ LEXT(x)
751
752
753#define End(x) ELF_SIZE(x,.-x)
754#define END(x) End(EXT(x))
755#define ENDDATA(x) END(x)
756#define Enddata(x) End(x)
757
758/* These defines are here for .c files that wish to reference global symbols
759 * within __asm__ statements.
760 */
761#define CC_SYM_PREFIX "_"
762
763#endif /* _PPC_ASM_H_ */