GitOS
Operating system exercise
Loading...
Searching...
No Matches
gdt.h
Go to the documentation of this file.
1#pragma once
3#include <stdint.h>
5struct gdt
6{
7 uint16_t segment;
8 uint16_t base_first;
9 uint8_t base;
10 uint8_t access;
11 uint8_t high_flags;
13} __attribute__((packed));
14
16{
17 uint32_t base;
18 uint32_t limit;
19 uint8_t type;
20};
21
23{
24 uint16_t size;
25 uint32_t start_address;
26} __attribute__((packed));
27
28void gdt_load(struct gdt *gdt, unsigned int size);
29void gdt_read(struct gdt_descriptor *target);
30void gdt_structured_to_gdt(struct gdt *gdt, struct gdt_structured *structured_gdt, unsigned int total_entries);
31
32#define TOTAL_GDT_SEGMENTS 6
33
34#define KERNEL_CODE_SELECTOR 0x08
35#define KERNEL_DATA_SELECTOR 0x10
36
37#define USER_CODE_SELECTOR 0x1b
38#define USER_DATA_SELECTOR 0x23
void gdt_load(struct gdt *gdt, unsigned int size)
Definition gdt.c:46
void gdt_read(struct gdt_descriptor *target)
Definition gdt.c:55
struct gdt_structured __attribute__
uint16_t size
Definition gdt.h:0
void gdt_structured_to_gdt(struct gdt *gdt, struct gdt_structured *structured_gdt, unsigned int total_entries)
Definition gdt.c:38
Definition gdt.h:23
uint16_t size
Definition gdt.h:24
uint32_t start_address
Definition gdt.h:25
Definition gdt.h:16
uint32_t base
Definition gdt.h:17
uint32_t limit
Definition gdt.h:18
uint8_t type
Definition gdt.h:19
Definition gdt.h:6
uint16_t base_first
Definition gdt.h:8
uint8_t high_flags
Definition gdt.h:11
uint8_t base_24_31_bits
Definition gdt.h:12
uint8_t access
Definition gdt.h:10
uint16_t segment
Definition gdt.h:7
uint8_t base
Definition gdt.h:9