Hal/ kernel/ common/ util/ they are now separated
This commit is contained in:
parent
13b8912474
commit
d5912f4a7a
|
@ -1,7 +1,7 @@
|
|||
#ifndef _IO_H_
|
||||
#define _IO_H_
|
||||
#include "kdef.h"
|
||||
#include "type.h"
|
||||
#include "../common/kdef.h"
|
||||
#include "../common/type.h"
|
||||
extern void NATIVE64 write_port(uint64_t port, int64_t data);
|
||||
extern int64_t NATIVE64 read_port(uint64_t port);
|
||||
#endif
|
|
@ -1,6 +1,5 @@
|
|||
#include <stddef.h>
|
||||
#include "kdef.h"
|
||||
#include "type.h"
|
||||
#include "../common/kdef.h"
|
||||
#include "../common/type.h"
|
||||
#include "mm.h"
|
||||
|
||||
#define kernel_heap_size 4096
|
||||
|
@ -71,6 +70,27 @@ void NATIVE64 write_pml4_entry(void *const base, uint64_t const pdpt_addr, uint6
|
|||
return;
|
||||
}
|
||||
|
||||
void NATIVE64 write_gate(void *const gate, uint64_t const offset, uint32_t const selector, uint32_t const attr)
|
||||
{
|
||||
((uint8_t*)gate)[0] = (uint8_t)(offset & 0xFF);
|
||||
((uint8_t*)gate)[1] = (uint8_t)((offset >> 8) & 0xFF);
|
||||
((uint8_t*)gate)[2] = (uint8_t)(selector & 0xFF);
|
||||
((uint8_t*)gate)[3] = (uint8_t)((selector >> 8) & 0xFF);
|
||||
((uint8_t*)gate)[4] = (uint8_t)(attr & 0xFF);
|
||||
((uint8_t*)gate)[5] = (uint8_t)((attr >> 8) & 0xFF);
|
||||
((uint8_t*)gate)[6] = (uint8_t)((offset >> 16) & 0xFF);
|
||||
((uint8_t*)gate)[7] = (uint8_t)((offset >> 24) & 0xFF);
|
||||
((uint8_t*)gate)[8] = (uint8_t)((offset >> 32) & 0xFF);
|
||||
((uint8_t*)gate)[9] = (uint8_t)((offset >> 40) & 0xFF);
|
||||
((uint8_t*)gate)[10] = (uint8_t)((offset >> 48) & 0xFF);
|
||||
((uint8_t*)gate)[11] = (uint8_t)((offset >> 56) & 0xFF);
|
||||
((uint8_t*)gate)[12] = 0;
|
||||
((uint8_t*)gate)[13] = 0;
|
||||
((uint8_t*)gate)[14] = 0;
|
||||
((uint8_t*)gate)[15] = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
void NATIVE64 write_segment_descriptor(void *const gdt, uint32_t const base, uint32_t const limit, uint64_t const attr)
|
||||
{
|
||||
if (gdt == NULL)
|
|
@ -1,9 +1,8 @@
|
|||
#ifndef _MM_H_
|
||||
#define _MM_H_
|
||||
|
||||
#include "type.h"
|
||||
#include "kdef.h"
|
||||
#include "linked_list.h"
|
||||
#include "../common/kdef.h"
|
||||
#include "../common/type.h"
|
||||
#define PML4_PRESENT (1ull << 0)
|
||||
#define PML4_WRITE (1ull << 1)
|
||||
#define PML4_USER (1ull << 2)
|
||||
|
@ -56,6 +55,15 @@
|
|||
#define SEG_AVAILABLE (1ull << 52)
|
||||
#define SEG_32_BITS (1ull << 54)
|
||||
|
||||
#define GATE_DPL_0 (0ull << 13)
|
||||
#define GATE_DPL_1 (1ull << 13)
|
||||
#define GATE_DPL_2 (2ull << 13)
|
||||
#define GATE_DPL_3 (3ull << 13)
|
||||
#define GATE_PRESENT (1ull << 15)
|
||||
#define GATE_TYPE_CALL (12ull << 8)
|
||||
#define GATE_TYPE_INTERRUPT (14ull << 8)
|
||||
#define GATE_TYPE_TRAP (15ull << 8)
|
||||
|
||||
#define PML4_ENTRY_NUM(mem) ((mem) / (4096ull * 512ull * 512ull * 512ull))
|
||||
#define PDPT_ENTRY_NUM(mem) ((mem) / (4096ull * 512ull * 512ull))
|
||||
#define PD_ENTRY_NUM(mem) ((mem) / (4096ull*512ull))
|
||||
|
@ -104,4 +112,6 @@ void NATIVE64 write_pd_entry(void *const base, uint64_t const pt_addr, uint64_t
|
|||
|
||||
void NATIVE64 write_pt_entry(void *const base, uint64_t const p_addr, uint64_t const attr);
|
||||
|
||||
void NATIVE64 write_gate(void *const gate, uint64_t const offset, uint32_t const selector, uint32_t const attr);
|
||||
|
||||
#endif
|
|
@ -1,6 +1,6 @@
|
|||
#include <stdarg.h>
|
||||
#include "kdef.h"
|
||||
#include "type.h"
|
||||
#include "../common/kdef.h"
|
||||
#include "../common/type.h"
|
||||
#include "mm.h"
|
||||
#include "print.h"
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
#ifndef _PRINT_H_
|
||||
#define _PRINT_H_
|
||||
#include "type.h"
|
||||
#include "kdef.h"
|
||||
#include "../common/kdef.h"
|
||||
#include "../common/type.h"
|
||||
|
||||
#define get_column(pos) (pos % 80)
|
||||
#define get_row(pos) (pos / 80)
|
|
@ -1,10 +1,11 @@
|
|||
#include "type.h"
|
||||
#include "kdef.h"
|
||||
#include "print.h"
|
||||
#include "mm.h"
|
||||
#include "multiboot.h"
|
||||
#include "../common/kdef.h"
|
||||
#include "../common/type.h"
|
||||
#include "../hal/print.h"
|
||||
#include "../hal/mm.h"
|
||||
#include "../hal/multiboot.h"
|
||||
|
||||
uint8_t g_gdt[8*9];
|
||||
uint8_t g_idt[21*16];
|
||||
gdt_ptr_t g_gdt_ptr;
|
||||
extern uint64_t text_pos;
|
||||
extern char kernel_start[];
|
|
@ -1,4 +1,4 @@
|
|||
#include "kdef.h"
|
||||
#include "../common/kdef.h"
|
||||
#include "avl_tree.h"
|
||||
|
||||
#define MAX(a, b) (((a) > (b) ? (a) : (b)))
|
|
@ -1,6 +1,6 @@
|
|||
#ifndef _AVL_TREE_H_
|
||||
#define _AVL_TREE_H_
|
||||
#include "kdef.h"
|
||||
#include "../common/kdef.h"
|
||||
|
||||
typedef struct __attribute__((packed)) _avl_tree_node
|
||||
{
|
|
@ -1,4 +1,4 @@
|
|||
#include "kdef.h"
|
||||
#include "../common/kdef.h"
|
||||
#include "linked_list.h"
|
||||
|
||||
void NATIVE64 linked_list_node_init(linked_list_node* node)
|
|
@ -1,6 +1,6 @@
|
|||
#ifndef _LINKED_LIST_H_
|
||||
#define _LINKED_LIST_H_
|
||||
#include "kdef.h"
|
||||
#include "../common/kdef.h"
|
||||
typedef struct _linked_list_node
|
||||
{
|
||||
struct _linked_list_node* prev;
|
Loading…
Reference in New Issue