mirror of
https://github.com/cirosantilli/linux-kernel-module-cheat.git
synced 2026-01-26 19:51:35 +01:00
create userland tests
Fix some more tabs. Parse the "Simulated exit code not 0!" string in gem5 and exit with the proper status
This commit is contained in:
@@ -1,13 +1,13 @@
|
||||
#include <common.h>
|
||||
|
||||
int main(void) {
|
||||
int i, j, k;
|
||||
i = 1;
|
||||
int i, j, k;
|
||||
i = 1;
|
||||
/* test-gdb-op1 */
|
||||
j = 2;
|
||||
j = 2;
|
||||
/* test-gdb-op2 */
|
||||
k = i + j;
|
||||
k = i + j;
|
||||
/* test-gdb-result */
|
||||
if (k != 3)
|
||||
common_assert_fail();
|
||||
if (k != 3)
|
||||
common_assert_fail();
|
||||
}
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
#include <inttypes.h>
|
||||
|
||||
int main(void) {
|
||||
register uint64_t x0 __asm__ ("x0");
|
||||
__asm__ ("mrs x0, CurrentEL;" : : : "%x0");
|
||||
printf("%" PRIu64 "\n", x0 >> 2);
|
||||
return 0;
|
||||
register uint64_t x0 __asm__ ("x0");
|
||||
__asm__ ("mrs x0, CurrentEL;" : : : "%x0");
|
||||
printf("%" PRIu64 "\n", x0 >> 2);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
#include <inttypes.h>
|
||||
|
||||
int main(void) {
|
||||
register uint32_t r0 __asm__ ("r0");
|
||||
__asm__ ("mrs r0, CPSR" : : : "%r0");
|
||||
printf("%" PRIu32 "\n", r0 & 0x1F);
|
||||
return 0;
|
||||
register uint32_t r0 __asm__ ("r0");
|
||||
__asm__ ("mrs r0, CPSR" : : : "%r0");
|
||||
printf("%" PRIu32 "\n", r0 & 0x1F);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -2,6 +2,6 @@
|
||||
#include <stdlib.h>
|
||||
|
||||
int main(void) {
|
||||
exit(0);
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#include <common.h>
|
||||
|
||||
int main(void) {
|
||||
common_assert_fail();
|
||||
common_assert_fail();
|
||||
}
|
||||
|
||||
|
||||
@@ -2,5 +2,5 @@
|
||||
#include <stdlib.h>
|
||||
|
||||
int main(void) {
|
||||
exit(1);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(void) {
|
||||
puts("hello");
|
||||
return 0;
|
||||
puts("hello");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -64,24 +64,24 @@ int _write(int file, char *ptr, int len) {
|
||||
void _exit(int status) {
|
||||
#if defined(GEM5)
|
||||
#if defined(__arm__)
|
||||
__asm__ __volatile__ ("mov r0, #0; mov r1, #0; .inst 0xEE000110 | (0x21 << 16);");
|
||||
__asm__ __volatile__ ("mov r0, #0; mov r1, #0; .inst 0xEE000110 | (0x21 << 16);");
|
||||
#elif defined(__aarch64__)
|
||||
__asm__ __volatile__ ("mov x0, #0; .inst 0XFF000110 | (0x21 << 16);");
|
||||
__asm__ __volatile__ ("mov x0, #0; .inst 0XFF000110 | (0x21 << 16);");
|
||||
#endif
|
||||
#else
|
||||
#if defined(__arm__)
|
||||
__asm__ __volatile__ ("mov r0, #0x18; ldr r1, =#0x20026; svc 0x00123456");
|
||||
#elif defined(__aarch64__)
|
||||
/* TODO actually use the exit value here, just for fun. */
|
||||
/* TODO actually use the exit value here, just for fun. */
|
||||
__asm__ __volatile__ (
|
||||
"mov x1, #0x26\n" \
|
||||
"movk x1, #2, lsl #16\n" \
|
||||
"str x1, [sp,#0]\n" \
|
||||
"mov x0, #0\n" \
|
||||
"str x0, [sp,#8]\n" \
|
||||
"mov x1, sp\n" \
|
||||
"mov w0, #0x18\n" \
|
||||
"hlt 0xf000\n"
|
||||
"mov x1, #0x26\n" \
|
||||
"movk x1, #2, lsl #16\n" \
|
||||
"str x1, [sp,#0]\n" \
|
||||
"mov x0, #0\n" \
|
||||
"str x0, [sp,#8]\n" \
|
||||
"mov x1, sp\n" \
|
||||
"mov w0, #0x18\n" \
|
||||
"hlt 0xf000\n"
|
||||
);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user