diff options
Diffstat (limited to 'kernel/src/cpu')
| -rw-r--r-- | kernel/src/cpu/io.c | 5 | ||||
| -rw-r--r-- | kernel/src/cpu/tss.c | 5 |
2 files changed, 8 insertions, 2 deletions
diff --git a/kernel/src/cpu/io.c b/kernel/src/cpu/io.c index 1a68f08..a5adfd6 100644 --- a/kernel/src/cpu/io.c +++ b/kernel/src/cpu/io.c @@ -12,3 +12,8 @@ void outb(uint32_t port, uint8_t value) { __asm__ volatile ("outb %%al, %%dx;" : : "d"(port), "a"(value)); } + +void io_wait(void) +{ + outb(0x80, 0); +} diff --git a/kernel/src/cpu/tss.c b/kernel/src/cpu/tss.c index 0dfa18e..d2c16d3 100644 --- a/kernel/src/cpu/tss.c +++ b/kernel/src/cpu/tss.c @@ -12,9 +12,10 @@ void load_tss() void init_tss() { + memset(&tss, 0, sizeof(tss_type)); tss.iopb = sizeof(tss_type); - uint64_t stack = (uint64_t)kalloc(4096*4); - stack = (uint64_t)kalloc(4096*4) + 8; + uint32_t stack_size = 4096*4; + uint64_t stack = (uint64_t)kalloc(stack_size) + stack_size - 8; tss.rsp0_low = (uint32_t)stack; tss.rsp0_high = (uint32_t)(stack >> 32); |
