blob: b8d219a7c7bfdcb8404ab03acf84bfde361ec980 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
#pragma once
#include <stdint.h>
#define FLAG 0b1100
typedef struct Segment_Descriptor {
uint16_t lim_low;
uint16_t base_low;
uint8_t base_mid;
uint8_t access;
uint8_t lim_flag;
uint8_t base_high;
} __attribute__((packed)) Segment_Descriptor_t;
typedef struct GDTR {
uint16_t size;
uint32_t offset;
} __attribute__((packed)) GDTR_t;
typedef Segment_Descriptor_t *GDT_t;
uint16_t make_code(uint8_t priv, uint8_t dc, uint8_t rw);
uint16_t make_data(uint8_t priv, uint8_t dc, uint8_t rw);
Segment_Descriptor_t make_descriptor(uint32_t base, uint32_t limit,
uint16_t access_flag);
void get_gdtr();
|