Subversion Repositories HelenOS

Rev

Rev 1905 | Rev 1954 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1905 Rev 1906
Line 74... Line 74...
74
	wrpr %g0, PSTATE_PRIV_BIT, %pstate	! Disable interrupts and disable 32-bit address masking.
74
	wrpr %g0, PSTATE_PRIV_BIT, %pstate	! Disable interrupts and disable 32-bit address masking.
75
 
75
 
76
	wrpr %g0, 0, %pil			! intialize %pil
76
	wrpr %g0, 0, %pil			! intialize %pil
77
 
77
 
78
	/*
78
	/*
79
	 * Copy the bootinfo structure passed from the boot loader
-
 
80
	 * to the kernel bootinfo structure.
-
 
81
	 */
-
 
82
	brz %l7, 0f				! skip if you are not the bootstrap CPU
-
 
83
	nop
-
 
84
	
-
 
85
	sethi %hi(bootinfo), %o0
-
 
86
	call memcpy
-
 
87
	or %o0, %lo(bootinfo), %o0
-
 
88
0:
-
 
89
 
-
 
90
	/*
-
 
91
	 * Switch to kernel trap table.
79
	 * Switch to kernel trap table.
92
	 */
80
	 */
93
	sethi %hi(trap_table), %g1
81
	sethi %hi(trap_table), %g1
94
	wrpr %g1, %lo(trap_table), %tba
82
	wrpr %g1, %lo(trap_table), %tba
95
 
83
 
Line 207... Line 195...
207
	! write ITLB data and install the permanent kernel mapping in context 0
195
	! write ITLB data and install the permanent kernel mapping in context 0
208
	SET_TLB_DATA(g1, g2, TTE_L)		! use non-global mapping
196
	SET_TLB_DATA(g1, g2, TTE_L)		! use non-global mapping
209
	stxa %g1, [%g0] ASI_ITLB_DATA_IN_REG		
197
	stxa %g1, [%g0] ASI_ITLB_DATA_IN_REG		
210
	flush %g5
198
	flush %g5
211
 
199
 
212
	! switch to context 0
-
 
213
	stxa %g0, [VA_PRIMARY_CONTEXT_REG] %asi	! ASI_DMMU is correct here !!!
-
 
214
	flush %g5
-
 
215
 
-
 
216
	! ensure nucleus mapping
200
	! enter nucleus - using context 0
217
	wrpr %g0, 1, %tl
201
	wrpr %g0, 1, %tl
218
 
202
 
219
	! set context 1 in the primary context register
-
 
220
	mov MEM_CONTEXT_TEMP, %g1
-
 
221
	stxa %g1, [VA_PRIMARY_CONTEXT_REG] %asi	! ASI_DMMU is correct here !!!
-
 
222
	flush %g5
-
 
223
 
-
 
224
	! demap context 1
203
	! demap context 1
225
	SET_TLB_DEMAP_CMD(g1, TLB_DEMAP_PRIMARY)
204
	SET_TLB_DEMAP_CMD(g1, TLB_DEMAP_PRIMARY)
226
	stxa %g0, [%g1] ASI_IMMU_DEMAP			
205
	stxa %g0, [%g1] ASI_IMMU_DEMAP			
227
	flush %g5
206
	flush %g5
228
	
207
	
229
	! set context 0 in the primary context register
208
	! set context 0 in the primary context register
230
	stxa %g0, [VA_PRIMARY_CONTEXT_REG] %asi	! ASI_DMMU is correct here !!!
209
	stxa %g0, [VA_PRIMARY_CONTEXT_REG] %asi	! ASI_DMMU is correct here !!!
231
	flush %g5
210
	flush %g5
232
	
211
	
233
	! set TL back to 0
212
	! leave nucleus - using primary context, i.e. context 0
234
	wrpr %g0, 0, %tl
213
	wrpr %g0, 0, %tl
235
 
214
 
236
	brz %l7, 1f				! skip if you are not the bootstrap CPU
215
	brz %l7, 1f				! skip if you are not the bootstrap CPU
237
	nop
216
	nop
238
 
217
 
-
 
218
	sethi %hi(bootinfo), %o0
-
 
219
	call memcpy				! copy bootinfo
-
 
220
	or %o0, %lo(bootinfo), %o0
-
 
221
 
239
	call arch_pre_main
222
	call arch_pre_main
240
	nop
223
	nop
241
	
224
	
242
	call main_bsp
225
	call main_bsp
243
	nop
226
	nop
Line 269... Line 252...
269
	ldx [%g2], %g3
252
	ldx [%g2], %g3
270
	cmp %g3, %g1
253
	cmp %g3, %g1
271
	bne 2b
254
	bne 2b
272
	nop
255
	nop
273
 
256
 
274
 
-
 
275
	/*
257
	/*
276
	 * Configure stack for the AP.
258
	 * Configure stack for the AP.
277
	 * The AP is expected to use the stack saved
259
	 * The AP is expected to use the stack saved
278
	 * in the ctx global variable.
260
	 * in the ctx global variable.
279
	 */
261
	 */