sgdt (%rsp)\r
movl 2(%rsp), %eax # eax = GDT base\r
addl $8, %esp\r
- movl %eax, %edx\r
- addl $GDT_SIZE, %edx\r
- movb %dl, (TSS_SEGMENT + 2)(%rax)\r
- movb %dh, (TSS_SEGMENT + 3)(%rax)\r
- .byte 0xc1, 0xea, 0x10 # shr edx, 16\r
- movb %dl, (TSS_SEGMENT + 4)(%rax)\r
- movb %dh, (TSS_SEGMENT + 7)(%rax)\r
- movl %eax, %edx\r
movb $0x89, %dl\r
movb %dl, (TSS_SEGMENT + 5)(%rax) # clear busy flag\r
movl $TSS_SEGMENT, %eax\r