]> git.kernelconcepts.de Git - karo-tx-linux.git/blob - arch/powerpc/include/asm/extable.h
Merge branches 'uaccess.alpha', 'uaccess.arc', 'uaccess.arm', 'uaccess.arm64', 'uacce...
[karo-tx-linux.git] / arch / powerpc / include / asm / extable.h
1 #ifndef _ARCH_POWERPC_EXTABLE_H
2 #define _ARCH_POWERPC_EXTABLE_H
3
4 /*
5  * The exception table consists of pairs of relative addresses: the first is
6  * the address of an instruction that is allowed to fault, and the second is
7  * the address at which the program should continue.  No registers are
8  * modified, so it is entirely up to the continuation code to figure out what
9  * to do.
10  *
11  * All the routines below use bits of fixup code that are out of line with the
12  * main instruction path.  This means when everything is well, we don't even
13  * have to jump over them.  Further, they do not intrude on our cache or tlb
14  * entries.
15  */
16
17 #define ARCH_HAS_RELATIVE_EXTABLE
18
19 struct exception_table_entry {
20         int insn;
21         int fixup;
22 };
23
24 static inline unsigned long extable_fixup(const struct exception_table_entry *x)
25 {
26         return (unsigned long)&x->fixup + x->fixup;
27 }
28
29 #endif