Chameleon

Chameleon Svn Source Tree

Root/branches/rewrite/i386/include/architecture/ppc/reg_help.h

Source at commit 1146 created 12 years 11 months ago.
By azimutz, Sync with trunk (r1145). Add nVidia dev id's, 0DF4 for "GeForce GT 450M" (issue 99) and 1251 for "GeForce GTX 560M" (thanks to oSxFr33k for testing).
1/*
2 * Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
3 *
4 * @APPLE_LICENSE_HEADER_START@
5 *
6 * This file contains Original Code and/or Modifications of Original Code
7 * as defined in and that are subject to the Apple Public Source License
8 * Version 2.0 (the 'License'). You may not use this file except in
9 * compliance with the License. Please obtain a copy of the License at
10 * http://www.opensource.apple.com/apsl/ and read it before using this
11 * file.
12 *
13 * The Original Code and all software distributed under the License are
14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
18 * Please see the License for the specific language governing rights and
19 * limitations under the License.
20 *
21 * @APPLE_LICENSE_HEADER_END@
22 */
23/* Copyright (c) 1996 NeXT Software, Inc. All rights reserved.
24 *
25 *File:architecture/ppc/reg_help.h
26 *Author:Doug Mitchell, NeXT Computer, Inc.
27 *
28 *m98k-specific macros and inlines for defining machine registers.
29 *
30 * HISTORY
31 * 05-Nov-92 Doug Mitchell at NeXT
32 *Created.
33 *
34 * 29-Dec-96 Umesh Vaishampayan (umeshv@NeXT.com)
35 *Ported from m98k. Removed dependency on nrw directory.
36 *Merged code from architecture/nrw/reg_help.h.
37 *Moved Register Usage #defines from asm_help.h in here.
38 */
39
40#ifndef _ARCH_PPC_REG_HELP_H_
41#define _ARCH_PPC_REG_HELP_H_
42
43#if defined(__ASSEMBLER__)
44/*
45 * GRF Register Usage Aliases
46 */
47#defineztr0// architecturally 0 for mem refs only!
48// real reg other inst, caller-saved
49#definespr1// stack pointer, callee-saved
50#definetocr2// tbl of contents, callee-saved
51#definea0r3// arg 0, return value 0, caller saved
52#definea1r4// arg 1, return value 1, caller saved
53#definea2r5// ....
54#definea3r6
55#definea4r7
56#definea5r8
57#definea6r9
58#definea7r10// arg 7, return value 7, caller saved
59#defineepr11// environment ptr, caller saved
60#defineatr12// assembler temp, caller saved
61#defines17r13// callee-saved 17
62#defines16r14
63#defines15r15
64#defines14r16
65#defines13r17
66#defines12r18
67#defines11r19
68#defines10r20
69#defines9r21
70#defines8r22
71#defines7r23
72#defines6r24
73#defines5r25
74#defines4r26
75#defines3r27
76#defines2r28
77#defines1r29// ....
78#defines0r30// callee-saved 0
79#definefpr31// frame-pointer, callee-saved
80
81/*
82 * Conversion of GRF aliases to register numbers
83 */
84#defineGRF_ZT0// architecturally 0 for mem refs only!
85// real reg other inst, caller-saved
86#defineGRF_SP1// stack pointer, callee-saved
87#defineGRF_TOC2// tbl of contents, callee-saved
88#defineGRF_A03// arg 0, return value 0, caller saved
89#defineGRF_A14// arg 1, return value 1, caller saved
90#defineGRF_A25// ....
91#defineGRF_A36
92#defineGRF_A47
93#defineGRF_A58
94#defineGRF_A69
95#defineGRF_A710// arg 7, return value 7, caller saved
96#defineGRF_EP11// environment ptr, caller saved
97#defineGRF_AT12// assembler temp, caller saved
98#defineGRF_S1713// callee-saved 17
99#defineGRF_S1614
100#defineGRF_S1515
101#defineGRF_S1416
102#defineGRF_S1317
103#defineGRF_S1218
104#defineGRF_S1119
105#defineGRF_S1020
106#defineGRF_S921
107#defineGRF_S822
108#defineGRF_S723
109#defineGRF_S624
110#defineGRF_S525
111#defineGRF_S426
112#defineGRF_S327
113#defineGRF_S228
114#defineGRF_S129// ....
115#defineGRF_S030// callee-saved 0
116#defineGRF_FP31// frame pointer, callee-saved
117
118/*
119 * FPF Register names
120 */
121#defineft0f0// scratch reg, caller-saved
122#definefa0f1// fp arg 0, return 0, caller-saved
123#definefa1f2// fp arg 1, caller-saved
124#definefa2f3// fp arg 2, caller-saved
125#definefa3f4
126#definefa4f5
127#definefa5f6
128#definefa6f7
129#definefa7f8
130#definefa8f9
131#definefa9f10
132#definefa10f11
133#definefa11f12
134#definefa12f13// fp arg 12, caller-saved
135#definefs17f14// callee-saved 17
136#definefs16f15
137#definefs15f16
138#definefs14f17
139#definefs13f18
140#definefs12f19
141#definefs11f20
142#definefs10f21
143#definefs9f22
144#definefs8f23
145#definefs7f24
146#definefs6f25
147#definefs5f26
148#definefs4f27
149#definefs3f28
150#definefs2f29
151#definefs1f30
152#definefs0f31// callee-saved 0
153
154/*
155 * Conversion of FPF aliases to register numbers
156 */
157#defineFPF_FT00// scratch reg, caller-saved
158#defineFPF_FA01// fp arg 0, return 0, caller-saved
159#defineFPF_FA12// fp arg 1, caller-saved
160#defineFPF_FA23// fp arg 2, caller-saved
161#defineFPF_FA34
162#defineFPF_FA45
163#defineFPF_FA56
164#defineFPF_FA67
165#defineFPF_FA78
166#defineFPF_FA89
167#defineFPF_FA910
168#defineFPF_FA1011
169#defineFPF_FA1112
170#defineFPF_FA1213// fp arg 12, caller-saved
171#defineFPF_FS1714// callee-saved 17
172#defineFPF_FS1615
173#defineFPF_FS1516
174#defineFPF_FS1417
175#defineFPF_FS1318
176#defineFPF_FS1219
177#defineFPF_FS1120
178#defineFPF_FS1021
179#defineFPF_FS922
180#defineFPF_FS823
181#defineFPF_FS724
182#defineFPF_FS625
183#defineFPF_FS526
184#defineFPF_FS427
185#defineFPF_FS328
186#defineFPF_FS229
187#defineFPF_FS130
188#defineFPF_FS031// callee-saved 0
189
190#endif/* __ASSEMBLER__ */
191
192
193/* Bitfield definition aid */
194#defineBITS_WIDTH(msb, lsb)((msb)-(lsb)+1)
195#defineBIT_WIDTH(pos)(1)/* mostly to record the position */
196
197/* Mask creation */
198#defineMKMASK(width, offset)(((unsigned)-1)>>(32-(width))<<(offset))
199#defineBITSMASK(msb, lsb)MKMASK(BITS_WIDTH(msb, lsb), lsb & 0x1f)
200#defineBITMASK(pos)MKMASK(BIT_WIDTH(pos), pos & 0x1f)
201
202/* Register addresses */
203#if__ASSEMBLER__
204# defineREG_ADDR(type, addr)(addr)
205#else/* ! __ASSEMBLER__ */
206# defineREG_ADDR(type, addr)(*(volatile type *)(addr))
207#endif/* __ASSEMBLER__ */
208
209/* Cast a register to be an unsigned */
210/* CAUTION :non naturally aligned foo can result into alignment traps
211 *use at own risk.
212 */
213#defineCONTENTS(foo)(*(unsigned *) &(foo))
214
215/* STRINGIFY -- perform all possible substitutions, then stringify */
216#define__STR(x)#x/* just a helper macro */
217#defineSTRINGIFY(x)__STR(x)
218
219/*
220 * Stack pointer must always be a multiple of 16
221 */
222#defineSTACK_INCR16
223#defineROUND_FRAME(x)((((unsigned)(x)) + STACK_INCR - 1) & ~(STACK_INCR-1))
224
225#endif /* _ARCH_PPC_REG_HELP_H_ */
226

Archive Download this file

Revision: 1146