comparison registers.h @ 1:259b5f0e03ba

add registers.h
author taiki
date Tue, 26 Mar 2013 17:51:58 +0900
parents
children
comparison
equal deleted inserted replaced
0:8d0e5be5d742 1:259b5f0e03ba
1 #ifndef REGISTERS
2 #define REGISTERS
3
4 typedef struct _cr3_t {
5 UINT64 ignored1:3;
6 UINT64 pwt:1; /* page-level write through */
7 UINT64 pcd:1; /* page-level cache disable */
8 UINT64 ignored2:7;
9 UINT64 pdb:40; /* page directory base */
10 UINT64 reserved :12;
11 } cr3_t;
12 #define PHYADDR_WIDTH 127
13
14 typedef struct _cr4_t {
15 UINT64 vme:1;
16 UINT64 pvi:1;
17 UINT64 tsd:1;
18 UINT64 de:1;
19 UINT64 pse:1; // page size extensions
20 UINT64 pae:1; // physical address extension
21 UINT64 mce:1;
22 UINT64 pge:1;
23 UINT64 pce:1;
24 UINT64 osfxsr:1;
25 UINT64 osxmmexcept:1;
26 UINT64 ignored2 :2;
27 UINT64 vmxe: 1;
28 UINT64 smxe: 1;
29 UINT64 ignored3: 1;
30 UINT64 fsgsbase: 1;
31 UINT64 pcide: 1;
32 UINT64 osxsave: 1;
33 UINT64 ignored4: 1;
34 UINT64 smep: 1;
35 UINT64 reserved:43;
36 } cr4_t;
37
38 typedef struct _cr0_t {
39 UINT64 pe :1;
40 UINT64 mp :1;
41 UINT64 em :1;
42 UINT64 ts :1;
43 UINT64 et :1;
44 UINT64 ne :1;
45 UINT64 ignored1 :10;
46 UINT64 wp :1;
47 UINT64 ignored2 :1;
48 UINT64 am :1;
49 UINT64 ignored3 :10;
50 UINT64 nw :1;
51 UINT64 cd :1;
52 UINT64 pg :1; /* pageing */
53 } cr0_t;
54
55 typedef struct _efer_t {
56 UINT64 syscall_enable :1;
57 UINT64 reserved1:7;
58 UINT64 ia32e_enable :1;
59 UINT64 reserved2 :1;
60 UINT64 ia32e_active :1;
61 UINT64 edb_enable :1;
62 UINT64 reserved3 :52;
63 } efer_t;
64
65
66 #endif /* REGISTERS */