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