diff options
| author | Aleksa Vuckovic <aleksav013@gmail.com> | 2022-12-02 00:56:33 +0100 |
|---|---|---|
| committer | Aleksa Vuckovic <aleksav013@gmail.com> | 2022-12-02 00:56:33 +0100 |
| commit | ae5499137e377e08feb523c08b26495e79ed16df (patch) | |
| tree | 225f97cce28e31e064f08670cc9feb7ba101a45f /kernel/src/cpu | |
| parent | 9b3dd99abc763f5e2039933eda510ec62d395f8a (diff) | |
now also working on amd cpus
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); |
