Diff for /np2/i386c/ia32/task.h between versions 1.2 and 1.7

version 1.2, 2004/01/13 16:37:42 version 1.7, 2005/03/12 12:32:54
Line 12 Line 12
  * 2. Redistributions in binary form must reproduce the above copyright   * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the   *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.   *    documentation and/or other materials provided with the distribution.
  * 3. The name of the author may not be used to endorse or promote products  
  *    derived from this software without specific prior written permission.  
  *   *
  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR   * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES   * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
Line 34 Line 32
 extern "C" {  extern "C" {
 #endif  #endif
   
 typedef union {  void load_tr(UINT16 selector);
         struct {  void get_stack_pointer_from_tss(UINT pl, UINT16 *new_ss, UINT32 *new_esp);
                 WORD    backlink;       /* 元のタスクセレクタ値 */  UINT16 get_backlink_selector_from_tss(void);
                 struct {  
                         WORD    sp;     /* スタックポインタ */  
                         WORD    ss;     /* スタックセグメント */  
                 } stack[3];                     /* 特権レベル 0-2 */  
                 WORD    ip;             /* IP */  
                 WORD    flags;          /* FLAGS */  
                 WORD    regs[8];        /* レジスタ */  
                 WORD    sreg[4];        /* セグメントレジスタ */  
                 WORD    ldt;            /* タスク毎の LDT セレクタ値 */  
         } tss16;  
   
         struct {  
                 REG32   backlink;       /* REG16: 元のタスクセレクタ値 */  
                 struct {  
                         REG32   sp;     /* REG32: スタックポインタ */  
                         REG32   ss;     /* REG16: スタックセグメント */  
                 } stack[3];                     /* 特権レベル 0-2 */  
                 REG32   cr3;            /* REG32: タスク毎の CR3 */  
                 REG32   ip;             /* REG32: EIP */  
                 REG32   flags;          /* REG32: EFLAGS */  
                 REG32   regs[8];        /* REG32: レジスタ */  
                 REG32   sreg[6];        /* REG16: セグメントレジスタ */  
                 REG32   ldt;            /* REG16: タスク毎の LDT セレクタ値 */  
                 WORD    t;              /* 最下位ビットが1のとき、タスク切替時  
                                            に割り込み番号1のフォールトを発生 */  
                 WORD    iobase;         /* TSS 先頭から I/O 許可テーブルマップ  
                                            までのバイト数 */  
         } tss32;  
 } TASK_STATE_T;  
   
 void load_tr(WORD selector);  
 void get_stack_from_tss(DWORD pl, WORD* new_ss, DWORD* new_esp);  
 WORD get_link_selector_from_tss();  
   
 void task_switch(selector_t* selector, int type);  /* task_switch type */
   enum task_switch_type {
 /* type */  
 enum {  
         TASK_SWITCH_JMP,          TASK_SWITCH_JMP,
         TASK_SWITCH_CALL,          TASK_SWITCH_CALL,
         TASK_SWITCH_IRET,          TASK_SWITCH_IRET,
         TASK_SWITCH_INTR,          TASK_SWITCH_INTR
 };  };
   typedef enum task_switch_type task_switch_type_t;
   
   void task_switch(selector_t *selector, task_switch_type_t type);
   
 #ifdef __cplusplus  #ifdef __cplusplus
 }  }

Removed from v.1.2  
changed lines
  Added in v.1.7


RetroPC.NET-CVS <cvs@retropc.net>