| version 1.23, 2008/03/22 04:03:08 | version 1.25, 2011/12/17 01:36:54 | 
| Line 1 | Line 1 | 
 | /*      $Id$    */ |  | 
 |  |  | 
 | /* | /* | 
 | * Copyright (c) 2003 NONAKA Kimihiro | * Copyright (c) 2003 NONAKA Kimihiro | 
 | * All rights reserved. | * All rights reserved. | 
| Line 29 | Line 27 | 
 | #include "cpu.h" | #include "cpu.h" | 
 | #include "ia32.mcr" | #include "ia32.mcr" | 
 |  |  | 
| #define TSS_SIZE_16     44 | #define TSS_16_SIZE     44 | 
| #define TSS_SIZE_32     108 | #define TSS_16_LIMIT    (TSS_16_SIZE - 1) | 
|  | #define TSS_32_SIZE     104 | 
|  | #define TSS_32_LIMIT    (TSS_32_SIZE - 1) | 
 |  |  | 
 | static void | static void | 
 | set_task_busy(UINT16 selector, descriptor_t *sdp) | set_task_busy(UINT16 selector, descriptor_t *sdp) | 
| Line 84  load_tr(UINT16 selector) | Line 84  load_tr(UINT16 selector) | 
 | /* check descriptor type & stack room size */ | /* check descriptor type & stack room size */ | 
 | switch (task_sel.desc.type) { | switch (task_sel.desc.type) { | 
 | case CPU_SYSDESC_TYPE_TSS_16: | case CPU_SYSDESC_TYPE_TSS_16: | 
| if (task_sel.desc.u.seg.limit < TSS_SIZE_16) { | if (task_sel.desc.u.seg.limit < TSS_16_LIMIT) { | 
 | EXCEPTION(TS_EXCEPTION, task_sel.idx); | EXCEPTION(TS_EXCEPTION, task_sel.idx); | 
 | } | } | 
 | iobase = 0; | iobase = 0; | 
 | break; | break; | 
 |  |  | 
 | case CPU_SYSDESC_TYPE_TSS_32: | case CPU_SYSDESC_TYPE_TSS_32: | 
| if (task_sel.desc.u.seg.limit < TSS_SIZE_32) { | if (task_sel.desc.u.seg.limit < TSS_32_LIMIT) { | 
 | EXCEPTION(TS_EXCEPTION, task_sel.idx); | EXCEPTION(TS_EXCEPTION, task_sel.idx); | 
 | } | } | 
 | iobase = cpu_kmemoryread_w(task_sel.desc.u.seg.segbase + 102); | iobase = cpu_kmemoryread_w(task_sel.desc.u.seg.segbase + 102); | 
| Line 217  task_switch(selector_t *task_sel, task_s | Line 217  task_switch(selector_t *task_sel, task_s | 
 | switch (task_sel->desc.type) { | switch (task_sel->desc.type) { | 
 | case CPU_SYSDESC_TYPE_TSS_32: | case CPU_SYSDESC_TYPE_TSS_32: | 
 | case CPU_SYSDESC_TYPE_TSS_BUSY_32: | case CPU_SYSDESC_TYPE_TSS_BUSY_32: | 
| if (task_sel->desc.u.seg.limit < TSS_SIZE_32) { | if (task_sel->desc.u.seg.limit < TSS_32_LIMIT) { | 
 | EXCEPTION(TS_EXCEPTION, task_sel->idx); | EXCEPTION(TS_EXCEPTION, task_sel->idx); | 
 | } | } | 
 | task16 = 0; | task16 = 0; | 
| Line 225  task_switch(selector_t *task_sel, task_s | Line 225  task_switch(selector_t *task_sel, task_s | 
 |  |  | 
 | case CPU_SYSDESC_TYPE_TSS_16: | case CPU_SYSDESC_TYPE_TSS_16: | 
 | case CPU_SYSDESC_TYPE_TSS_BUSY_16: | case CPU_SYSDESC_TYPE_TSS_BUSY_16: | 
| if (task_sel->desc.u.seg.limit < TSS_SIZE_16) { | if (task_sel->desc.u.seg.limit < TSS_16_LIMIT) { | 
 | EXCEPTION(TS_EXCEPTION, task_sel->idx); | EXCEPTION(TS_EXCEPTION, task_sel->idx); | 
 | } | } | 
 | task16 = 1; | task16 = 1; |