Files
Ciro Santilli 六四事件 法轮功 26cab92bfc baremetal: allow arbitrary exit status with the magic string
test-baremetal: fix missing setting x0 return value

Examples were just returning on ret without setting x0, which led to
failures... those were not noticed because of how broken the testing system
was ;-)
2019-05-06 00:00:01 +00:00

39 lines
656 B
ArmAsm

/* https://github.com/cirosantilli/linux-kernel-module-cheat#arm-multicore */
.global main
main:
mov r0, #0
ldr r1, =spinlock
str r0, [r1]
/* Get CPU ID. */
mrc p15, 0, r1, c0, c0, 5
ands r1, r1, #3
beq cpu0_only
cpu1_only:
mov r0, #1
ldr r1, =spinlock
str r0, [r1]
dmb sy
sev
cpu1_sleep_forever:
wfe
b cpu1_sleep_forever
cpu0_only:
#if !defined(GEM5)
/* PSCI CPU_ON. */
ldr r0, =0x84000003
mov r1, #1
ldr r2, =cpu1_only
mov r3, #0
hvc 0
#endif
spinlock_start:
ldr r0, spinlock
wfe
cmp r0, #0
beq spinlock_start
mov r0, #0
bx lr
spinlock:
.skip 4