diff --git a/arch/linux/tui/main.c b/arch/linux/tui/main.c index 42aba91..7be250f 100644 --- a/arch/linux/tui/main.c +++ b/arch/linux/tui/main.c @@ -18,8 +18,8 @@ bool init_vm() { return true; } -u32 syscall(u32 id, u32 size, u32 mem_ptr) { - USED(size); +u32 syscall(u32 id, u32 device, u32 mem_ptr) { + USED(device); switch(id) { case SYSCALL_CONSOLE_WRITE: { u32 size = *(u32*)&mem[mem_ptr]; @@ -30,6 +30,7 @@ u32 syscall(u32 id, u32 size, u32 mem_ptr) { return 0; } case SYSCALL_CONSOLE_READ: { + u32 size; u8 *ptr = &mem[mp]; mcpy(ptr, &size, sizeof(u32)); ptr += 4; diff --git a/vm/vm.c b/vm/vm.c index b6f46da..e371ceb 100644 --- a/vm/vm.c +++ b/vm/vm.c @@ -608,7 +608,7 @@ bool step_vm() { u32 i = 0, j = 0; i32 q = (i32)locals[src1]; - char buffer[MAX_LEN_INT32]; + char buffer[12]; u32 int_part, frac_part; if (q < 0) { @@ -641,7 +641,7 @@ bool step_vm() { frac_part &= 0xFFFF; } - locals[dest] = str_alloc(buffer + i, MAX_LEN_INT32 - i); + locals[dest] = str_alloc(buffer + i, 12 - i); return pc; } diff --git a/vm/vm.h b/vm/vm.h index d7d797e..18e50d7 100644 --- a/vm/vm.h +++ b/vm/vm.h @@ -32,7 +32,7 @@ typedef enum { OP_HALT, /* halt : A : all zeros : halt execution */ OP_CALL, /* call : A : dest args return : creates a new frame */ OP_RETURN, /* return : B : dest return_flags : returns from a frame to the parent frame */ - OP_SYSCALL, /* syscall : A : id args mem_ptr : does a system call based on id with args */ + OP_SYSCALL, /* syscall : A : id device mem_ptr : does a system call based on id with args */ OP_LOAD_IMM, /* load_immediate : B : locals[dest] = const as u16 */ OP_LOAD_UPPER_IMM, /* load_upper_immediate : B : locals[dest] = const as u32 << 16 | u16 */ OP_LOAD_IND_8, /* load_indirect_8 : A : locals[dest] = memory[locals[src1]] as u8 */