xref: /openbmc/linux/arch/powerpc/include/asm/extable.h (revision a36954f5)
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
30