summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Kling <anton@kling.gg>2023-10-30 21:47:59 +0100
committerAnton Kling <anton@kling.gg>2023-10-30 21:49:48 +0100
commitca76600acc8bf7a02346efa5bd8f17072210ec01 (patch)
tree4ebf2fd205701d1582afb33420028621cab6c674
parent5a339a9b7b5cdcee3629b14f1b6a58ac4ab60fce (diff)
Cleanup of things that did not get formatted or not included in old commits
-rw-r--r--arch/i386/mmu.c10
-rw-r--r--cpu/idt.h18
-rw-r--r--elf.c2
-rw-r--r--fs/ext2.c2
-rw-r--r--includes/mmu.h2
-rw-r--r--init/kernel.c2
6 files changed, 16 insertions, 20 deletions
diff --git a/arch/i386/mmu.c b/arch/i386/mmu.c
index 6fff8f2..ccfe894 100644
--- a/arch/i386/mmu.c
+++ b/arch/i386/mmu.c
@@ -130,7 +130,6 @@ void flush_tlb(void) {
}
uint32_t first_free_frame(void) {
- asm("cli");
for (uint32_t i = 1; i < INDEX_FROM_BIT(num_of_frames); i++) {
if (frames[i] == 0xFFFFFFFF)
continue;
@@ -315,11 +314,12 @@ void *mmu_find_unallocated_virtual_range(void *addr, size_t length) {
return addr;
}
-int mmu_allocate_region(void *ptr, size_t n, mmu_flags flags) {
+int mmu_allocate_region(void *ptr, size_t n, mmu_flags flags,
+ PageDirectory *pd) {
+ pd = (pd) ? pd : get_active_pagedirectory();
size_t num_pages = n / 0x1000;
for (size_t i = 0; i <= num_pages; i++) {
- Page *p = get_page((void *)(ptr + i * 0x1000), get_active_pagedirectory(),
- PAGE_ALLOCATE, 1);
+ Page *p = get_page((void *)(ptr + i * 0x1000), pd, PAGE_ALLOCATE, 1);
assert(p);
int rw = (flags & MMU_FLAG_RW);
int kernel = (flags & MMU_FLAG_KERNEL);
@@ -433,7 +433,7 @@ extern uint32_t inital_esp;
void __attribute__((optimize("O0")))
move_stack(uint32_t new_stack_address, uint32_t size) {
mmu_allocate_region((void *)(new_stack_address - size), size,
- MMU_FLAG_KERNEL);
+ MMU_FLAG_KERNEL, NULL);
uint32_t old_stack_pointer, old_base_pointer;
diff --git a/cpu/idt.h b/cpu/idt.h
index 853b1e0..025ba75 100644
--- a/cpu/idt.h
+++ b/cpu/idt.h
@@ -54,19 +54,13 @@ typedef struct registers registers_t;
struct interrupt_frame;
-struct kernel_registers {
- // uint32_t ds;
- // uint32_t edi, esi, ebp, esp, ebx, edx, ecx, eax;
- // uint32_t interrupt_number, error_code;
- uint32_t error_code;
- uint32_t eip, cs, eflags;
-};
-
struct registers {
- uint32_t ds;
- uint32_t edi, esi, ebp, esp, ebx, edx, ecx, eax;
- uint32_t interrupt_number, error_code;
- uint32_t eip, cs, eflags, useresp, ss;
+ uint32_t error_code;
+ uint32_t eip;
+ uint32_t cs;
+ uint32_t eflags;
+ uint32_t esp;
+ uint32_t ss;
};
void idt_init(void);
diff --git a/elf.c b/elf.c
index ca8f89d..7316a0c 100644
--- a/elf.c
+++ b/elf.c
@@ -51,7 +51,7 @@ void *load_elf_file(const char *f, uint32_t *ds) {
pages_to_allocate /= 0x1000;
mmu_allocate_region((void *)p_vaddr, pages_to_allocate * 0x1000,
- MMU_FLAG_RW);
+ MMU_FLAG_RW, NULL);
flush_tlb();
diff --git a/fs/ext2.c b/fs/ext2.c
index 2c0f727..bd0fb07 100644
--- a/fs/ext2.c
+++ b/fs/ext2.c
@@ -64,7 +64,7 @@ void ext2_read_block(uint32_t block, void *address, size_t size,
void ext2_write_block(uint32_t block, void *address, size_t size,
size_t offset) {
- // Invalidate a old cache
+ // Invalidate a old cache
for (int i = 0; i < NUM_BLOCK_CACHE; i++) {
if (cache[i].block_num == block) {
cache[i].block_num = 0;
diff --git a/includes/mmu.h b/includes/mmu.h
index 39c951b..1df337d 100644
--- a/includes/mmu.h
+++ b/includes/mmu.h
@@ -31,7 +31,7 @@ typedef struct PageDirectory {
uint32_t physical_address;
} PageDirectory;
-int mmu_allocate_region(void *ptr, size_t n, mmu_flags flags);
+int mmu_allocate_region(void *ptr, size_t n, mmu_flags flags, PageDirectory *pd);
void mmu_allocate_shared_kernel_region(void *rc, size_t n);
void *mmu_find_unallocated_virtual_range(void *addr, size_t length);
void mmu_remove_virtual_physical_address_mapping(void *ptr, size_t length);
diff --git a/init/kernel.c b/init/kernel.c
index 9f507e0..8c0f70c 100644
--- a/init/kernel.c
+++ b/init/kernel.c
@@ -8,6 +8,7 @@
#include <drivers/keyboard.h>
#include <drivers/mouse.h>
#include <drivers/pit.h>
+#include <drivers/rtl8139.h>
#include <drivers/serial.h>
#include <drivers/vbe.h>
#include <fs/devfs.h>
@@ -86,6 +87,7 @@ void kernel_main(uint32_t kernel_end, unsigned long magic, unsigned long addr,
add_keyboard();
add_mouse();
+ rtl8139_init();
display_driver_init(mb);
add_vbe_device();