From 14b109ea24dc5cb1db948de57a2a44c80ef4622e Mon Sep 17 00:00:00 2001 From: Brett Weiland Date: Wed, 24 Mar 2021 15:36:54 -0500 Subject: modified: README.md modified: compiler/create_crosscompiler.sh deleted: notes modified: src/.gdb_history deleted: src/amd64_vol2.pdf modified: src/bootloader/bios_functions/bios_disk.asm modified: src/bootloader/bios_functions/print.asm modified: src/bootloader/bootloader.asm modified: src/bootloader/cpu_check.asm modified: src/bootloader/enter_kernel.asm deleted: src/bootloader/enter_kernel_backup modified: src/bootloader/gdt.asm deleted: src/bootloader/multicore.asm deleted: src/bootloader/notes new file: src/debug/gdbinit.gdb deleted: src/indigo_os modified: src/kernel/include/libc.h modified: src/kernel/include/paging.h modified: src/kernel/include/video.h modified: src/kernel/kernel.c modified: src/kernel/libs/acpi.c modified: src/kernel/libs/drivers/serial.c modified: src/kernel/libs/drivers/video.c modified: src/kernel/libs/libc.c modified: src/kernel/libs/page.c modified: src/link.ld modified: src/makefile new file: tools/README.md modified: tools/page/page.py --- src/kernel/include/libc.h | 2 ++ src/kernel/include/paging.h | 27 +++++++++++++++++++-------- src/kernel/include/video.h | 2 ++ 3 files changed, 23 insertions(+), 8 deletions(-) (limited to 'src/kernel/include') diff --git a/src/kernel/include/libc.h b/src/kernel/include/libc.h index 7e837ae..cdf6dbc 100644 --- a/src/kernel/include/libc.h +++ b/src/kernel/include/libc.h @@ -7,4 +7,6 @@ int strncmp(const char *str1, const char *str2, size_t n); void strcpy(char *dest, char *src); void memcpy(void *dest, void *src, size_t n); //TODO int memcmp(const void *s1, const void *s2, size_t n); +void bzero(const void *dest, size_t size); +int ceil(float n1); #endif diff --git a/src/kernel/include/paging.h b/src/kernel/include/paging.h index 3b89af9..267da43 100644 --- a/src/kernel/include/paging.h +++ b/src/kernel/include/paging.h @@ -24,7 +24,7 @@ typedef struct __attribute__((packed)) { unsigned int software_marks : 3; // available for our own use, I doubt we'll use it in such a simple thing uintptr_t base_ptr : 40; - unsigned int available:11; + unsigned int sign:11; } page_entry; @@ -35,11 +35,11 @@ typedef struct __attribute__((packed)) { page_entry pte[512]; } page_table; -#define MEM_AVAILABLE 0 -#define MEM_RESERVED 1 -#define MEM_APCI_RECLAIMABLE 2 -#define MEM_APCI_NVS 3 -#define MEM_BAD 4 +#define MEM_AVAILABLE 1 +#define MEM_RESERVED 2 +#define MEM_APCI_RECLAIMABLE 3 +#define MEM_APCI_NVS 4 +#define MEM_BAD 5 #define PAGE_SIZE_4K 12 #define PAGE_SIZE_2M 21 @@ -49,12 +49,23 @@ struct memory_table { uint64_t base; uint64_t length; uint32_t type; - uint32_t ACPI; //we'll never use this + uint32_t ACPI; +} __attribute__((packed)); + +struct phys_map { + uint64_t map_size; //this way we won't have to calculate it every time + void *chunk_start; + uint64_t chunk_size; + uint64_t *buddies; } __attribute__((packed)); extern void* _meminfo_loc; +extern void* _stage2_pagetable; -bool map_page(uintptr_t virtual_addr, uintptr_t physical_addr, uint8_t PAGE_SIZE); +bool map_page(void *virtual_addr, void *physical_addr, uint8_t PAGE_SIZE); void debug_print_memory(); +void create_pagetable_stage2(uint64_t free_mem); +void init_memory(); #endif + diff --git a/src/kernel/include/video.h b/src/kernel/include/video.h index 6f702b1..82d3423 100644 --- a/src/kernel/include/video.h +++ b/src/kernel/include/video.h @@ -47,3 +47,5 @@ struct vbe_infoblock { uint32_t videomodeptr; uint16_t total_memory; } __attribute__((packed)); + +extern void *_vbe_infoblock; -- cgit v1.2.3