Voxia OS
v0.0.1
Hobby Project Operating System Targeting x86-64
Loading...
Searching...
No Matches
gdt.h
Go to the documentation of this file.
1
#ifndef __HAL_CPU_GDT_H__
2
#define __HAL_CPU_GDT_H__
3
4
#include <
type.h
>
5
6
typedef
struct
{
7
uint16_t
limit_low
;
8
uint16_t
base_low
;
9
uint8_t
base_middle
;
10
uint8_t
access
;
11
uint8_t
flags
;
12
uint8_t
base_high
;
13
}
__attribute__
((packed))
14
gdt_entry_t;
// __attribute__((packed)) is used to tell the compiler not
15
// to optimize the struct
16
17
typedef
struct
{
18
uint16_t
limit
;
19
uint64_t
base
;
20
}
__attribute__
((packed)) gdt_ptr_t;
21
22
typedef
struct
lm_tss
{
23
uint32_t
reserved
;
24
uint64_t
rsp
[3];
25
uint64_t
reserved2
;
26
uint64_t
ist
[7];
27
uint64_t
reserved3
: 32;
28
uint16_t
reserved4
;
29
uint16_t
iomap_base
;
30
}
__attribute__
((packed)) lm_tss_t;
31
32
typedef
struct
{
33
gdt_entry_t
entries
[14];
34
gdt_ptr_t
pointer
;
35
lm_tss_t
tss
;
36
}
gdt_each_core_t
;
37
38
gdt_entry_t
39
gdt_make_entry
(
uint32_t
base
,
uint16_t
limit,
uint8_t
access,
uint8_t
flags
);
40
void
gdt_flush
(gdt_ptr_t gdt_ptr);
41
42
__attribute__
((no_stack_protector))
void
setup_gdt
(
int
core
);
43
void
set_tss_stack
(
uint16_t
core
,
uintptr_t
stack_top);
44
45
#endif
// __HAL_CPU_GDT_H__
setup_gdt
void setup_gdt(int core)
base
elf_section_map uintptr_t base
Definition
elf.h:296
gdt_make_entry
gdt_entry_t gdt_make_entry(uint32_t base, uint16_t limit, uint8_t access, uint8_t flags)
Definition
gdt.c:77
set_tss_stack
void set_tss_stack(uint16_t core, uintptr_t stack_top)
Definition
gdt.c:67
__attribute__
typedef __attribute__
gdt_flush
void gdt_flush(gdt_ptr_t gdt_ptr)
Definition
gdt.c:89
flags
uint16_t flags
Definition
thread.h:5
__attribute__::base
uint64_t base
Definition
gdt.h:19
__attribute__::flags
uint8_t flags
Definition
gdt.h:11
__attribute__::base_middle
uint8_t base_middle
Definition
gdt.h:9
__attribute__::limit_low
uint16_t limit_low
Definition
gdt.h:7
__attribute__::base_low
uint16_t base_low
Definition
gdt.h:8
__attribute__::base_high
uint8_t base_high
Definition
gdt.h:12
__attribute__::access
uint8_t access
Definition
gdt.h:10
__attribute__::limit
uint16_t limit
Definition
gdt.h:18
gdt_each_core_t
Definition
gdt.h:32
gdt_each_core_t::entries
gdt_entry_t entries[14]
Definition
gdt.h:33
gdt_each_core_t::pointer
gdt_ptr_t pointer
Definition
gdt.h:34
gdt_each_core_t::tss
lm_tss_t tss
Definition
gdt.h:35
lm_tss
Definition
gdt.h:22
lm_tss::rsp
uint64_t rsp[3]
Definition
gdt.h:24
lm_tss::iomap_base
uint16_t iomap_base
Definition
gdt.h:29
lm_tss::ist
uint64_t ist[7]
Definition
gdt.h:26
lm_tss::reserved
uint32_t reserved
Definition
gdt.h:23
lm_tss::reserved4
uint16_t reserved4
Definition
gdt.h:28
lm_tss::reserved2
uint64_t reserved2
Definition
gdt.h:25
lm_tss::reserved3
uint64_t reserved3
Definition
gdt.h:27
type.h
uint16_t
unsigned short uint16_t
Definition
type.h:13
uint32_t
unsigned int uint32_t
Definition
type.h:19
uintptr_t
unsigned long uintptr_t
Definition
type.h:73
uint64_t
unsigned long uint64_t
Definition
type.h:25
uint8_t
unsigned char uint8_t
Definition
type.h:7
core
int core
Definition
vm_manager.h:5
kernel
hal
cpu
gdt.h
Generated on Sat May 30 2026 11:09:57 for Voxia OS by
1.13.2