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:
parent
33ef132611
commit
47c6eca209
2 changed files with 29 additions and 5 deletions
23
arch/config.h
Normal file
23
arch/config.h
Normal 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
|
11
arch/gdt.c
11
arch/gdt.c
|
@ -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.");
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue