123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- #include "ppc_asm.h"
- .text
- .globl _zimage_start
- _zimage_start:
-
- mfmsr 9
- rlwinm 9, 9, 0, ~((1<<4)|(1<<5))
- bcl 20, 31, 1f
- 1:
- mflr 8
- clrlwi 8, 8, 3
- addi 8, 8, _mmu_off - 1b
- mtsrr0 8
- mtsrr1 9
- rfi
- _mmu_off:
-
-
- isync
- li 8, 0
- mtspr 0x210, 8
- mtspr 0x212, 8
- mtspr 0x214, 8
- mtspr 0x216, 8
- mtspr 0x218, 8
- mtspr 0x21a, 8
- mtspr 0x21c, 8
- mtspr 0x21e, 8
- mtspr 0x230, 8
- mtspr 0x232, 8
- mtspr 0x234, 8
- mtspr 0x236, 8
- mtspr 0x238, 8
- mtspr 0x23a, 8
- mtspr 0x23c, 8
- mtspr 0x23e, 8
- li 8, 0x01ff
- li 9, 0x0002
- mtspr 0x211, 9
- mtspr 0x210, 8
- mtspr 0x219, 9
- mtspr 0x218, 8
- lis 8, 0x0c00
- ori 8, 8, 0x3ff
- lis 9, 0x0c00
- ori 9, 9, 0x002a
- mtspr 0x21b, 9
- mtspr 0x21a, 8
- lis 8, 0x0100
- ori 8, 8, 0x00ff
- lis 9, 0x0100
- ori 9, 9, 0x0002
- mtspr 0x215, 9
- mtspr 0x214, 8
- mtspr 0x21d, 9
- mtspr 0x21c, 8
- lis 8, 0x1000
- ori 8, 8, 0x07ff
- lis 9, 0x1000
- ori 9, 9, 0x0002
- mtspr 0x216, 8
- mtspr 0x217, 9
- mtspr 0x21e, 8
- mtspr 0x21f, 9
-
- mfspr 8, 0x3f3
- oris 8, 8, 0x0200
- mtspr 0x3f3, 8
-
- mfspr 8, 0x3f0
- andi. 0, 8, (1<<15)
- bne 1f
- ori 8, 8, (1<<15)|(1<<11)
- 1:
- andi. 0, 8, (1<<14)
- bne 1f
- ori 8, 8, (1<<14)|(1<<10)
- 1:
- mtspr 0x3f0, 8
- isync
-
- li 3, 0
- li 4, 0
- li 5, 0
-
- bcl 20, 31, 1f
- 1:
- mflr 8
- addi 8, 8, _mmu_on - 1b
- mfmsr 9
- ori 9, 9, (1<<4)|(1<<5)
- mtsrr0 8
- mtsrr1 9
- sync
- rfi
- _mmu_on:
-
- lis 8, 0x0d00
- ori 8, 8, 0x00c0
- lwz 9, 0(8)
- ori 9, 9, 0x20
- stw 9, 0(8)
- b _zimage_start_lib
|