diff options
-rw-r--r-- | src/thread/i386/__set_thread_area.s | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/thread/i386/__set_thread_area.s b/src/thread/i386/__set_thread_area.s index 1d852689..3a558fb0 100644 --- a/src/thread/i386/__set_thread_area.s +++ b/src/thread/i386/__set_thread_area.s @@ -6,10 +6,10 @@ __set_thread_area: push $0x51 push $0xfffff push 16(%esp) - xor %edx,%edx - mov %gs,%dx - sub $3,%edx - sar $3,%edx + call 1f +1: addl $4f-1b,(%esp) + pop %ecx + mov (%ecx),%edx push %edx mov %esp,%ebx xor %eax,%eax @@ -18,6 +18,7 @@ __set_thread_area: testl %eax,%eax jnz 2f movl (%esp),%edx + movl %edx,(%ecx) leal 3(,%edx,8),%edx 3: movw %dx,%gs 1: @@ -38,3 +39,7 @@ __set_thread_area: mov $7,%dl inc %al jmp 3b + +.data + .align 4 +4: .long -1 |