X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=kitten%2Finclude%2Farch-x86_64%2Fextable.h;fp=kitten%2Finclude%2Farch-x86_64%2Fextable.h;h=79f88b1c859a722a77a37be0d60ea505c5130c07;hb=66a1a4c7a9edcd7d8bc207aca093d694a6e6b5b2;hp=0000000000000000000000000000000000000000;hpb=f7cf9c19ecb0a589dd45ae0d2c91814bd3c2acc2;p=palacios.git diff --git a/kitten/include/arch-x86_64/extable.h b/kitten/include/arch-x86_64/extable.h new file mode 100644 index 0000000..79f88b1 --- /dev/null +++ b/kitten/include/arch-x86_64/extable.h @@ -0,0 +1,24 @@ +#ifndef _ASM_X86_64_EXTABLE_H +#define _ASM_X86_64_EXTABLE_H + +/* + * 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. + * + * The nice thing about this mechanism is that the fixup code is completely + * 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; /* Instruction addr that is allowed to fault */ + unsigned long fixup; /* Fixup handler address */ +}; + +#define ARCH_HAS_SEARCH_EXTABLE + +#endif