diff options
author | David S. Miller <davem@sunset.davemloft.net> | 2005-09-28 23:41:45 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2005-09-28 23:41:45 -0400 |
commit | 5fd29752f09cabff582f65c0ce35518db4c64937 (patch) | |
tree | b46e5c2c596d26125a7c2aac619fe1b52431f978 /arch/sparc64/kernel/head.S | |
parent | 8cf14af0a740fb7e9f94a203b5a989beb875d58f (diff) |
[SPARC64]: Fix fault handling in unaligned trap handler.
We were not calling kernel_mna_trap_fault() correctly.
Instead of being fancy, just return 0 vs. -EFAULT from
the assembler stubs, and handle that return value as
appropriate.
Create an "__retl_efault" stub for assembler exception
table entries and use it where possible.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc64/kernel/head.S')
-rw-r--r-- | arch/sparc64/kernel/head.S | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/arch/sparc64/kernel/head.S b/arch/sparc64/kernel/head.S index ecc748fb9ad7..89406f9649a9 100644 --- a/arch/sparc64/kernel/head.S +++ b/arch/sparc64/kernel/head.S | |||
@@ -540,8 +540,11 @@ bootup_user_stack_end: | |||
540 | prom_tba: .xword 0 | 540 | prom_tba: .xword 0 |
541 | tlb_type: .word 0 /* Must NOT end up in BSS */ | 541 | tlb_type: .word 0 /* Must NOT end up in BSS */ |
542 | .section ".fixup",#alloc,#execinstr | 542 | .section ".fixup",#alloc,#execinstr |
543 | .globl __ret_efault | 543 | |
544 | .globl __ret_efault, __retl_efault | ||
544 | __ret_efault: | 545 | __ret_efault: |
545 | ret | 546 | ret |
546 | restore %g0, -EFAULT, %o0 | 547 | restore %g0, -EFAULT, %o0 |
547 | 548 | __retl_efault: | |
549 | retl | ||
550 | mov -EFAULT, %o0 | ||