.global user_exec user_exec: sub sp, sp, 36 * 8 mov x1, x0 mov x0, sp mov x2, 36 * 8 bl memcpy ldp lr, x0, [sp, 16 * 15] ldp x1, x2, [sp, 16 * 16] ldr x3, [sp, 16 * 17] msr spsr_el1, x0 msr elr_el1, x1 msr esr_el1, x2 msr sp_el0, x3 ldp x0, x1, [sp, 16 * 0] ldp x2, x3, [sp, 16 * 1] ldp x4, x5, [sp, 16 * 2] ldp x6, x7, [sp, 16 * 3] ldp x8, x9, [sp, 16 * 4] ldp x10, x11, [sp, 16 * 5] ldp x12, x13, [sp, 16 * 6] ldp x14, x15, [sp, 16 * 7] ldp x16, x17, [sp, 16 * 8] ldp x18, x19, [sp, 16 * 9] ldp x20, x21, [sp, 16 * 10] ldp x22, x23, [sp, 16 * 11] ldp x24, x25, [sp, 16 * 12] ldp x26, x27, [sp, 16 * 13] ldp x28, fp, [sp, 16 * 14] add sp, sp, 36 * 8 eret