mirror of
https://github.com/cirosantilli/linux-kernel-module-cheat.git
synced 2026-01-23 02:05:57 +01:00
arm: signed LDR example with LDRSW
This commit is contained in:
30
userland/arch/aarch64/ldrsw.S
Normal file
30
userland/arch/aarch64/ldrsw.S
Normal file
@@ -0,0 +1,30 @@
|
||||
/* https://cirosantilli.com/linux-kernel-module-cheat#arm-ldrh-and-ldrb-instructions */
|
||||
|
||||
#include <lkmc.h>
|
||||
|
||||
LKMC_PROLOGUE
|
||||
ldr x19, =zero_extend
|
||||
|
||||
mov x0, 0x0
|
||||
ldr w0, [x19]
|
||||
LKMC_ASSERT_EQ(x0, =0x0000000012345678)
|
||||
|
||||
mov x0, 0x0
|
||||
ldrsw x0, [x19]
|
||||
LKMC_ASSERT_EQ(x0, =0x0000000012345678)
|
||||
|
||||
ldr x19, =one_extend
|
||||
|
||||
mov x0, 0x0
|
||||
ldr w0, [x19]
|
||||
LKMC_ASSERT_EQ(x0, =0x0000000082345678)
|
||||
|
||||
mov x0, 0x0
|
||||
ldrsw x0, [x19]
|
||||
LKMC_ASSERT_EQ(x0, =0xFFFFFFFF82345678)
|
||||
|
||||
LKMC_EPILOGUE
|
||||
zero_extend:
|
||||
.word 0x12345678
|
||||
one_extend:
|
||||
.word 0x82345678
|
||||
Reference in New Issue
Block a user