|
|
| version 1.3, 2004/01/23 14:33:26 | version 1.4, 2004/01/27 15:55:26 |
|---|---|
| Line 168 do { \ | Line 168 do { \ |
| #define CPU_SET_SEGDESC_POSTPART(dscp) \ | #define CPU_SET_SEGDESC_POSTPART(dscp) \ |
| do { \ | do { \ |
| if ((dscp)->s) { \ | if ((dscp)->valid) { \ |
| if (!((dscp)->h & CPU_SEGDESC_H_A)) { \ | if ((dscp)->s) { \ |
| (dscp)->h |= CPU_SEGDESC_H_A; \ | if (!((dscp)->h & CPU_SEGDESC_H_A)) { \ |
| cpu_lmemorywrite_d((dscp)->addr + 4, (dscp)->h); \ | (dscp)->h |= CPU_SEGDESC_H_A; \ |
| cpu_lmemorywrite_d((dscp)->addr+4, (dscp)->h); \ | |
| } \ | |
| } \ | } \ |
| } else { \ | |
| ia32_panic("CPU_SET_SEGDESC_POSTPART: descriptor is invalid"); \ | |
| } \ | } \ |
| } while (/*CONSTCOND*/ 0) | } while (/*CONSTCOND*/ 0) |
| #define CPU_SET_TASK_BUSY(dscp) \ | #define CPU_SET_TASK_BUSY(dscp) \ |
| do { \ | do { \ |
| DWORD h; \ | if ((dscp)->valid) { \ |
| h = cpu_lmemoryread_d((dscp)->addr + 4); \ | DWORD h; \ |
| if (!(h & CPU_TSS_H_BUSY)) { \ | h = cpu_lmemoryread_d((dscp)->addr + 4); \ |
| (dscp)->type |= CPU_SYSDESC_TYPE_TSS_BUSY_IND; \ | if (!(h & CPU_TSS_H_BUSY)) { \ |
| h |= CPU_TSS_H_BUSY; \ | (dscp)->type |= CPU_SYSDESC_TYPE_TSS_BUSY_IND; \ |
| cpu_lmemorywrite_d((dscp)->addr + 4, h); \ | h |= CPU_TSS_H_BUSY; \ |
| cpu_lmemorywrite_d((dscp)->addr + 4, h); \ | |
| } else { \ | |
| ia32_panic("CPU_SET_TASK_BUSY: already busy (%x)", h); \ | |
| } \ | |
| } else { \ | } else { \ |
| ia32_panic("CPU_SET_TASK_BUSY: already busy (%x)", h); \ | ia32_panic("CPU_SET_TASK_BUSY: descriptor is invalid"); \ |
| } \ | } \ |
| } while (/*CONSTCOND*/ 0) | } while (/*CONSTCOND*/ 0) |
| #define CPU_SET_TASK_FREE(dscp) \ | #define CPU_SET_TASK_FREE(dscp) \ |
| do { \ | do { \ |
| DWORD h; \ | if ((dscp)->valid) { \ |
| h = cpu_lmemoryread_d((dscp)->addr + 4); \ | DWORD h; \ |
| if (h & CPU_TSS_H_BUSY) { \ | h = cpu_lmemoryread_d((dscp)->addr + 4); \ |
| (dscp)->type &= ~CPU_SYSDESC_TYPE_TSS_BUSY_IND; \ | if (h & CPU_TSS_H_BUSY) { \ |
| h &= ~CPU_TSS_H_BUSY; \ | (dscp)->type &= ~CPU_SYSDESC_TYPE_TSS_BUSY_IND; \ |
| cpu_lmemorywrite_d((dscp)->addr + 4, h); \ | h &= ~CPU_TSS_H_BUSY; \ |
| cpu_lmemorywrite_d((dscp)->addr + 4, h); \ | |
| } else { \ | |
| ia32_panic("CPU_SET_TASK_FREE: already free (%x)", h); \ | |
| } \ | |
| } else { \ | } else { \ |
| ia32_panic("CPU_SET_TASK_FREE: already free (%x)", h); \ | ia32_panic("CPU_SET_TASK_FREE: descriptor is invalid"); \ |
| } \ | } \ |
| } while (/*CONSTCOND*/ 0) | } while (/*CONSTCOND*/ 0) |