diff options
| author | Aleksa Vuckovic <aleksa@vuckovic.cc> | 2023-02-22 17:31:52 +0100 |
|---|---|---|
| committer | Aleksa Vuckovic <aleksa@vuckovic.cc> | 2023-02-22 17:36:02 +0100 |
| commit | 57e6722453c27d35a3b02309ce21263d225a23e3 (patch) | |
| tree | 7469dce46d063ddc7a3f3a7da6dcff928730488a /kernel/include | |
| parent | 2bb4e7fb4c0f5895148bb32da64381b985c8dcef (diff) | |
curr_cpu_apic_id() now works on old amd cpus
Diffstat (limited to 'kernel/include')
| -rw-r--r-- | kernel/include/gdt.h | 2 | ||||
| -rw-r--r-- | kernel/include/idt.h | 1 | ||||
| -rw-r--r-- | kernel/include/kcpuid.h | 17 | ||||
| -rw-r--r-- | kernel/include/msr.h | 9 | ||||
| -rw-r--r-- | kernel/include/paging.h | 5 |
5 files changed, 34 insertions, 0 deletions
diff --git a/kernel/include/gdt.h b/kernel/include/gdt.h index 4c84fe9..ca2cc0e 100644 --- a/kernel/include/gdt.h +++ b/kernel/include/gdt.h @@ -37,4 +37,6 @@ void reload_gdt(void); void load_gdt(gdt_p* pointer); void init_gdt(void); +extern gdt_p gdt_pointer; + #endif diff --git a/kernel/include/idt.h b/kernel/include/idt.h index cc2278a..f6d2247 100644 --- a/kernel/include/idt.h +++ b/kernel/include/idt.h @@ -30,5 +30,6 @@ void load_idt(idtp* pointer); void init_idt_table(void); void add_to_idt(uint16_t num, uint64_t offset, uint16_t selector, uint8_t type); +extern idtp idt_pointer; #endif diff --git a/kernel/include/kcpuid.h b/kernel/include/kcpuid.h new file mode 100644 index 0000000..f3a0e0c --- /dev/null +++ b/kernel/include/kcpuid.h @@ -0,0 +1,17 @@ +#ifndef KCPUID_H +#define KCPUID_H + +#include <types.h> + +struct CPUIDinfo +{ + uint32_t EAX; + uint32_t EBX; + uint32_t ECX; + uint32_t EDX; +}; +typedef struct CPUIDinfo CPUIDinfo; + +void kcpuid(uint32_t func, uint32_t subfunc, CPUIDinfo* info); + +#endif diff --git a/kernel/include/msr.h b/kernel/include/msr.h new file mode 100644 index 0000000..356e52c --- /dev/null +++ b/kernel/include/msr.h @@ -0,0 +1,9 @@ +#ifndef MSR_H +#define MSR_H + +#include <types.h> + +uint64_t read_msr(uint32_t addr); +void write_msr(uint32_t addr, uint64_t value); + +#endif diff --git a/kernel/include/paging.h b/kernel/include/paging.h index 71552d1..c56c8e8 100644 --- a/kernel/include/paging.h +++ b/kernel/include/paging.h @@ -9,8 +9,13 @@ #define FLAG_USER 0x4 #define FLAG_HUGE 0x80 +void load_pt_lvl4(uint64_t*); void init_paging(void); void map_addr(uint64_t virt, uint64_t phys, uint32_t flags); void page_fault(uint64_t error); +extern uint64_t __attribute__((aligned(4096))) page_table_lvl4[512]; +extern uint64_t __attribute__((aligned(4096))) page_table_lvl3[512]; +extern uint64_t __attribute__((aligned(4096))) page_table_lvl2[512]; + #endif |
