Fix some misunderstandings about 64 bit extension.
Fix fuword/suword - they're supposed to be 'long' - ie: point them at fuword64/suword64 instead of the incorrect 32 bit versions.
This commit is contained in:
parent
13d56a9a90
commit
5d5ca6d75e
@ -358,6 +358,9 @@ ENTRY(fuword64)
|
||||
movq $0,PCB_ONFAULT(%rcx)
|
||||
ret
|
||||
|
||||
ENTRY(fuword)
|
||||
jmp fuword64
|
||||
|
||||
ENTRY(fuword32)
|
||||
movq PCPU(CURPCB),%rcx
|
||||
movq $fusufault,PCB_ONFAULT(%rcx)
|
||||
@ -366,15 +369,10 @@ ENTRY(fuword32)
|
||||
cmpq %rax,%rdi /* verify address is valid */
|
||||
ja fusufault
|
||||
|
||||
/* XXX use the 64 extend */
|
||||
xorq %rax, %rax
|
||||
movl (%rdi),%eax
|
||||
movq $0,PCB_ONFAULT(%rcx)
|
||||
ret
|
||||
|
||||
ENTRY(fuword)
|
||||
jmp fuword32
|
||||
|
||||
/*
|
||||
* These two routines are called from the profiling code, potentially
|
||||
* at interrupt time. If they fail, that's okay, good things will
|
||||
@ -397,8 +395,6 @@ ENTRY(fuword16)
|
||||
cmpq %rax,%rdi
|
||||
ja fusufault
|
||||
|
||||
/* XXX use the 64 extend */
|
||||
xorq %rax, %rax
|
||||
movzwl (%rdi),%eax
|
||||
movq $0,PCB_ONFAULT(%rcx)
|
||||
ret
|
||||
@ -414,8 +410,6 @@ ENTRY(fubyte)
|
||||
cmpq %rax,%rdi
|
||||
ja fusufault
|
||||
|
||||
/* XXX use the 64 extend */
|
||||
xorq %rax, %rax
|
||||
movzbl (%rdi),%eax
|
||||
movq $0,PCB_ONFAULT(%rcx)
|
||||
ret
|
||||
@ -448,6 +442,9 @@ ENTRY(suword64)
|
||||
movq %rax,PCB_ONFAULT(%rcx)
|
||||
ret
|
||||
|
||||
ENTRY(suword)
|
||||
jmp suword64
|
||||
|
||||
ENTRY(suword32)
|
||||
movq PCPU(CURPCB),%rcx
|
||||
movq $fusufault,PCB_ONFAULT(%rcx)
|
||||
@ -462,9 +459,6 @@ ENTRY(suword32)
|
||||
movq %rax,PCB_ONFAULT(%rcx)
|
||||
ret
|
||||
|
||||
ENTRY(suword)
|
||||
jmp suword32
|
||||
|
||||
/*
|
||||
* suword16 - MP SAFE
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user