GDT is running again
This commit is contained in:
@ -46,7 +46,7 @@ _start:
|
||||
|
||||
call early_main
|
||||
cli
|
||||
|
||||
.global load_gdt
|
||||
load_gdt:
|
||||
lgdt gdt
|
||||
|
||||
|
@ -2,6 +2,8 @@
|
||||
#include "../tty/kterm.h"
|
||||
|
||||
gdtEntry_t gdt[3];
|
||||
gdtSegmentPointer gdtPointer{};
|
||||
|
||||
|
||||
|
||||
void gdtSetGate(int num, uint64_t base, uint64_t limit, uint8_t access,
|
||||
@ -18,14 +20,12 @@ void gdtSetGate(int num, uint64_t base, uint64_t limit, uint8_t access,
|
||||
}
|
||||
|
||||
void setupGdt(){
|
||||
|
||||
printf("setupGdt is called!");
|
||||
gdtPointer.limit = (sizeof(gdtEntry_t) * 3) - 1;
|
||||
gdtPointer.base = &gdt;
|
||||
gdtPointer.base = (uint32_t) &gdt;
|
||||
|
||||
gdtSetGate(0, 0, 0, 0, 0);
|
||||
gdtSetGate(1, 0, 0xFFFFFFFF, 0x9A, 0xCF);
|
||||
gdtSetGate(2, 0, 0xFFFFFFFF, 0x92, 0xCF);
|
||||
|
||||
loadGdt();
|
||||
printf("call to load gdt\n");
|
||||
load_gdt();
|
||||
}
|
||||
|
@ -10,11 +10,13 @@ typedef struct {
|
||||
uint8_t hBase;
|
||||
} gdtEntry_t;
|
||||
|
||||
struct {
|
||||
struct gdtSegmentPointer {
|
||||
uint16_t limit;
|
||||
uint32_t base;
|
||||
} gdtPointer;
|
||||
};
|
||||
|
||||
extern void loadGdt();
|
||||
extern gdtSegmentPointer gdtPointer;
|
||||
|
||||
extern void load_gdt();
|
||||
void setupGdt();
|
||||
}
|
@ -26,17 +26,18 @@
|
||||
printf("kernel: 0x%x - 0x%x\n", &kernel_begin , &kernel_end);
|
||||
}
|
||||
|
||||
|
||||
//setupGdt();
|
||||
printf("Call to setupGdt!\n");
|
||||
setupGdt();
|
||||
|
||||
|
||||
}
|
||||
|
||||
extern "C" void kernel_main (void) {
|
||||
|
||||
printf("call to init serial\n");
|
||||
init_serial();
|
||||
|
||||
while (false){
|
||||
while (true){
|
||||
//Read time indefinetely
|
||||
read_rtc();
|
||||
printf( "UTC time: %02d-%02d-%02d %02d:%02d:%02d [ Formatted as YY-MM-DD h:mm:ss]\r" ,year, month, day, hour, minute, second);
|
||||
|
Reference in New Issue
Block a user