329
319
lis r1,0x0030 /* store gathering & broadcast disable */
330
320
ori r1,r1,0x6000 /* cache touch */
333
323
/*----------------------------------------------------------------*/
334
324
/* Initialize debug */
335
325
/*----------------------------------------------------------------*/
337
327
andis. r1, r1, 0x8000 /* test DBCR0[EDM] bit */
338
328
bne skip_debug_init /* if set, don't clear debug register */
351
mtspr SPRN_DBSR,r1 /* Clear all valid bits */
341
mtspr dbsr,r1 /* Clear all valid bits */
354
344
#if defined (CONFIG_440SPE)
366
356
| j. TCS: Timebase increments from CPU clock.
367
357
+-----------------------------------------------------------------*/
371
361
/*----------------------------------------------------------------+
372
362
| Reset the timebase.
373
363
| The previous write to CCR1 sets the timebase source.
374
364
+-----------------------------------------------------------------*/
379
369
/*----------------------------------------------------------------*/
380
370
/* Setup interrupt vectors */
381
371
/*----------------------------------------------------------------*/
382
mtspr SPRN_IVPR,r0 /* Vectors start at 0x0000_0000 */
372
mtspr ivpr,r0 /* Vectors start at 0x0000_0000 */
384
mtspr SPRN_IVOR0,r1 /* Critical input */
374
mtspr ivor0,r1 /* Critical input */
386
mtspr SPRN_IVOR1,r1 /* Machine check */
376
mtspr ivor1,r1 /* Machine check */
388
mtspr SPRN_IVOR2,r1 /* Data storage */
378
mtspr ivor2,r1 /* Data storage */
390
mtspr SPRN_IVOR3,r1 /* Instruction storage */
380
mtspr ivor3,r1 /* Instruction storage */
392
mtspr SPRN_IVOR4,r1 /* External interrupt */
382
mtspr ivor4,r1 /* External interrupt */
394
mtspr SPRN_IVOR5,r1 /* Alignment */
384
mtspr ivor5,r1 /* Alignment */
396
mtspr SPRN_IVOR6,r1 /* Program check */
386
mtspr ivor6,r1 /* Program check */
398
mtspr SPRN_IVOR7,r1 /* Floating point unavailable */
388
mtspr ivor7,r1 /* Floating point unavailable */
400
mtspr SPRN_IVOR8,r1 /* System call */
390
mtspr ivor8,r1 /* System call */
402
mtspr SPRN_IVOR9,r1 /* Auxiliary Processor unavailable */
392
mtspr ivor9,r1 /* Auxiliary Processor unavailable */
404
mtspr SPRN_IVOR10,r1 /* Decrementer */
394
mtspr ivor10,r1 /* Decrementer */
406
mtspr SPRN_IVOR13,r1 /* Data TLB error */
396
mtspr ivor13,r1 /* Data TLB error */
408
mtspr SPRN_IVOR14,r1 /* Instr TLB error */
398
mtspr ivor14,r1 /* Instr TLB error */
410
mtspr SPRN_IVOR15,r1 /* Debug */
400
mtspr ivor15,r1 /* Debug */
412
402
/*----------------------------------------------------------------*/
413
403
/* Configure cache regions */
414
404
/*----------------------------------------------------------------*/
432
422
/*----------------------------------------------------------------*/
433
423
/* Cache victim limits */
442
432
/*----------------------------------------------------------------+
443
433
|Initialize MMUCR[STID] = 0.
444
434
+-----------------------------------------------------------------*/
446
436
addis r1,0,0xFFFF
451
441
/*----------------------------------------------------------------*/
452
442
/* Clear all TLB entries -- TID = 0, TS = 0 */
453
443
/*----------------------------------------------------------------*/
454
444
addis r0,0,0x0000
455
#ifdef CONFIG_SYS_RAMBOOT
456
li r4,0 /* Start with TLB #0 */
458
li r4,1 /* Start with TLB #1 */
460
li r1,64 /* 64 TLB entries */
461
sub r1,r1,r4 /* calculate last TLB # */
445
li r1,0x003f /* 64 TLB entries */
464
#ifdef CONFIG_SYS_RAMBOOT
465
tlbre r3,r4,0 /* Read contents from TLB word #0 to get EPN */
466
rlwinm. r3,r3,0,0xfffffc00 /* Mask EPN */
467
beq tlbnxt /* Skip EPN=0 TLB, this is the SDRAM TLB */
469
tlbwe r0,r4,0 /* Invalidate all entries (V=0)*/
472
tlbnxt: addi r4,r4,1 /* Next TLB */
447
rsttlb: tlbwe r0,r1,0x0000 /* Invalidate all entries (V=0)*/
475
453
/*----------------------------------------------------------------*/
512
484
tlbwe r0,r4,0 /* TLB Word 0 */
513
485
tlbwe r1,r4,1 /* TLB Word 1 */
514
486
tlbwe r2,r4,2 /* TLB Word 2 */
515
tlbnx2: addi r4,r4,1 /* Next TLB */
487
addi r4,r4,1 /* Next TLB */
518
490
/*----------------------------------------------------------------*/
629
601
/*----------------------------------------------------------------*/
632
mtspr SPRN_DEC,r0 /* prevent dec exceptions */
633
mtspr SPRN_TBWL,r0 /* prevent fit & wdt exceptions */
635
mtspr SPRN_TSR,r1 /* clear all timer exception status */
636
mtspr SPRN_TCR,r0 /* disable all */
637
mtspr SPRN_ESR,r0 /* clear exception syndrome register */
604
mtspr dec,r0 /* prevent dec exceptions */
605
mtspr tbl,r0 /* prevent fit & wdt exceptions */
607
mtspr tsr,r1 /* clear all timer exception status */
608
mtspr tcr,r0 /* disable all */
609
mtspr esr,r0 /* clear exception syndrome register */
638
610
mtxer r0 /* clear integer exception register */
640
612
/*----------------------------------------------------------------*/
816
788
/* Set up some machine state registers. */
817
789
/*----------------------------------------------------------------------- */
818
790
addi r0,r0,0x0000 /* initialize r0 to zero */
819
mtspr SPRN_ESR,r0 /* clear Exception Syndrome Reg */
791
mtspr esr,r0 /* clear Exception Syndrome Reg */
820
792
mttcr r0 /* timer control register */
821
793
mtexier r0 /* disable all interrupts */
822
794
addis r4,r0,0xFFFF /* set r4 to 0xFFFFFFFF (status in the */