summaryrefslogtreecommitdiff
path: root/kernel/src/apic/madt.c
diff options
context:
space:
mode:
authorAleksa Vuckovic <aleksa@vuckovic.cc>2023-03-02 20:30:55 +0100
committerAleksa Vuckovic <aleksa@vuckovic.cc>2023-03-02 20:30:55 +0100
commitfbc2cc52c8a38c3c63a34f5547ba7c4209a667ac (patch)
tree985e3b96308123dc1771abfc30e9fe4f8daac5f4 /kernel/src/apic/madt.c
parent1e1c00c09991846257af4c8e50a177178355d986 (diff)
scheduling usermode processes & code refactoring
Diffstat (limited to 'kernel/src/apic/madt.c')
-rw-r--r--kernel/src/apic/madt.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/kernel/src/apic/madt.c b/kernel/src/apic/madt.c
index 2ddf90f..d45b1cb 100644
--- a/kernel/src/apic/madt.c
+++ b/kernel/src/apic/madt.c
@@ -66,25 +66,28 @@ void madt_parse_lapic_addr_ovr(uint64_t *addr)
void parse_madt()
{
uint64_t *madt_addr = find_sys_table_addr("APIC");
+ struct MADT *madt;
+ size_t curr_size;
+ uint8_t type;
+ uint8_t len;
if (madt_addr == NULL) {
printf("MADT NOT FOUND\n");
return;
}
- struct MADT *madt = (struct MADT *)kalloc(sizeof(struct MADT));
+ madt = (struct MADT *)kalloc(sizeof(struct MADT));
memcpy(madt, madt_addr, sizeof(struct MADT));
lapic_addr = madt->lapic_addr;
- size_t curr_size;
for (curr_size = sizeof(struct MADT); curr_size < madt->h.Length;) {
struct MADT_type_header *m = (struct MADT_type_header *)kalloc(
sizeof(struct MADT_type_header));
memcpy(m,
(uint64_t *)((uint64_t)madt_addr + (uint64_t)curr_size),
sizeof(struct MADT_type_header));
- uint8_t type = m->type;
- uint8_t len = m->len;
+ type = m->type;
+ len = m->len;
kfree(m);
switch (type) {