blob: 92219d89719d4f82788c36b3f60f394747007725 (
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
//! GDT State
const types = @import("types/types.zig");
const entries = @import("entries/entries.zig");
const Table = types.Table;
const Entry = types.Entry;
const TssDescriptor = types.TssDescriptor;
const Gdtr = types.Gdtr;
var global_gdt: Table = undefined;
var initialized: bool = false;
pub fn get_table() *Table {
return &global_gdt;
}
pub fn get_gdtr() Gdtr {
return global_gdt.get_gdtr();
}
pub fn is_initialized() bool {
return initialized;
}
pub fn set_initialized() void {
initialized = true;
}
pub fn setup_entries(tss_address: u64, tss_size: u20) void {
global_gdt.null = Entry.null_entry();
global_gdt.kernel_code = entries.create_kernel_code();
global_gdt.kernel_data = entries.create_kernel_data();
global_gdt.user_code = entries.create_user_code();
global_gdt.user_data = entries.create_user_data();
global_gdt.tss = entries.create_tss_descriptor(tss_address, tss_size);
}
pub fn update_tss(tss_address: u64, tss_size: u20) void {
global_gdt.tss = entries.create_tss_descriptor(tss_address, tss_size);
}
|