Skip to content

Commit

Permalink
Improved virtual machine panic handler.
Browse files Browse the repository at this point in the history
  • Loading branch information
nthnn committed Feb 19, 2024
1 parent 2e4bb8e commit 5dd2193
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 16 deletions.
6 changes: 3 additions & 3 deletions src/rishka_errors.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,12 +28,12 @@ void rishka_perror(const char* msg, uintptr_t len, bool flush) {
}
}

void rishka_panic(const char* message) {
void rishka_panic(const char* message, rishka_virtual_machine* vm) {
size_t len = strlen(message);

if(len > 0)
rishka_perror(message, len, true);

while(true)
vTaskDelay(10);
vm->running = false;
vm->exitcode = -1;
}
3 changes: 2 additions & 1 deletion src/rishka_errors.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,9 @@
#define RISHKA_ERRORS_H

#include <rishka_commons.h>
#include <rishka_vm.h>

void rishka_perror(const char* msg, uintptr_t len, bool flush);
void rishka_panic(const char* message);
void rishka_panic(const char* message, rishka_virtual_machine* vm);

#endif
24 changes: 12 additions & 12 deletions src/rishka_vm.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ void rishka_vm_execute(rishka_virtual_machine* vm, uint32_t inst) {
break;

default:
rishka_panic("Invalid load instruction.");
rishka_panic("Invalid load instruction.", vm);
break;
}

Expand Down Expand Up @@ -116,7 +116,7 @@ void rishka_vm_execute(rishka_virtual_machine* vm, uint32_t inst) {
break;

default:
rishka_panic("Invalid store instruction.");
rishka_panic("Invalid store instruction.", vm);
break;
}
break;
Expand Down Expand Up @@ -165,7 +165,7 @@ void rishka_vm_execute(rishka_virtual_machine* vm, uint32_t inst) {
break;

default:
rishka_panic("Invalid immediate shift instruction.");
rishka_panic("Invalid immediate shift instruction.", vm);
break;
}
break;
Expand All @@ -181,7 +181,7 @@ void rishka_vm_execute(rishka_virtual_machine* vm, uint32_t inst) {
}

default:
rishka_panic("Invalid immediate instruction.");
rishka_panic("Invalid immediate instruction.", vm);
break;
}

Expand Down Expand Up @@ -218,15 +218,15 @@ void rishka_vm_execute(rishka_virtual_machine* vm, uint32_t inst) {
break;

default:
rishka_panic("Invalid immediate shift instruction.");
rishka_panic("Invalid immediate shift instruction.", vm);
break;
}

break;
}

default:
rishka_panic("Invalid immediate instruction.");
rishka_panic("Invalid immediate instruction.", vm);
break;
}

Expand Down Expand Up @@ -343,7 +343,7 @@ void rishka_vm_execute(rishka_virtual_machine* vm, uint32_t inst) {
}

default:
rishka_panic("Invalid arithmetic instruction.");
rishka_panic("Invalid arithmetic instruction.", vm);
break;
}

Expand Down Expand Up @@ -426,7 +426,7 @@ void rishka_vm_execute(rishka_virtual_machine* vm, uint32_t inst) {
}

default:
rishka_panic("Invalid store doubleword instruction.");
rishka_panic("Invalid store doubleword instruction.", vm);
break;
}

Expand Down Expand Up @@ -506,7 +506,7 @@ void rishka_vm_execute(rishka_virtual_machine* vm, uint32_t inst) {
break;

default:
rishka_panic("Invalid branch instruction.");
rishka_panic("Invalid branch instruction.", vm);
break;
}

Expand Down Expand Up @@ -537,15 +537,15 @@ void rishka_vm_execute(rishka_virtual_machine* vm, uint32_t inst) {
break;

default:
rishka_panic("Invalid system instruction.");
rishka_panic("Invalid system instruction.", vm);
break;
}

break;
}

default:
rishka_panic("Invalid opcode instruction.");
rishka_panic("Invalid opcode instruction.", vm);
break;
}

Expand Down Expand Up @@ -633,7 +633,7 @@ uint64_t rishka_vm_handle_syscall(rishka_virtual_machine* vm, uint64_t code) {
return (uint64_t) rishka_syscall_rt_strpass();

default:
rishka_panic("Invalid system call.");
rishka_panic("Invalid system call.", vm);
break;
}

Expand Down

0 comments on commit 5dd2193

Please sign in to comment.