mirror of
https://github.com/cirosantilli/linux-kernel-module-cheat.git
synced 2026-01-28 04:24:26 +01:00
baremetal: aarch64 semihosting exit
This commit is contained in:
20
baremetal/arch/aarch64/semihost_exit.S
Normal file
20
baremetal/arch/aarch64/semihost_exit.S
Normal file
@@ -0,0 +1,20 @@
|
||||
.global main
|
||||
main:
|
||||
/* 0x20026 == ADP_Stopped_ApplicationExit */
|
||||
mov x1, #0x26
|
||||
movk x1, #2, lsl #16
|
||||
str x1, [sp,#0]
|
||||
|
||||
/* Exit status code. Host QEMU process exits with that status. */
|
||||
mov x0, #0
|
||||
str x0, [sp,#8]
|
||||
|
||||
/* x1 contains the address of parameter block.
|
||||
* Any memory address could be used. */
|
||||
mov x1, sp
|
||||
|
||||
/* SYS_EXIT */
|
||||
mov w0, #0x18
|
||||
|
||||
/* Do the semihosting call on A64. */
|
||||
hlt 0xf000
|
||||
@@ -1,5 +1,8 @@
|
||||
.global main
|
||||
main:
|
||||
/* SYS_EXIT */
|
||||
mov r0, #0x18
|
||||
/* ADP_Stopped_ApplicationExit */
|
||||
ldr r1, =#0x20026
|
||||
/* Do the semihosting call on A32. */
|
||||
svc 0x00123456
|
||||
|
||||
Reference in New Issue
Block a user