Subversion Repositories HelenOS-historic

Rev

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

Rev 1725 Rev 1728
Line 188... Line 188...
188
	copy_end:
188
	copy_end:
189
	
189
	
190
	DEBUG_segments
190
	DEBUG_segments
191
	
191
	
192
	# initially fill segment registers
192
	# initially fill segment registers
193
 
193
	
194
	li r31, 16
-
 
195
	mtctr r31
-
 
196
	li r31, 0
194
	li r31, 0
-
 
195
	
-
 
196
	li r29, 8
-
 
197
	mtctr r29
197
	li r30, 0x2000
198
	li r30, 0
198
 
199
 
199
	seg_fill:
200
	seg_fill_uspace:
200
	
201
	
201
		mtsrin r30, r31
202
		mtsrin r30, r31
202
		addi r30, r30, 0x111
203
		addi r30, r30, 1
203
		addis r31, r31, 0x1000    # move to next SR
204
		addis r31, r31, 0x1000    # move to next SR
204
		
205
		
205
		bdnz seg_fill
206
		bdnz seg_fill_uspace
-
 
207
	
-
 
208
	li r29, 8
-
 
209
	mtctr r29
-
 
210
	li r30, 0x4000
-
 
211
	
-
 
212
	seg_fill_kernel:
-
 
213
	
-
 
214
		mtsrin r30, r31
-
 
215
		addi r30, r30, 1
-
 
216
		addis r31, r31, 0x1000    # move to next SR
-
 
217
		
-
 
218
		bdnz seg_fill_kernel
206
	
219
	
207
	# invalidate block address translation registers
220
	# invalidate block address translation registers
208
	
221
	
209
	DEBUG_bat
222
	DEBUG_bat
210
	
223
	
Line 239... Line 252...
239
	DEBUG_pht
252
	DEBUG_pht
240
	
253
	
241
	lis r31, 0x07ff
254
	lis r31, 0x07ff
242
	ori r31, r31, 0x0000
255
	ori r31, r31, 0x0000
243
	
256
	
-
 
257
	li r30, 0x4000
-
 
258
	li r29, 0
-
 
259
	
-
 
260
	pht_clear:
-
 
261
		
-
 
262
		stw r29, 0(r31)
-
 
263
		
-
 
264
		addi r31, r31, 4
-
 
265
		subi r30, r30, 4
-
 
266
		
-
 
267
		cmpwi r30, 0
-
 
268
		beq clear_end
-
 
269
		
-
 
270
		bdnz pht_clear
-
 
271
 
-
 
272
		DEBUG_end_pht_clear
-
 
273
		
-
 
274
	clear_end:
-
 
275
	
-
 
276
	lis r31, 0x07ff
-
 
277
	ori r31, r31, 0x0000
-
 
278
	
244
	mtsdr1 r31
279
	mtsdr1 r31
245
	
280
	
246
	# create identity mapping
281
	# create identity mapping
247
	
282
	
-
 
283
#ifdef CONFIG_BAT
-
 
284
	
248
	DEBUG_mapping
285
	DEBUG_mapping
249
	
286
	
250
	# FIXME: map exactly the size of RAM
287
	# FIXME: map exactly the size of RAM
251
	
288
	
252
	lis r31, 0x8000
289
	lis r31, 0x8000
Line 258... Line 295...
258
	mtspr ibat0u, r31
295
	mtspr ibat0u, r31
259
	mtspr ibat0l, r30
296
	mtspr ibat0l, r30
260
	
297
	
261
	mtspr dbat0u, r31
298
	mtspr dbat0u, r31
262
	mtspr dbat0l, r30
299
	mtspr dbat0l, r30
-
 
300
 
-
 
301
#endif
263
	
302
	
264
	DEBUG_tlb
303
	DEBUG_tlb
265
	
304
	
266
	tlbia
305
	tlbia
267
	tlbsync
306
	tlbsync
268
	
307
	
269
	DEBUG_prepare
308
	DEBUG_prepare
270
	
309
	
271
	# start the kernel
310
	# start the kernel
272
	#
311
	#
-
 
312
	# pc = KERNEL_START_ADDR
273
	# r3 = bootinfo (pa)
313
	# r3 = bootinfo (pa)
-
 
314
	# sprg0 = KA2PA(KERNEL_START_ADDR)
-
 
315
	# sprg3 = physical memory size
-
 
316
	# sp = 0 (pa)
274
	
317
	
275
	lis r31, KERNEL_START_ADDR@ha
318
	lis r31, KERNEL_START_ADDR@ha
276
	addi r31, r31, KERNEL_START_ADDR@l
319
	addi r31, r31, KERNEL_START_ADDR@l
277
	
320
	
278
	mtspr srr0, r31
321
	mtspr srr0, r31
279
	
322
	
-
 
323
	subis r31, r31, 0x8000
-
 
324
	mtsprg0 r31
-
 
325
	
-
 
326
	lwz r31, 0(r3)
-
 
327
	mtsprg3 r31
-
 
328
	
-
 
329
	li sp, 0
-
 
330
	
280
	mfmsr r31
331
	mfmsr r31
281
	ori r31, r31, (msr_ir | msr_dr)@l
332
	ori r31, r31, (msr_ir | msr_dr)@l
282
	mtspr srr1, r31
333
	mtspr srr1, r31
283
	
334
	
284
	sync
335
	sync