Removed DS, ES, FS and GS registers from task switch routines
This commit is contained in:
parent
f4a7d6bd3a
commit
43fc6c94e5
3 changed files with 3 additions and 34 deletions
|
@ -70,18 +70,6 @@ typedef unsigned int wint_t;
|
||||||
* All the interrupt handler routines use this type for their only parameter.
|
* All the interrupt handler routines use this type for their only parameter.
|
||||||
*/
|
*/
|
||||||
struct state {
|
struct state {
|
||||||
/// GS register
|
|
||||||
unsigned short gs;
|
|
||||||
unsigned short __gs;
|
|
||||||
/// FS register
|
|
||||||
unsigned short fs;
|
|
||||||
unsigned short __fs;
|
|
||||||
/// ES register
|
|
||||||
unsigned short es;
|
|
||||||
unsigned short __es;
|
|
||||||
/// ds register
|
|
||||||
unsigned short ds;
|
|
||||||
unsigned short __ds;
|
|
||||||
/// EDI register
|
/// EDI register
|
||||||
unsigned int edi;
|
unsigned int edi;
|
||||||
/// ESI register
|
/// ESI register
|
||||||
|
|
|
@ -515,25 +515,16 @@ sw_switch_context:
|
||||||
push DWORD 0
|
push DWORD 0
|
||||||
push DWORD 0xc0edbabe
|
push DWORD 0xc0edbabe
|
||||||
pusha
|
pusha
|
||||||
push ds
|
|
||||||
push es
|
|
||||||
push fs
|
|
||||||
push gs
|
|
||||||
pushf
|
pushf
|
||||||
pop eax
|
pop eax
|
||||||
mov [esp+64], eax
|
mov [esp+48], eax
|
||||||
|
|
||||||
mov ecx, [esp+68]
|
mov ecx, [esp+52]
|
||||||
mov [ecx], esp
|
mov [ecx], esp
|
||||||
mov ecx, [esp+72]
|
mov ecx, [esp+56]
|
||||||
mov esp, [ecx]
|
mov esp, [ecx]
|
||||||
|
|
||||||
sw_rollback:
|
sw_rollback:
|
||||||
|
|
||||||
pop gs
|
|
||||||
pop fs
|
|
||||||
pop es
|
|
||||||
pop ds
|
|
||||||
popa
|
popa
|
||||||
|
|
||||||
add esp, 8
|
add esp, 8
|
||||||
|
@ -800,22 +791,13 @@ extern irq_handler
|
||||||
|
|
||||||
common_stub:
|
common_stub:
|
||||||
pusha
|
pusha
|
||||||
push ds
|
|
||||||
push es
|
|
||||||
push fs
|
|
||||||
push gs
|
|
||||||
|
|
||||||
; use the same handler for interrupts and exceptions
|
; use the same handler for interrupts and exceptions
|
||||||
push esp
|
push esp
|
||||||
call irq_handler
|
call irq_handler
|
||||||
add esp, 4
|
add esp, 4
|
||||||
|
|
||||||
pop gs
|
|
||||||
pop fs
|
|
||||||
pop es
|
|
||||||
pop ds
|
|
||||||
popa
|
popa
|
||||||
|
|
||||||
add esp, 8
|
add esp, 8
|
||||||
iret
|
iret
|
||||||
|
|
||||||
|
|
|
@ -157,7 +157,6 @@ int create_default_frame(task_t* task, internal_entry_point_t ep, void* arg)
|
||||||
|
|
||||||
stptr = stack;
|
stptr = stack;
|
||||||
memset(stptr, 0x00, short_state_size*sizeof(uint32_t));
|
memset(stptr, 0x00, short_state_size*sizeof(uint32_t));
|
||||||
stptr->gs = stptr->fs = stptr->es = stptr->ds = ds;
|
|
||||||
stptr->esp = stack +short_state_size;
|
stptr->esp = stack +short_state_size;
|
||||||
stptr->int_no = 0xB16B00B5;
|
stptr->int_no = 0xB16B00B5;
|
||||||
stptr->error = 0xC03DB4B3;
|
stptr->error = 0xC03DB4B3;
|
||||||
|
|
Loading…
Add table
Reference in a new issue