mtops.h is perfect now

This commit is contained in:
Ciro Santilli 六四事件 法轮功
2019-05-05 00:00:00 +00:00
parent 1cc3ee8657
commit 8618025682
21 changed files with 313 additions and 202 deletions

View File

@@ -1,3 +1,5 @@
#include <lkmc/m5ops.h>
.global mystart
mystart:
mov x0, #0; .inst 0XFF000110 | (0x21 << 16);
LKMC_M5OPS_EXIT_ASM

View File

@@ -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

View File

@@ -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");