1
0
Fork 0
mirror of https://github.com/tailix/kernel.git synced 2025-04-14 17:33:13 -04:00

Add arch-specific config header for defines

This commit is contained in:
Braiden Vasco 2017-11-02 14:51:41 +00:00
parent 33ef132611
commit 47c6eca209
2 changed files with 29 additions and 5 deletions

23
arch/config.h Normal file
View file

@ -0,0 +1,23 @@
#ifndef KERNELMQ_INCLUDED_CONFIG
#define KERNELMQ_INCLUDED_CONFIG 1
#define IDT_SIZE 256 // maximal size
#define GDT_NULL_INDEX 0
#define GDT_KERNEL_CS_INDEX 1
#define GDT_KERNEL_DS_INDEX 2
#define GDT_USER_CS_INDEX 3
#define GDT_USER_DS_INDEX 4
#define GDT_SIZE 5
#define GDT_DESCRIPTOR_SIZE 8 // bytes
#define GDT_SEGMENT_SELECTOR(n) ((n) * GDT_DESCRIPTOR_SIZE)
#define GDT_NULL_SELECTOR GDT_SEGMENT_SELECTOR(GDT_NULL_INDEX)
#define GDT_KERNEL_CS_SELECTOR GDT_SEGMENT_SELECTOR(GDT_KERNEL_CS_INDEX)
#define GDT_KERNEL_DS_SELECTOR GDT_SEGMENT_SELECTOR(GDT_KERNEL_DS_INDEX)
#define GDT_USER_CS_SELECTOR GDT_SEGMENT_SELECTOR(GDT_USER_CS_INDEX)
#define GDT_USER_DS_SELECTOR GDT_SEGMENT_SELECTOR(GDT_USER_DS_INDEX)
#endif

View file

@ -1,9 +1,8 @@
#include "gdt.h"
#include "config.h"
#include "logger.h"
#define GDT_SIZE 3
struct GdtPointer {
unsigned short limit;
unsigned int base;
@ -32,9 +31,11 @@ void gdt_initialize()
{
logger_info("Setup GDT.");
gdt_set_gate(0, 0, 0, 0, 0); // Null segment
gdt_set_gate(1, 0, 0xFFFFFFFF, 0x9A, 0xCF); // Code segment
gdt_set_gate(2, 0, 0xFFFFFFFF, 0x92, 0xCF); // Data segment
gdt_set_gate(GDT_NULL_INDEX, 0, 0x00000000, 0, 0);
gdt_set_gate(GDT_KERNEL_CS_INDEX, 0, 0xFFFFFFFF, 0x9A, 0xCF);
gdt_set_gate(GDT_KERNEL_DS_INDEX, 0, 0xFFFFFFFF, 0x92, 0xCF);
gdt_set_gate(GDT_USER_CS_INDEX, 0, 0xFFFFFFFF, 0xFA, 0xCF);
gdt_set_gate(GDT_USER_DS_INDEX, 0, 0xFFFFFFFF, 0xF2, 0xCF);
logger_info("Load GDT.");