]> git.saurik.com Git - apple/xnu.git/blame - osfmk/ppc/aligned_data.s
xnu-517.tar.gz
[apple/xnu.git] / osfmk / ppc / aligned_data.s
CommitLineData
1c79356b
A
1/*
2 * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
3 *
4 * @APPLE_LICENSE_HEADER_START@
5 *
43866e37 6 * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
1c79356b 7 *
43866e37
A
8 * This file contains Original Code and/or Modifications of Original Code
9 * as defined in and that are subject to the Apple Public Source License
10 * Version 2.0 (the 'License'). You may not use this file except in
11 * compliance with the License. Please obtain a copy of the License at
12 * http://www.opensource.apple.com/apsl/ and read it before using this
13 * file.
14 *
15 * The Original Code and all software distributed under the License are
16 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
1c79356b
A
17 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
18 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
43866e37
A
19 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
20 * Please see the License for the specific language governing rights and
21 * limitations under the License.
1c79356b
A
22 *
23 * @APPLE_LICENSE_HEADER_END@
24 */
25/*
26 * This module only exists because I don't know how to get the silly C compiler
27 * and/or linker to generate data areas that are aligned on a particular boundary.
28 * And, this stuff is in the V=R mapped area.
29 *
30 * Do the following for each:
31 *
32 * .size name,size-in-bytes
33 * .type area-name,@object
34 * .globl area-name
35 * .align power-of-two
36 * area-name:
37 * .set .,.+size-in-bytes
38 *
39 * So long as I'm being pedantic, always make sure that the most aligned,
40 * i.e., the largest power-of-twos, are first and then descend to the smallest.
41 * If you don't, and you are not careful and hand calculate, you'll end up
42 * with holes and waste storage. I hate C.
43 *
44 * Define the sizes in genassym.c
45 */
46
47
48#include <debug.h>
49#include <cpus.h>
50#include <ppc/asm.h>
51#include <ppc/proc_reg.h>
55e303ae
A
52#include <ppc/spec_reg.h>
53#include <mach/ppc/vm_param.h>
1c79356b
A
54#include <assym.s>
55
56;
57; NOTE: We need this only if PREEMPTSTACK is set to non-zero in hw_lock.
58; Make sure they are set to the same thing
59;
60#define PREEMPTSTACK 0
61
62 .data
63
55e303ae 64/* 4096-byte aligned areas */
1c79356b
A
65
66 .globl EXT(per_proc_info)
55e303ae 67 .align 12
1c79356b 68EXT(per_proc_info): ; Per processor data area
55e303ae 69 .space (ppSize*NCPUS),0 ; (filled with 0s)
1c79356b
A
70
71/* 512-byte aligned areas */
72
73 .globl EXT(kernel_pmap_store) ; This is the kernel_pmap
74 .align 8
75EXT(kernel_pmap_store):
55e303ae 76 .set .,.+pmapSize
1c79356b
A
77
78
79/* 256-byte aligned areas */
80
81 .globl EXT(GratefulDebWork)
82 .align 8
83EXT(GratefulDebWork): ; Enough for 2 rows of 8 chars of 16-pixel wide 32-bit pixels and a 256 byte work area
84 .set .,.+2560
85
86 .globl debstash
87 .align 8
88debstash:
89 .set .,.+256
90
1c79356b
A
91#if PREEMPTSTACK
92
93;
94; NOTE: We need this only if PREEMPTSTACK is set to non-zero in hw_lock.
95;
96
97 .globl EXT(DBGpreempt) ; preemption debug stack
98 .align 8
99EXT(DBGpreempt):
100 .set .,.+(NCPUS*PREEMPTSTACK*16)
101#endif
102
103
9bccf70c 104/* 128-byte aligned areas */
1c79356b 105
1c79356b 106 .globl EXT(mapCtl)
9bccf70c 107 .align 7
1c79356b
A
108EXT(mapCtl):
109 .set .,.+mapcsize
110
1c79356b 111 .globl fwdisplock
9bccf70c 112 .align 7
1c79356b 113fwdisplock:
9bccf70c
A
114 .set .,.+128
115
116 .globl EXT(free_mappings)
117 .align 7
118
119EXT(free_mappings):
120 .long 0
121
122 .globl EXT(syncClkSpot)
123 .align 7
124EXT(syncClkSpot):
125 .long 0
126 .long 0
127 .long 0
128 .long 0
129 .long 0
130 .long 0
131 .long 0
132 .long 0
133
134 .globl EXT(NMIss)
135 .align 7
136EXT(NMIss):
137 .long 0
138 .long 0
139 .long 0
140 .long 0
141 .long 0
142 .long 0
143 .long 0
144 .long 0
145
146/* 32-byte aligned areas */
147
148 .globl EXT(dbvecs)
149 .align 5
150EXT(dbvecs):
151 .set .,.+(33*16)
1c79356b
A
152
153 .globl hexfont
154 .align 5
155#include <ppc/hexfont.h>
156
9bccf70c
A
157 .globl EXT(QNaNbarbarian)
158 .align 5
1c79356b
A
159
160EXT(QNaNbarbarian):
9bccf70c
A
161 .long 0x7FFFDEAD /* This is a quiet not-a-number which is a "known" debug value */
162 .long 0x7FFFDEAD /* This is a quiet not-a-number which is a "known" debug value */
163 .long 0x7FFFDEAD /* This is a quiet not-a-number which is a "known" debug value */
164 .long 0x7FFFDEAD /* This is a quiet not-a-number which is a "known" debug value */
1c79356b 165
9bccf70c
A
166 .long 0x7FFFDEAD /* This is a quiet not-a-number which is a "known" debug value */
167 .long 0x7FFFDEAD /* This is a quiet not-a-number which is a "known" debug value */
168 .long 0x7FFFDEAD /* This is a quiet not-a-number which is a "known" debug value */
169 .long 0x7FFFDEAD /* This is a quiet not-a-number which is a "known" debug value */
1c79356b 170
1c79356b
A
171/* 8-byte aligned areas */
172
9bccf70c
A
173 .globl EXT(FloatInit)
174 .align 3
1c79356b
A
175
176EXT(FloatInit):
9bccf70c
A
177 .long 0xC24BC195 /* Initial value */
178 .long 0x87859393 /* of floating point registers */
179 .long 0xE681A2C8 /* and others */
180 .long 0x8599855A
1c79356b 181
9bccf70c
A
182 .globl EXT(DebugWork)
183 .align 3
1c79356b
A
184
185EXT(DebugWork):
9bccf70c
A
186 .long 0
187 .long 0
188 .long 0
189 .long 0
1c79356b 190
9bccf70c
A
191 .globl EXT(dbfloats)
192 .align 3
1c79356b
A
193EXT(dbfloats):
194 .set .,.+(33*8)
195
9bccf70c
A
196 .globl EXT(dbspecrs)
197 .align 3
1c79356b
A
198EXT(dbspecrs):
199 .set .,.+(80*4)
55e303ae
A
200
201/*
202 * Interrupt and debug stacks go here
203 */
204
205 .align PPC_PGSHIFT
206 .globl EXT(FixedStackStart)
207EXT(FixedStackStart):
208
209 .globl EXT(intstack)
210EXT(intstack):
211 .set .,.+INTSTACK_SIZE*NCPUS
212
213/* Debugger stack - used by the debugger if present */
214/* NOTE!!! Keep the debugger stack right after the interrupt stack */
215
216 .globl EXT(debstack)
217EXT(debstack):
218 .set ., .+KERNEL_STACK_SIZE*NCPUS
219
220 .globl EXT(FixedStackEnd)
221EXT(FixedStackEnd):
222
223 .align ALIGN
224 .globl EXT(intstack_top_ss)
225EXT(intstack_top_ss):
226 .long EXT(intstack)+INTSTACK_SIZE-FM_SIZE /* intstack_top_ss points to the top of interrupt stack */
227
228 .align ALIGN
229 .globl EXT(debstack_top_ss)
230EXT(debstack_top_ss):
231
232 .long EXT(debstack)+KERNEL_STACK_SIZE-FM_SIZE /* debstack_top_ss points to the top of debug stack */
233
234 .globl EXT(debstackptr)
235EXT(debstackptr):
236 .long EXT(debstack)+KERNEL_STACK_SIZE-FM_SIZE
237