Subversion Repositories HelenOS-historic

Rev

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

Rev 1732 Rev 1737
Line 193... Line 193...
193
	
193
	
194
	li r31, 0
194
	li r31, 0
195
	
195
	
196
	li r29, 8
196
	li r29, 8
197
	mtctr r29
197
	mtctr r29
198
	li r30, 0
198
	li r30, 0                     # ASID 0 (VSIDs 0 .. 7)
199
 
199
 
200
	seg_fill_uspace:
200
	seg_fill_uspace:
201
	
201
	
202
		mtsrin r30, r31
202
		mtsrin r30, r31
203
		addi r30, r30, 1
203
		addi r30, r30, 1
Line 205... Line 205...
205
		
205
		
206
		bdnz seg_fill_uspace
206
		bdnz seg_fill_uspace
207
	
207
	
208
	li r29, 8
208
	li r29, 8
209
	mtctr r29
209
	mtctr r29
210
	lis r30, 0x4000
210
	lis r30, 0x4000               # priviledged access only
211
	ori r30, r30, 8
211
	ori r30, r30, 8               # ASID 0 (VSIDs 8 .. 15)
212
	
212
	
213
	seg_fill_kernel:
213
	seg_fill_kernel:
214
	
214
	
215
		mtsrin r30, r31
215
		mtsrin r30, r31
216
		addi r30, r30, 1
216
		addi r30, r30, 1
Line 258... Line 258...
258
	li r30, 0x4000
258
	li r30, 0x4000
259
	li r29, 0
259
	li r29, 0
260
	
260
	
261
	pht_clear:
261
	pht_clear:
262
		
262
		
-
 
263
		# write zeroes
-
 
264
		
263
		stw r29, 0(r31)
265
		stw r29, 0(r31)
264
		
266
		
265
		addi r31, r31, 4
267
		addi r31, r31, 4
266
		subi r30, r30, 4
268
		subi r30, r30, 4
267
		
269
		
Line 277... Line 279...
277
	lis r31, 0x07ff
279
	lis r31, 0x07ff
278
	ori r31, r31, 0x0000
280
	ori r31, r31, 0x0000
279
	
281
	
280
	mtsdr1 r31
282
	mtsdr1 r31
281
	
283
	
282
	# create identity mapping
-
 
283
	
-
 
284
#ifdef CONFIG_BAT
284
#ifdef CONFIG_BAT
285
	
285
	
-
 
286
	# create BAT identity mapping
-
 
287
	
286
	DEBUG_mapping
288
	DEBUG_mapping
287
	
289
	
-
 
290
	lwz r31, 0(r3)
-
 
291
	
-
 
292
	lis r29, 0x0002
-
 
293
	cmpw r31, r29
-
 
294
	blt no_bat                    # less than 128 KB -> no BAT
-
 
295
	
-
 
296
	li r29, 18
-
 
297
	srw r31, r31, r29             # r31 = total >> 18
-
 
298
	
-
 
299
	# create Block Length mask by replicating
288
	# FIXME: map exactly the size of RAM
300
	# the leading logical one 14 times
289
	
301
	
-
 
302
	li r29, 14
-
 
303
	mtctr r31
-
 
304
	li r29, 1
-
 
305
	
-
 
306
	bat_mask:
-
 
307
		srw r30, r31, r29         # r30 = mask >> 1
-
 
308
		or r31, r31, r30          # mask = mask | r30
-
 
309
		
-
 
310
		bdnz bat_mask
-
 
311
	
-
 
312
	andi. r31, r31, 0x07ff        # mask = mask & 0x07ff (BAT can map up to 256 MB)
-
 
313
	
-
 
314
	li r29, 2
-
 
315
	slw r31, r31, r29             # mask = mask << 2
-
 
316
	ori r31, r31, 0x0002          # mask = mask | 0x0002 (priviledged access only)
-
 
317
	
290
	lis r31, 0x8000
318
	lis r29, 0x8000
291
	ori r31, r31, 0x0ffe
319
	or r29, r29, r31
292
	
320
	
293
	lis r30, 0x0000
321
	lis r30, 0x0000
294
	ori r30, r30, 0x0002
322
	ori r30, r30, 0x0002
295
	
323
	
296
	mtspr ibat0u, r31
324
	mtspr ibat0u, r29
297
	mtspr ibat0l, r30
325
	mtspr ibat0l, r30
298
	
326
	
299
	mtspr dbat0u, r31
327
	mtspr dbat0u, r29
300
	mtspr dbat0l, r30
328
	mtspr dbat0l, r30
-
 
329
	
-
 
330
	no_bat:
301
 
331
 
302
#endif
332
#endif
303
	
333
	
304
	DEBUG_tlb
334
	DEBUG_tlb
305
	
335