www.pudn.com > LFYOS.zip > arch.h
#ifndef OS_KERNEL_ARCH
#define OS_KERNEL_ARCH
#define READ_ONLY (0x05)
#define READ_WRITE (0x07)
#define NO_ACCESS_RIGHT (0x00)
extern int page_dir[1024],page_0[1024];
extern int reload_cr3_flag;
extern int page_dir[1024];
struct system_page_table {
int add[1024];
};
extern struct system_page_table system_page_table[256];
struct file_page_table{
int number;
int page_table_block[128];
int item_number[128];
int reference_number[128];
};
extern struct file_page_table file_page_table[FILE_NUMBER];
#define DEFAULT_CS (0x23)
#define DEFAULT_DS (0x2b)
#define DEFAULT_ES DEFAULT_DS
#define DEFAULT_FS DEFAULT_DS
#define DEFAULT_GS DEFAULT_DS
#define DEFAULT_SS DEFAULT_DS
#define DEFAULT_SP (0xc0000ffc)
#define DEFAULT_SP_0 (0xc0000800)
#define CR2_BUF_NUMBER 6
typedef struct{
void (*ip)(void );
int cs;
int flag;
char *sp;
int ss;
int ds,es,fs,gs;
char *sp_0;
int (*function)(void );
int cr2[CR2_BUF_NUMBER];
}run_point;
#define RESET_RUN_POINT(r_p) \
{ \
extern void start_os(void ); \
int cr2_i; \
(r_p).cs=DEFAULT_CS; \
(r_p).ip=start_os; \
(r_p).flag=0x200; \
(r_p).ss=DEFAULT_SS; \
(r_p).sp=(char *)(DEFAULT_SP); \
(r_p).ds=(DEFAULT_DS); \
(r_p).es=(DEFAULT_ES); \
(r_p).fs=(DEFAULT_FS); \
(r_p).gs=(DEFAULT_GS); \
(r_p).sp_0=(char *)(DEFAULT_SP_0); \
for(cr2_i=0;cr2_i