[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:
@@ -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
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user