Changeset View
Changeset View
Standalone View
Standalone View
head/sys/powerpc/aim/locore64.S
Show First 20 Lines • Show All 99 Lines • ▼ Show 20 Lines | 1: or 31,31,31 /* yield */ | ||||
/* Released */ | /* Released */ | ||||
or 2,2,2 /* unyield */ | or 2,2,2 /* unyield */ | ||||
/* Make sure that it will be software reset. Clear SRR1 */ | /* Make sure that it will be software reset. Clear SRR1 */ | ||||
li %r1,0 | li %r1,0 | ||||
mtsrr1 %r1 | mtsrr1 %r1 | ||||
ba EXC_RST | ba EXC_RST | ||||
/* | /* | ||||
* Now start the real text section | * Now start the real text section | ||||
*/ | */ | ||||
.text | .text | ||||
.globl btext | .globl btext | ||||
btext: | btext: | ||||
Show All 27 Lines | 1: mflr %r2 | ||||
ld %r1,0(%r2) | ld %r1,0(%r2) | ||||
add %r2,%r1,%r2 | add %r2,%r1,%r2 | ||||
/* Get load offset */ | /* Get load offset */ | ||||
ld %r31,-0x8000(%r2) /* First TOC entry is TOC base */ | ld %r31,-0x8000(%r2) /* First TOC entry is TOC base */ | ||||
subf %r31,%r31,%r2 /* Subtract from real TOC base to get base */ | subf %r31,%r31,%r2 /* Subtract from real TOC base to get base */ | ||||
/* Set up the stack pointer */ | /* Set up the stack pointer */ | ||||
ld %r1,TOC_REF(tmpstk)(%r2) | bl 1f | ||||
addi %r1,%r1,TMPSTKSZ-96 | .llong tmpstk + TMPSTKSZ - 96 - . | ||||
add %r1,%r1,%r31 | 1: mflr %r30 | ||||
ld %r1,0(%r30) | |||||
add %r1,%r1,%r30 | |||||
nop | |||||
/* Relocate kernel */ | /* Relocate kernel */ | ||||
std %r3,48(%r1) | std %r3,48(%r1) | ||||
std %r4,56(%r1) | std %r4,56(%r1) | ||||
std %r5,64(%r1) | std %r5,64(%r1) | ||||
std %r6,72(%r1) | std %r6,72(%r1) | ||||
std %r7,80(%r1) | std %r7,80(%r1) | ||||
Show All 20 Lines | 1: mflr %r3 | ||||
mr %r1, %r3 | mr %r1, %r3 | ||||
li %r3, 0 | li %r3, 0 | ||||
std %r3, 0(%r1) | std %r3, 0(%r1) | ||||
bl mi_startup | bl mi_startup | ||||
nop | nop | ||||
/* Unreachable */ | /* Unreachable */ | ||||
b . | b . | ||||
ASENTRY_NOPROF(__restartkernel) | |||||
/* | |||||
* r3-r7: arguments to go to __start | |||||
* r8: offset from current kernel address to apply | |||||
* r9: MSR to set when (atomically) jumping to __start + r8 | |||||
*/ | |||||
mtsrr1 %r9 | |||||
bl 1f | |||||
1: mflr %r25 | |||||
add %r25,%r8,%r25 | |||||
addi %r25,%r25,2f-1b | |||||
mtsrr0 %r25 | |||||
rfid | |||||
2: bl __start | |||||
nop | |||||
#include <powerpc/aim/trap_subr64.S> | #include <powerpc/aim/trap_subr64.S> |