diff --git a/src/aarch64/context.rs b/src/aarch64/context.rs index f2535be..eb56985 100644 --- a/src/aarch64/context.rs +++ b/src/aarch64/context.rs @@ -14,7 +14,7 @@ pub struct TrapFrame { pub spsr: u64, /// make sure the size is 16 bytes aligned - pub __pad: [u8; 8], + pub __pad: u64, } impl fmt::Debug for TrapFrame { diff --git a/src/aarch64/trap.S b/src/aarch64/trap.S index 09354be..a938aa2 100644 --- a/src/aarch64/trap.S +++ b/src/aarch64/trap.S @@ -97,8 +97,8 @@ exception_vector_base: mrs x8, sp_el0 mrs x9, tpidr_el0 - ldp x10, x11, [x1, 33 * 8] - stp x8, x9, [x1, 33 * 8] + ldp x10, x11, [x1, {trapframe_size}] + stp x8, x9, [x1, {trapframe_size}] mov sp, x10 msr tpidr_el0, x11 @@ -124,8 +124,8 @@ enter_user: mov x10, sp mrs x11, tpidr_el0 - ldp x8, x9, [x0, 33 * 8] - stp x10, x11, [x0, 33 * 8] + ldp x8, x9, [x0, {trapframe_size}] + stp x10, x11, [x0,{trapframe_size}] msr sp_el0, x8 msr tpidr_el0, x9 diff --git a/src/aarch64/uspace.rs b/src/aarch64/uspace.rs index 67042f9..347c3dc 100644 --- a/src/aarch64/uspace.rs +++ b/src/aarch64/uspace.rs @@ -39,7 +39,7 @@ impl UserContext { + SPSR_EL1::I::Unmasked + SPSR_EL1::F::Masked) .value, - __pad: [0; 8], + __pad: 0, }, sp: ustack_top.as_usize() as _, tpidr: 0,