Changeset View
Changeset View
Standalone View
Standalone View
sys/amd64/amd64/exception.S
Show First 20 Lines • Show All 41 Lines • ▼ Show 20 Lines | |||||
#include "opt_hwpmc_hooks.h" | #include "opt_hwpmc_hooks.h" | ||||
#include "assym.inc" | #include "assym.inc" | ||||
#include <machine/psl.h> | #include <machine/psl.h> | ||||
#include <machine/asmacros.h> | #include <machine/asmacros.h> | ||||
#include <machine/trap.h> | #include <machine/trap.h> | ||||
#include <machine/specialreg.h> | #include <machine/specialreg.h> | ||||
#include <machine/pmap.h> | |||||
#ifdef KDTRACE_HOOKS | #ifdef KDTRACE_HOOKS | ||||
.bss | .bss | ||||
.globl dtrace_invop_jump_addr | .globl dtrace_invop_jump_addr | ||||
.align 8 | .align 8 | ||||
.type dtrace_invop_jump_addr,@object | .type dtrace_invop_jump_addr,@object | ||||
.size dtrace_invop_jump_addr,8 | .size dtrace_invop_jump_addr,8 | ||||
dtrace_invop_jump_addr: | dtrace_invop_jump_addr: | ||||
▲ Show 20 Lines • Show All 544 Lines • ▼ Show 20 Lines | 1: movq PCPU(CURPCB),%rax | ||||
movq TF_RFLAGS(%rsp),%r11 /* original %rflags */ | movq TF_RFLAGS(%rsp),%r11 /* original %rflags */ | ||||
movq TF_RIP(%rsp),%rcx /* original %rip */ | movq TF_RIP(%rsp),%rcx /* original %rip */ | ||||
movq TF_RSP(%rsp),%rsp /* user stack pointer */ | movq TF_RSP(%rsp),%rsp /* user stack pointer */ | ||||
xorl %r8d,%r8d /* zero the rest of GPRs */ | xorl %r8d,%r8d /* zero the rest of GPRs */ | ||||
xorl %r10d,%r10d | xorl %r10d,%r10d | ||||
cmpq $~0,PCPU(UCR3) | cmpq $~0,PCPU(UCR3) | ||||
je 2f | je 2f | ||||
movq PCPU(UCR3),%r9 | movq PCPU(UCR3),%r9 | ||||
andq PCPU(UCR3_LOAD_MASK),%r9 | |||||
movq %r9,%cr3 | movq %r9,%cr3 | ||||
2: xorl %r9d,%r9d | 2: xorl %r9d,%r9d | ||||
movq $PMAP_UCR3_NOMASK,PCPU(UCR3_LOAD_MASK) | |||||
swapgs | swapgs | ||||
sysretq | sysretq | ||||
3: /* AST scheduled. */ | 3: /* AST scheduled. */ | ||||
sti | sti | ||||
movq %rsp,%rdi | movq %rsp,%rdi | ||||
call ast | call ast | ||||
jmp 1b | jmp 1b | ||||
▲ Show 20 Lines • Show All 637 Lines • ▼ Show 20 Lines | ld_regs: | ||||
movq %rax,PTI_CS(%rdx) | movq %rax,PTI_CS(%rdx) | ||||
movq TF_RFLAGS(%rsp),%rax | movq TF_RFLAGS(%rsp),%rax | ||||
movq %rax,PTI_RFLAGS(%rdx) | movq %rax,PTI_RFLAGS(%rdx) | ||||
movq TF_RSP(%rsp),%rax | movq TF_RSP(%rsp),%rax | ||||
movq %rax,PTI_RSP(%rdx) | movq %rax,PTI_RSP(%rdx) | ||||
movq TF_SS(%rsp),%rax | movq TF_SS(%rsp),%rax | ||||
movq %rax,PTI_SS(%rdx) | movq %rax,PTI_SS(%rdx) | ||||
movq PCPU(UCR3),%rax | movq PCPU(UCR3),%rax | ||||
andq PCPU(UCR3_LOAD_MASK),%rax | |||||
movq $PMAP_UCR3_NOMASK,PCPU(UCR3_LOAD_MASK) | |||||
swapgs | swapgs | ||||
movq %rdx,%rsp | movq %rdx,%rsp | ||||
movq %rax,%cr3 | movq %rax,%cr3 | ||||
popq %rdx | popq %rdx | ||||
popq %rax | popq %rax | ||||
addq $8,%rsp | addq $8,%rsp | ||||
jmp doreti_iret | jmp doreti_iret | ||||
1: swapgs | 1: swapgs | ||||
▲ Show 20 Lines • Show All 138 Lines • Show Last 20 Lines |