[squash] Use x4 as early scratch register in case args are passed in x0-x3 (changes as per code review).

This commit is contained in:
Gurjant Kalsi
2016-08-25 15:51:34 -07:00
parent 2072cfe8f1
commit 173046ecca

View File

@@ -84,36 +84,36 @@ FUNCTION(arm64_el3_to_el1)
eret
FUNCTION(arm64_elX_to_el1)
mrs x0, CurrentEL
mrs x4, CurrentEL
cmp x0, #(0b01 << 2)
cmp x4, #(0b01 << 2)
bne .notEL1
/* Already in EL1 */
ret
.notEL1:
cmp x0, #(0b10 << 2)
cmp x4, #(0b10 << 2)
beq .inEL2
/* set EL2 to 64bit */
mrs x0, scr_el3
orr x0, x0, #(1<<10)
msr scr_el3, x0
mrs x4, scr_el3
orr x4, x4, #(1<<10)
msr scr_el3, x4
adr x0, .Ltarget
msr elr_el3, x0
adr x4, .Ltarget
msr elr_el3, x4
mov x0, #((0b1111 << 6) | (0b0101)) /* EL1h runlevel */
msr spsr_el3, x0
mov x4, #((0b1111 << 6) | (0b0101)) /* EL1h runlevel */
msr spsr_el3, x4
b .confEL1
.inEL2:
adr x0, .Ltarget
msr elr_el2, x0
mov x0, #((0b1111 << 6) | (0b0101)) /* EL1h runlevel */
msr spsr_el2, x0
adr x4, .Ltarget
msr elr_el2, x4
mov x4, #((0b1111 << 6) | (0b0101)) /* EL1h runlevel */
msr spsr_el2, x4