Changeset View
Changeset View
Standalone View
Standalone View
head/sys/amd64/amd64/support.S
Show First 20 Lines • Show All 450 Lines • ▼ Show 20 Lines | ENTRY(fueword32) | ||||
xorl %eax,%eax | xorl %eax,%eax | ||||
movl (%rdi),%r11d | movl (%rdi),%r11d | ||||
movq %rax,PCB_ONFAULT(%rcx) | movq %rax,PCB_ONFAULT(%rcx) | ||||
movl %r11d,(%rsi) | movl %r11d,(%rsi) | ||||
POP_FRAME_POINTER | POP_FRAME_POINTER | ||||
ret | ret | ||||
END(fueword32) | END(fueword32) | ||||
/* | |||||
* fuswintr() and suswintr() are specialized variants of fuword16() and | |||||
* suword16(), respectively. They are called from the profiling code, | |||||
* potentially at interrupt time. If they fail, that's okay; good things | |||||
* will happen later. They always fail for now, until the trap code is | |||||
* able to deal with this. | |||||
*/ | |||||
ALTENTRY(suswintr) | |||||
ENTRY(fuswintr) | |||||
movq $-1,%rax | |||||
ret | |||||
END(suswintr) | |||||
END(fuswintr) | |||||
ENTRY(fuword16) | ENTRY(fuword16) | ||||
PUSH_FRAME_POINTER | PUSH_FRAME_POINTER | ||||
movq PCPU(CURPCB),%rcx | movq PCPU(CURPCB),%rcx | ||||
movq $fusufault,PCB_ONFAULT(%rcx) | movq $fusufault,PCB_ONFAULT(%rcx) | ||||
movq $VM_MAXUSER_ADDRESS-2,%rax | movq $VM_MAXUSER_ADDRESS-2,%rax | ||||
cmpq %rax,%rdi | cmpq %rax,%rdi | ||||
ja fusufault | ja fusufault | ||||
▲ Show 20 Lines • Show All 437 Lines • Show Last 20 Lines |