diff options
Diffstat (limited to 'arch/x86/mm/extable.c')
| -rw-r--r-- | arch/x86/mm/extable.c | 31 |
1 files changed, 0 insertions, 31 deletions
diff --git a/arch/x86/mm/extable.c b/arch/x86/mm/extable.c index 61b41ca3b5a2..d0474ad2a6e5 100644 --- a/arch/x86/mm/extable.c +++ b/arch/x86/mm/extable.c | |||
| @@ -35,34 +35,3 @@ int fixup_exception(struct pt_regs *regs) | |||
| 35 | 35 | ||
| 36 | return 0; | 36 | return 0; |
| 37 | } | 37 | } |
| 38 | |||
| 39 | #ifdef CONFIG_X86_64 | ||
| 40 | /* | ||
| 41 | * Need to defined our own search_extable on X86_64 to work around | ||
| 42 | * a B stepping K8 bug. | ||
| 43 | */ | ||
| 44 | const struct exception_table_entry * | ||
| 45 | search_extable(const struct exception_table_entry *first, | ||
| 46 | const struct exception_table_entry *last, | ||
| 47 | unsigned long value) | ||
| 48 | { | ||
| 49 | /* B stepping K8 bug */ | ||
| 50 | if ((value >> 32) == 0) | ||
| 51 | value |= 0xffffffffUL << 32; | ||
| 52 | |||
| 53 | while (first <= last) { | ||
| 54 | const struct exception_table_entry *mid; | ||
| 55 | long diff; | ||
| 56 | |||
| 57 | mid = (last - first) / 2 + first; | ||
| 58 | diff = mid->insn - value; | ||
| 59 | if (diff == 0) | ||
| 60 | return mid; | ||
| 61 | else if (diff < 0) | ||
| 62 | first = mid+1; | ||
| 63 | else | ||
| 64 | last = mid-1; | ||
| 65 | } | ||
| 66 | return NULL; | ||
| 67 | } | ||
| 68 | #endif | ||
