Files
linux-kernel-module-cheat/userland/arch/aarch64/ld2.S
Ciro Santilli 六四事件 法轮功 c8c4f89854 asm: make use regular asserts that will just work on baremetal
Previously had wonky line pointer in asm_main. New interface simpler and more portable.

Add tests for ASSERT_EQ_ and family in arm and aarch64, previously on x86_64.

ASSERT_EQ_ and family in ARM can now either take =123, =addr or var, before this
the = was added on macros so var was not possible.

Define the main function directly in assembly, the C driver was useless.
2019-05-23 00:00:00 +00:00

27 lines
681 B
ArmAsm

/* https://github.com/cirosantilli/linux-kernel-module-cheat#arm-ld2-instruction */
#include <lkmc.h>
LKMC_PROLOGUE
.data
u32_interleave: .word \
0x11111111, 0x55555555, \
0x22222222, 0x66666666, \
0x33333333, 0x77777777, \
0x44444444, 0x88888888
u32_interleave_sum_expect: .word \
0x66666666, \
0x88888888, \
0xAAAAAAAA, \
0xCCCCCCCC
.bss
u32_interleave_sum: .skip 16
.text
adr x0, u32_interleave
ld2 {v0.4s, v1.4s}, [x0]
add v2.4s, v0.4s, v1.4s
adr x0, u32_interleave_sum
st1 {v2.4s}, [x0]
LKMC_ASSERT_MEMCMP(u32_interleave_sum, u32_interleave_sum_expect, =0x10)
LKMC_EPILOGUE