OSDN Git Service

ELFローダ追加
[mochi/master.git] / src / kernel / include / hardware / IA32 / IA32Tss.h
1 /******************************************************************************/
2 /* src/kernel/include/hardware/IA32/IA32Tss.h                                 */
3 /*                                                                 2017/01/06 */
4 /* Copyright (C) 2016-2017 Mochi.                                             */
5 /******************************************************************************/
6 #ifndef IA32_TSS_H
7 #define IA32_TSS_H
8 /******************************************************************************/
9 /* インクルード                                                               */
10 /******************************************************************************/
11 #include <stdint.h>
12
13
14 /******************************************************************************/
15 /* 定義                                                                       */
16 /******************************************************************************/
17 /* TSS */
18 typedef struct {
19     uint16_t preTaskLink;       /* 前のタスクへのリンク    */
20     uint16_t reserved1;         /* 予約                    */
21     uint32_t esp0;              /* ESP0                    */
22     uint16_t ss0;               /* SS0                     */
23     uint16_t reserved2;         /* 予約                    */
24     uint32_t esp1;              /* ESP1                    */
25     uint16_t ss1;               /* SS1                     */
26     uint16_t reserved3;         /* 予約                    */
27     uint32_t esp2;              /* ESP2                    */
28     uint16_t ss2;               /* SS2                     */
29     uint16_t reserved4;         /* 予約                    */
30     uint32_t cr3;               /* CR0                     */
31     uint32_t eip;               /* EIP                     */
32     uint32_t eflags;            /* EFLAGS                  */
33     uint32_t eax;               /* eax                     */
34     uint32_t ecx;               /* ecx                     */
35     uint32_t edx;               /* edx                     */
36     uint32_t ebx;               /* ebx                     */
37     uint32_t esp;               /* esp                     */
38     uint32_t ebp;               /* ebp                     */
39     uint32_t esi;               /* esi                     */
40     uint32_t edi;               /* edi                     */
41     uint16_t es;                /* es                      */
42     uint16_t reserved5;         /* 予約                    */
43     uint16_t cs;                /* cs                      */
44     uint16_t reserved6;         /* 予約                    */
45     uint16_t ss;                /* ss                      */
46     uint16_t reserved7;         /* 予約                    */
47     uint16_t ds;                /* ds                      */
48     uint16_t reserved8;         /* 予約                    */
49     uint16_t fs;                /* fs                      */
50     uint16_t reserved9;         /* 予約                    */
51     uint16_t gs;                /* gs                      */
52     uint16_t reserved10;        /* 予約                    */
53     uint16_t ldt;               /* LDTセグメントセレクタ   */
54     uint16_t reserved11;        /* 予約                    */
55     uint16_t reserved12:15;     /* 予約                    */
56     uint16_t t:1;               /* デバッグトラップフラグ  */
57     uint16_t ioMapBase;         /* I/Oマップベースアドレス */
58 } IA32Tss_t;
59
60
61 /******************************************************************************/
62 #endif