Clubcos
0.0.0
Clubcos - Clubc Operating System
|
데이타 구조 | |
struct | tagGdt |
GDT를 나타내는 구조체입니다. 더 자세히 ... | |
매크로 | |
#define | NULL_SEGMENT 0 |
NULL 세그먼트 셀렉터입니다. 더 자세히 ... | |
#define | KERNEL_DATA_SEGMENT (1 * 8) |
커널 데이터 세그먼트 셀렉터입니다. 더 자세히 ... | |
#define | KERNEL_CODE_SEGMENT (2 * 8) |
커널 코드 세그먼트 셀렉터입니다. 더 자세히 ... | |
#define | MAKE_GDT_TYPE1(SegmentType, S, DPL, P) ((((P) << 7) & 0x80) | (((DPL) << 5) & 0x60) | (((S) << 4) & 0x10) | ((SegmentType) & 0x0f)) |
GdtType1 을 조립하는 매크로 함수입니다. 더 자세히 ... | |
#define | MAKE_DATA_SEGMENT(expdown, writable) (((((expdown) << 2) & 0x04) | (((writable) << 1) & 0x02)) & 0x06) |
데이터 세그먼트의 SegmentType을 조립하는 매크로 함수입니다. 더 자세히 ... | |
#define | MAKE_CODE_SEGMENT(conforming, readable) ((((((conforming) << 2) & 0x04) | (((readable) << 1) & 0x02)) | 0x08) & 0x0e) |
데이터 세그먼트의 SegmentType을 조립하는 매크로 함수입니다. 더 자세히 ... | |
#define | DATA_SEGMENT_TYPE MAKE_DATA_SEGMENT(0,1) |
Clubcos가 사용하는 데이터 세그먼트의 SegmentType입니다. 더 자세히 ... | |
#define | CODE_SEGMENT_TYPE MAKE_CODE_SEGMENT(0,1) |
Clubcos가 사용하는 코드 세그먼트의 SegmentType입니다. 더 자세히 ... | |
타입정의 | |
typedef uint8_t | GdtType1 |
Gdt 구조체를 참조하십시오. 더 자세히 ... | |
typedef uint8_t | GdtType2 |
Gdt 구조체를 참조하십시오. 더 자세히 ... | |
typedef struct tagGdt | Gdt |
GDT를 나타내는 구조체입니다. 더 자세히 ... | |
함수 | |
void | ckGdtInit (Gdt *pGdt, uint32_t address, uint32_t size, GdtType1 type1) |
Gdt 구조체를 초기화합니다. 더 자세히 ... | |
void | ckGdtLoad (uint16_t size, Gdt *address) |
lgdt 명령어로 GDT 테이블을 로드합니다. 더 자세히 ... | |
void | ckGdtTableInitialize (void) |
GDT 테이블을 초기화합니다. 더 자세히 ... | |
#define CODE_SEGMENT_TYPE MAKE_CODE_SEGMENT(0,1) |
Clubcos가 사용하는 코드 세그먼트의 SegmentType입니다.
#define DATA_SEGMENT_TYPE MAKE_DATA_SEGMENT(0,1) |
Clubcos가 사용하는 데이터 세그먼트의 SegmentType입니다.
#define KERNEL_CODE_SEGMENT (2 * 8) |
커널 코드 세그먼트 셀렉터입니다.
#define KERNEL_DATA_SEGMENT (1 * 8) |
커널 데이터 세그먼트 셀렉터입니다.
#define MAKE_CODE_SEGMENT | ( | conforming, | |
readable | |||
) | ((((((conforming) << 2) & 0x04) | (((readable) << 1) & 0x02)) | 0x08) & 0x0e) |
데이터 세그먼트의 SegmentType을 조립하는 매크로 함수입니다.
[in] | conforming | conforming 여부입니다. |
[in] | readable | 읽기 가능 여부입니다. |
#define MAKE_DATA_SEGMENT | ( | expdown, | |
writable | |||
) | (((((expdown) << 2) & 0x04) | (((writable) << 1) & 0x02)) & 0x06) |
데이터 세그먼트의 SegmentType을 조립하는 매크로 함수입니다.
[in] | expdown | Expand Down 여부입니다. |
[in] | writable | 쓰기 가능 여부입니다. |
#define MAKE_GDT_TYPE1 | ( | SegmentType, | |
S, | |||
DPL, | |||
P | |||
) | ((((P) << 7) & 0x80) | (((DPL) << 5) & 0x60) | (((S) << 4) & 0x10) | ((SegmentType) & 0x0f)) |
GdtType1 을 조립하는 매크로 함수입니다.
[in] | SegmentType | SegmentType입니다. |
[in] | S | 0이면 시스템 세그먼트이고, 1이면 코드/데이터 세그먼트입니다. 항상 1로 해둡니다. |
[in] | DPL | 세그먼트의 DPL입니다. |
[in] | P | 세그먼트의 present 여부입니다. |
#define NULL_SEGMENT 0 |
NULL 세그먼트 셀렉터입니다.
void ckGdtLoad | ( | uint16_t | size, |
Gdt * | address | ||
) |
lgdt
명령어로 GDT 테이블을 로드합니다.
asmfunc.asm에 구현부가 있습니다.
void ckGdtTableInitialize | ( | void | ) |
GDT 테이블을 초기화합니다.