Commit 68acfdcb authored by Al Viro's avatar Al Viro

m68k: switch to generic extable.h

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent d597580d
...@@ -5,6 +5,7 @@ generic-y += device.h ...@@ -5,6 +5,7 @@ generic-y += device.h
generic-y += emergency-restart.h generic-y += emergency-restart.h
generic-y += errno.h generic-y += errno.h
generic-y += exec.h generic-y += exec.h
generic-y += extable.h
generic-y += futex.h generic-y += futex.h
generic-y += hw_irq.h generic-y += hw_irq.h
generic-y += ioctl.h generic-y += ioctl.h
......
...@@ -122,16 +122,6 @@ static inline void start_thread(struct pt_regs * regs, unsigned long pc, ...@@ -122,16 +122,6 @@ static inline void start_thread(struct pt_regs * regs, unsigned long pc,
wrusp(usp); wrusp(usp);
} }
#ifdef CONFIG_MMU
extern int handle_kernel_fault(struct pt_regs *regs);
#else
static inline int handle_kernel_fault(struct pt_regs *regs)
{
/* Any fault in kernel is fatal on non-mmu */
return 0;
}
#endif
/* Forward declaration, a strange C thing */ /* Forward declaration, a strange C thing */
struct task_struct; struct task_struct;
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
#include <asm/uaccess_mm.h> #include <asm/uaccess_mm.h>
#endif #endif
#include <asm/extable.h>
#ifdef CONFIG_CPU_HAS_NO_UNALIGNED #ifdef CONFIG_CPU_HAS_NO_UNALIGNED
#include <asm-generic/uaccess-unaligned.h> #include <asm-generic/uaccess-unaligned.h>
#else #else
......
...@@ -31,24 +31,6 @@ static inline int access_ok(int type, const void __user *addr, ...@@ -31,24 +31,6 @@ static inline int access_ok(int type, const void __user *addr,
#define MOVES "move" #define MOVES "move"
#endif #endif
/*
* The exception table consists of pairs of addresses: the first is the
* address of an instruction that is allowed to fault, and the second is
* the address at which the program should continue. No registers are
* modified, so it is entirely up to the continuation code to figure out
* what to do.
*
* All the routines below use bits of fixup code that are out of line
* with the main instruction path. This means when everything is well,
* we don't even have to jump over them. Further, they do not intrude
* on our cache or tlb entries.
*/
struct exception_table_entry
{
unsigned long insn, fixup;
};
extern int __put_user_bad(void); extern int __put_user_bad(void);
extern int __get_user_bad(void); extern int __get_user_bad(void);
......
...@@ -22,25 +22,6 @@ static inline int _access_ok(unsigned long addr, unsigned long size) ...@@ -22,25 +22,6 @@ static inline int _access_ok(unsigned long addr, unsigned long size)
return 1; return 1;
} }
/*
* The exception table consists of pairs of addresses: the first is the
* address of an instruction that is allowed to fault, and the second is
* the address at which the program should continue. No registers are
* modified, so it is entirely up to the continuation code to figure out
* what to do.
*
* All the routines below use bits of fixup code that are out of line
* with the main instruction path. This means when everything is well,
* we don't even have to jump over them. Further, they do not intrude
* on our cache or tlb entries.
*/
struct exception_table_entry
{
unsigned long insn, fixup;
};
/* /*
* These are the main single-value transfer routines. They automatically * These are the main single-value transfer routines. They automatically
* use the right size if we just have the right pointer type. * use the right size if we just have the right pointer type.
......
...@@ -88,7 +88,7 @@ static inline int frame_extra_sizes(int f) ...@@ -88,7 +88,7 @@ static inline int frame_extra_sizes(int f)
return frame_size_change[f]; return frame_size_change[f];
} }
int handle_kernel_fault(struct pt_regs *regs) int fixup_exception(struct pt_regs *regs)
{ {
const struct exception_table_entry *fixup; const struct exception_table_entry *fixup;
struct pt_regs *tregs; struct pt_regs *tregs;
......
...@@ -1016,8 +1016,13 @@ asmlinkage void trap_c(struct frame *fp) ...@@ -1016,8 +1016,13 @@ asmlinkage void trap_c(struct frame *fp)
/* traced a trapping instruction on a 68020/30, /* traced a trapping instruction on a 68020/30,
* real exception will be executed afterwards. * real exception will be executed afterwards.
*/ */
} else if (!handle_kernel_fault(&fp->ptregs)) return;
bad_super_trap(fp); }
#ifdef CONFIG_MMU
if (fixup_exception(&fp->ptregs))
return;
#endif
bad_super_trap(fp);
return; return;
} }
......
...@@ -32,7 +32,7 @@ int send_fault_sig(struct pt_regs *regs) ...@@ -32,7 +32,7 @@ int send_fault_sig(struct pt_regs *regs)
force_sig_info(siginfo.si_signo, force_sig_info(siginfo.si_signo,
&siginfo, current); &siginfo, current);
} else { } else {
if (handle_kernel_fault(regs)) if (fixup_exception(regs))
return -1; return -1;
//if (siginfo.si_signo == SIGBUS) //if (siginfo.si_signo == SIGBUS)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment