/rust/registry/src/index.crates.io-6f17d22bba15001f/x86-0.47.0/src/bits32/task.rs
Line | Count | Source (jump to first uncovered line) |
1 | | //! Helpers to program the task state segment. |
2 | | //! See Intel 3a, Chapter 7 |
3 | | |
4 | | use core::mem::size_of; |
5 | | |
6 | | #[derive(Copy, Clone, Debug)] |
7 | | #[repr(C, packed)] |
8 | | pub struct TaskStateSegment { |
9 | | pub link: u16, |
10 | | reserved0: u16, |
11 | | pub esp0: u32, |
12 | | pub ss0: u16, |
13 | | reserved1: u16, |
14 | | pub esp1: u32, |
15 | | pub ss1: u16, |
16 | | reserved2: u16, |
17 | | pub esp2: u32, |
18 | | pub ss2: u16, |
19 | | reserved3: u16, |
20 | | |
21 | | pub cr3: u32, |
22 | | pub eip: u32, |
23 | | pub eflags: u32, |
24 | | |
25 | | pub eax: u32, |
26 | | pub ecx: u32, |
27 | | pub edx: u32, |
28 | | pub ebx: u32, |
29 | | pub esp: u32, |
30 | | pub ebp: u32, |
31 | | pub esi: u32, |
32 | | pub edi: u32, |
33 | | |
34 | | pub es: u16, |
35 | | reserved4: u16, |
36 | | pub cs: u16, |
37 | | reserved5: u16, |
38 | | pub ss: u16, |
39 | | reserved6: u16, |
40 | | pub ds: u16, |
41 | | reserved7: u16, |
42 | | pub fs: u16, |
43 | | reserved8: u16, |
44 | | pub gs: u16, |
45 | | reserved9: u16, |
46 | | pub ldtr: u16, |
47 | | reserved10: u32, |
48 | | pub iobp_offset: u16, |
49 | | } |
50 | | |
51 | | impl TaskStateSegment { |
52 | 0 | pub const fn new() -> TaskStateSegment { |
53 | 0 | TaskStateSegment { |
54 | 0 | link: 0, |
55 | 0 | reserved0: 0, |
56 | 0 | esp0: 0, |
57 | 0 | ss0: 0, |
58 | 0 | reserved1: 0, |
59 | 0 | esp1: 0, |
60 | 0 | ss1: 0, |
61 | 0 | reserved2: 0, |
62 | 0 | esp2: 0, |
63 | 0 | ss2: 0, |
64 | 0 | reserved3: 0, |
65 | 0 | cr3: 0, |
66 | 0 | eip: 0, |
67 | 0 | eflags: 0, |
68 | 0 | eax: 0, |
69 | 0 | ecx: 0, |
70 | 0 | edx: 0, |
71 | 0 | ebx: 0, |
72 | 0 | esp: 0, |
73 | 0 | ebp: 0, |
74 | 0 | esi: 0, |
75 | 0 | edi: 0, |
76 | 0 | es: 0, |
77 | 0 | reserved4: 0, |
78 | 0 | cs: 0, |
79 | 0 | reserved5: 0, |
80 | 0 | ss: 0, |
81 | 0 | reserved6: 0, |
82 | 0 | ds: 0, |
83 | 0 | reserved7: 0, |
84 | 0 | fs: 0, |
85 | 0 | reserved8: 0, |
86 | 0 | gs: 0, |
87 | 0 | reserved9: 0, |
88 | 0 | ldtr: 0, |
89 | 0 | reserved10: 0, |
90 | 0 | iobp_offset: size_of::<TaskStateSegment>() as u16, |
91 | 0 | } |
92 | 0 | } |
93 | | } |