⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 archtypes.h

📁 Minix比较全的源码
💻 H
字号:
#ifndef _I386_TYPES_H#define _I386_TYPES_H#include <minix/sys_config.h>#include "archconst.h"typedef unsigned reg_t;         /* machine register */typedef reg_t segdesc_t;/* The stack frame layout is determined by the software, but for efficiency * it is laid out so the assembly code to use it is as simple as possible. * 80286 protected mode and all real modes use the same frame, built with * 16-bit registers.  Real mode lacks an automatic stack switch, so little * is lost by using the 286 frame for it.  The 386 frame differs only in * having 32-bit registers and more segment registers.  The same names are * used for the larger registers to avoid differences in the code. */struct stackframe_s {           /* proc_ptr points here */  u16_t gs;                     /* last item pushed by save */  u16_t fs;                     /*  ^ */  u16_t es;                     /*  | */  u16_t ds;                     /*  | */  reg_t di;			/* di through cx are not accessed in C */  reg_t si;			/* order is to match pusha/popa */  reg_t fp;			/* bp */  reg_t st;			/* hole for another copy of sp */  reg_t bx;                     /*  | */  reg_t dx;                     /*  | */  reg_t cx;                     /*  | */  reg_t retreg;			/* ax and above are all pushed by save */  reg_t retadr;			/* return address for assembly code save() */  reg_t pc;			/*  ^  last item pushed by interrupt */  reg_t cs;                     /*  | */  reg_t psw;                    /*  | */  reg_t sp;                     /*  | */  reg_t ss;                     /* these are pushed by CPU during interrupt */};struct segdesc_s {		/* segment descriptor for protected mode */  u16_t limit_low;  u16_t base_low;  u8_t base_middle;  u8_t access;		/* |P|DL|1|X|E|R|A| */  u8_t granularity;	/* |G|X|0|A|LIMT| */  u8_t base_high;};#define LDT_SIZE (2 + NR_REMOTE_SEGS)   /* CS, DS and remote segments *//* Fixed local descriptors. */#define CS_LDT_INDEX         0  /* process CS */#define DS_LDT_INDEX         1  /* process DS=ES=FS=GS=SS */#define EXTRA_LDT_INDEX      2  /* first of the extra LDT entries */typedef struct segframe {	reg_t p_ldt_sel;    /* selector in gdt with ldt base and limit */	struct segdesc_s p_ldt[2+NR_REMOTE_SEGS]; /* CS, DS and remote */} segframe_t;#endif /* #ifndef _I386_TYPES_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -