mirror of
https://github.com/cirosantilli/linux-kernel-module-cheat.git
synced 2026-01-28 04:24:26 +01:00
mtops.h is perfect now
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
#include <lkmc/m5ops.h>
|
||||
|
||||
.global mystart
|
||||
mystart:
|
||||
mov x0, #0; .inst 0XFF000110 | (0x21 << 16);
|
||||
LKMC_M5OPS_EXIT_ASM
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
/* assert 0x12345678 + 1 == 0x12345679 */
|
||||
|
||||
#include <lkmc/m5ops.h>
|
||||
|
||||
.global main
|
||||
main:
|
||||
movw r0, #:lower16:myvar
|
||||
movt r0, #:upper16:myvar
|
||||
adr r0, myvar
|
||||
ldr r1, [r0]
|
||||
add r1, r1, #1
|
||||
str r1, [r0]
|
||||
@@ -10,10 +12,8 @@ main:
|
||||
movt r2, #0x1234
|
||||
cmp r1, r2
|
||||
beq ok
|
||||
/* m5 fail 1 */
|
||||
mov r0, #0; mov r1, #0; mov r2, #1; mov r3, #0; .inst 0xEE000110 | (0x22 << 16);
|
||||
LKMC_M5OPS_FAIL_1_ASM
|
||||
ok:
|
||||
/* m5 exit */
|
||||
mov r0, #0; mov r1, #0; .inst 0xEE000110 | (0x21 << 16);
|
||||
LKMC_M5OPS_EXIT_ASM
|
||||
myvar:
|
||||
.word 0x12345678
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
#include <stdlib.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
#include <lkmc/m5ops.h>
|
||||
|
||||
enum {
|
||||
UART_FR_RXFE = 0x10,
|
||||
};
|
||||
@@ -63,11 +65,7 @@ int _write(int file, char *ptr, int len) {
|
||||
/* Only 0 is supported for now, arm semihosting cannot handle other values. */
|
||||
void _exit(int status) {
|
||||
#if defined(GEM5)
|
||||
#if defined(__arm__)
|
||||
__asm__ __volatile__ ("mov r0, #0; mov r1, #0; .inst 0xEE000110 | (0x21 << 16);" : : : "r0", "r1");
|
||||
#elif defined(__aarch64__)
|
||||
__asm__ __volatile__ ("mov x0, #0; .inst 0XFF000110 | (0x21 << 16);" : : : "x0");
|
||||
#endif
|
||||
LKMC_M5OPS_EXIT;
|
||||
#else
|
||||
#if defined(__arm__)
|
||||
__asm__ __volatile__ ("mov r0, #0x18; ldr r1, =#0x20026; svc 0x00123456" : : : "r0", "r1");
|
||||
|
||||
Reference in New Issue
Block a user