aboutsummaryrefslogtreecommitdiff
path: root/src/bits32/task.rs
blob: 17bdcd4c66285f8db966e80d5e8322d7078d59cc (plain) (blame)
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
//! Helpers to program the task state segment.
//! See Intel 3a, Chapter 7

use core::mem::size_of;

#[derive(Copy, Clone, Debug)]
#[repr(C, packed)]
pub struct TaskStateSegment {
    pub link: u16,
    reserved0: u16,
    pub esp0: u32,
    pub ss0: u16,
    reserved1: u16,
    pub esp1: u32,
    pub ss1: u16,
    reserved2: u16,
    pub esp2: u32,
    pub ss2: u16,
    reserved3: u16,

    pub cr3: u32,
    pub eip: u32,
    pub eflags: u32,

    pub eax: u32,
    pub ecx: u32,
    pub edx: u32,
    pub ebx: u32,
    pub esp: u32,
    pub ebp: u32,
    pub esi: u32,
    pub edi: u32,

    pub es: u16,
    reserved4: u16,
    pub cs: u16,
    reserved5: u16,
    pub ss: u16,
    reserved6: u16,
    pub ds: u16,
    reserved7: u16,
    pub fs: u16,
    reserved8: u16,
    pub gs: u16,
    reserved9: u16,
    pub ldtr: u16,
    reserved10: u32,
    pub iobp_offset: u16
}

impl TaskStateSegment {
    pub fn new() -> TaskStateSegment {
        TaskStateSegment {
            link: 0,
            reserved0: 0,
            esp0: 0,
            ss0: 0,
            reserved1: 0,
            esp1: 0,
            ss1: 0,
            reserved2: 0,
            esp2: 0,
            ss2: 0,
            reserved3: 0,
            cr3: 0,
            eip: 0,
            eflags: 0,
            eax: 0,
            ecx: 0,
            edx: 0,
            ebx: 0,
            esp: 0,
            ebp: 0,
            esi: 0,
            edi: 0,
            es: 0,
            reserved4: 0,
            cs: 0,
            reserved5: 0,
            ss: 0,
            reserved6: 0,
            ds: 0,
            reserved7: 0,
            fs: 0,
            reserved8: 0,
            gs: 0,
            reserved9: 0,
            ldtr: 0,
            reserved10: 0,
            iobp_offset: size_of::<TaskStateSegment>() as u16
        }
    }
}
ml?h=dylan/github-api-option&id=3667b93871470aaa018e59365b16d7cf6584a5f9&follow=1'>Fix npm tag for canary bun-types, againGravatar Ashcon Partovi 2-56/+10 2023-10-09Add Fedora build instructions to development.md (#6359)Gravatar otterDeveloper 1-0/+10 2023-10-09added commands (#6314)Gravatar babar 1-1/+2 2023-10-09Update README.md (#6291)Gravatar TPLJ 1-1/+1 2023-10-09docs: fixing a couple typos (#6331)Gravatar Michael Di Prisco 2-2/+2 2023-10-09fix: support uint8 exit code range (#6303)Gravatar Liz 2-2/+11 2023-10-09Fix array variables preview in debugger (#6379)Gravatar 2hu 1-1/+4 2023-10-07feat(KeyObject) (#5940)Gravatar Ciro Spaciari 106-67/+9342 2023-10-07Exclude more filesGravatar Jarred Sumner 1-1/+1 2023-10-07Exclude more filesGravatar Jarred Sumner 1-1/+2 2023-10-07Update settings.jsonGravatar Jarred Sumner 1-1/+2 2023-10-07Update settings.jsonGravatar Jarred Sumner 1-2/+3 2023-10-06fix a couple install testsGravatar Dylan Conway 1-8/+8 2023-10-06formatGravatar Dylan Conway 1-1/+2 2023-10-06Fix memory leak in fetch() (#6350)Gravatar Jarred Sumner 1-2/+0 2023-10-06[types] allow onLoad plugin callbacks to return undefined (#6346)Gravatar Silver 1-1/+1 2023-10-06docs: `file.stream()` is not a promise (#6337)Gravatar Paul Nodet 1-1/+1