Merge branch 'main' of gitlab.ibr.cs.tu-bs.de:vss/teaching/ss25/v_bsb1/Gruppe_018
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,3 +1,4 @@
|
||||
.build*
|
||||
/build*
|
||||
/tools/qemu.mk
|
||||
/tools/remote.mk
|
||||
|
||||
@@ -28,7 +28,7 @@ constexpr uintptr_t FLAG_ENABLE = 1 << 9;
|
||||
*
|
||||
* \see [ISDMv3, 6.15 Exception and Interrupt
|
||||
* Reference](intel_manual_vol3.pdf#page=203)
|
||||
* \todo(12) Add Keyboard and Panic vector numbers
|
||||
* \todo
|
||||
*/
|
||||
enum Vector {
|
||||
// Predefined Exceptions
|
||||
@@ -67,6 +67,8 @@ enum Vector {
|
||||
SECURITY_EXCEPTION = 31,
|
||||
|
||||
// Interrupts
|
||||
Keyboard=32,
|
||||
PANIC=33
|
||||
};
|
||||
constexpr size_t VECTORS = 256;
|
||||
|
||||
|
||||
@@ -11,4 +11,27 @@ handle_keyboard_asm:
|
||||
; continue. The C++ compiler will only generates code to preserve
|
||||
; non-scratch registers in the high-level interrupt handler -- the scratch
|
||||
; registers have to be saved (and restored later) manually!
|
||||
; TODO(12): Implement the context save and restore for the keyboard interrupt
|
||||
; TODO: Implement the context save and restore for the keyboard interrupt
|
||||
;
|
||||
;
|
||||
push rax;
|
||||
push rdi;
|
||||
push rsi;
|
||||
push rdx;
|
||||
push rcx;
|
||||
push r8;
|
||||
push r9;
|
||||
push r10;
|
||||
push r11;
|
||||
call handle_keyboard;
|
||||
pop r11;
|
||||
pop r10;
|
||||
pop r9;
|
||||
pop r8;
|
||||
pop rcx;
|
||||
pop rdx;
|
||||
pop rsi;
|
||||
pop rdi;
|
||||
pop rax;
|
||||
|
||||
iret ;
|
||||
|
||||
@@ -68,7 +68,9 @@ enum PAGE_FAULT_ERROR {
|
||||
void handle_keyboard() {}
|
||||
|
||||
[[gnu::interrupt]] void handle_panic(InterruptContext *context) {
|
||||
(void)context;
|
||||
DBG << "Generic KernelPanic triggered"<< endl;
|
||||
printContext(context);
|
||||
kernelpanic("Generic Panic Triggerd");
|
||||
}
|
||||
|
||||
[[gnu::interrupt]] void handle_timer(InterruptContext *context) {
|
||||
|
||||
@@ -82,7 +82,7 @@ void handle_keyboard();
|
||||
|
||||
/*! \brief handle_panic
|
||||
*
|
||||
* \todo(12) Trigger a kernel panic
|
||||
* \todo Trigger a kernel panic
|
||||
*/
|
||||
[[gnu::interrupt]] void handle_panic(InterruptContext *context);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user