Changeset View
Changeset View
Standalone View
Standalone View
head/sys/amd64/ia32/ia32_exception.S
Show First 20 Lines • Show All 47 Lines • ▼ Show 20 Lines | IDTVEC(int0x80_syscall) | ||||
swapgs | swapgs | ||||
int0x80_syscall_common: | int0x80_syscall_common: | ||||
pushq $2 /* sizeof "int 0x80" */ | pushq $2 /* sizeof "int 0x80" */ | ||||
subq $TF_ERR,%rsp /* skip over tf_trapno */ | subq $TF_ERR,%rsp /* skip over tf_trapno */ | ||||
movq %rdi,TF_RDI(%rsp) | movq %rdi,TF_RDI(%rsp) | ||||
movq PCPU(CURPCB),%rdi | movq PCPU(CURPCB),%rdi | ||||
andl $~PCB_FULL_IRET,PCB_FLAGS(%rdi) | andl $~PCB_FULL_IRET,PCB_FLAGS(%rdi) | ||||
SAVE_SEGS | SAVE_SEGS | ||||
sti | movq %rax,TF_RAX(%rsp) | ||||
movq %rsi,TF_RSI(%rsp) | |||||
movq %rdx,TF_RDX(%rsp) | movq %rdx,TF_RDX(%rsp) | ||||
movq %rcx,TF_RCX(%rsp) | movq %rcx,TF_RCX(%rsp) | ||||
call handle_ibrs_entry | |||||
sti | |||||
movq %rsi,TF_RSI(%rsp) | |||||
movq %r8,TF_R8(%rsp) | movq %r8,TF_R8(%rsp) | ||||
movq %r9,TF_R9(%rsp) | movq %r9,TF_R9(%rsp) | ||||
movq %rax,TF_RAX(%rsp) | |||||
movq %rbx,TF_RBX(%rsp) | movq %rbx,TF_RBX(%rsp) | ||||
movq %rbp,TF_RBP(%rsp) | movq %rbp,TF_RBP(%rsp) | ||||
movq %r10,TF_R10(%rsp) | movq %r10,TF_R10(%rsp) | ||||
movq %r11,TF_R11(%rsp) | movq %r11,TF_R11(%rsp) | ||||
movq %r12,TF_R12(%rsp) | movq %r12,TF_R12(%rsp) | ||||
movq %r13,TF_R13(%rsp) | movq %r13,TF_R13(%rsp) | ||||
movq %r14,TF_R14(%rsp) | movq %r14,TF_R14(%rsp) | ||||
movq %r15,TF_R15(%rsp) | movq %r15,TF_R15(%rsp) | ||||
movl $TF_HASSEGS,TF_FLAGS(%rsp) | movl $TF_HASSEGS,TF_FLAGS(%rsp) | ||||
cld | cld | ||||
FAKE_MCOUNT(TF_RIP(%rsp)) | FAKE_MCOUNT(TF_RIP(%rsp)) | ||||
movq %rsp, %rdi | movq %rsp, %rdi | ||||
call ia32_syscall | call ia32_syscall | ||||
MEXITCOUNT | MEXITCOUNT | ||||
jmp doreti | jmp doreti |