Hal/ kernel/ common/ util/ they are now separated

This commit is contained in:
HyperAssembler 2015-04-18 02:34:32 -07:00
parent 13b8912474
commit d5912f4a7a
13 changed files with 52 additions and 21 deletions

View File

@ -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

View File

@ -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)

View File

@ -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

View File

@ -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"

View File

@ -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)

View File

@ -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[];

View File

@ -1,4 +1,4 @@
#include "kdef.h"
#include "../common/kdef.h"
#include "avl_tree.h"
#define MAX(a, b) (((a) > (b) ? (a) : (b)))

View File

@ -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
{

View File

@ -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)

View File

@ -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;