syscall test
This commit is contained in:
@@ -1,14 +1,14 @@
|
||||
#include "syscall/handler.h"
|
||||
|
||||
#include "arch/core.h"
|
||||
#include "arch/core_interrupt.h"
|
||||
#include "arch/gdt.h"
|
||||
#include "arch/idt.h"
|
||||
#include "debug/kernelpanic.h"
|
||||
#include "debug/output.h"
|
||||
#include "interrupt/guard.h"
|
||||
#include "syscall/skeleton.h"
|
||||
#include "syscall/stub.h"
|
||||
#include "../arch/core.h"
|
||||
#include "../arch/core_interrupt.h"
|
||||
#include "../arch/gdt.h"
|
||||
#include "../arch/idt.h"
|
||||
#include "../debug/kernelpanic.h"
|
||||
#include "../debug/output.h"
|
||||
#include "../interrupt/guard.h"
|
||||
#include "../syscall/skeleton.h"
|
||||
#include "../syscall/stub.h"
|
||||
#include "types.h"
|
||||
|
||||
/*! \brief Interrupt based system call entry function
|
||||
@@ -46,11 +46,22 @@ extern "C" size_t syscall_handler(size_t sysnum, size_t p1, size_t p2,
|
||||
(void)p5;
|
||||
(void)sysnum;
|
||||
(void)user;
|
||||
|
||||
switch ((Syscall::ID)sysnum) {
|
||||
case Syscall::ID::TEST:
|
||||
Syscall::Skeleton::test(Guard::enter().vault(), p1, p2, p3, p4, p5);
|
||||
break;
|
||||
case Syscall::ID::WRITE:
|
||||
break;
|
||||
}
|
||||
|
||||
return static_cast<size_t>(-1);
|
||||
}
|
||||
|
||||
void init() {
|
||||
// Set interrupt based syscall handler
|
||||
IDT::set(Core::Interrupt::Vector::SYSCALL, IDT::InterruptDescriptor::Returning(syscall_entry, 0, IDT::DPL_USER));
|
||||
IDT::load();
|
||||
}
|
||||
|
||||
} // namespace Syscall
|
||||
|
||||
@@ -6,5 +6,7 @@
|
||||
align 8
|
||||
sys_call:
|
||||
; BSB2 1 - Syscall stub
|
||||
int 0x80
|
||||
ret
|
||||
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ namespace Syscall {
|
||||
*/
|
||||
enum class ID : size_t {
|
||||
TEST = 0,
|
||||
WRITE = 1,
|
||||
};
|
||||
} // namespace Syscall
|
||||
|
||||
|
||||
Reference in New Issue
Block a user