.. | .. |
---|
58 | 58 | /* copy of the original instruction */ |
---|
59 | 59 | kprobe_opcode_t *insn; |
---|
60 | 60 | /* |
---|
61 | | - * boostable = false: This instruction type is not boostable. |
---|
62 | | - * boostable = true: This instruction has been boosted: we have |
---|
| 61 | + * boostable = 0: This instruction type is not boostable. |
---|
| 62 | + * boostable = 1: This instruction has been boosted: we have |
---|
63 | 63 | * added a relative jump after the instruction copy in insn, |
---|
64 | 64 | * so no single-step and fixup are needed (unless there's |
---|
65 | 65 | * a post_handler). |
---|
66 | 66 | */ |
---|
67 | | - bool boostable; |
---|
68 | | - bool if_modifier; |
---|
| 67 | + unsigned boostable:1; |
---|
| 68 | + unsigned char size; /* The size of insn */ |
---|
| 69 | + union { |
---|
| 70 | + unsigned char opcode; |
---|
| 71 | + struct { |
---|
| 72 | + unsigned char type; |
---|
| 73 | + } jcc; |
---|
| 74 | + struct { |
---|
| 75 | + unsigned char type; |
---|
| 76 | + unsigned char asize; |
---|
| 77 | + } loop; |
---|
| 78 | + struct { |
---|
| 79 | + unsigned char reg; |
---|
| 80 | + } indirect; |
---|
| 81 | + }; |
---|
| 82 | + s32 rel32; /* relative offset must be s32, s16, or s8 */ |
---|
| 83 | + void (*emulate_op)(struct kprobe *p, struct pt_regs *regs); |
---|
69 | 84 | /* Number of bytes of text poked */ |
---|
70 | 85 | int tp_len; |
---|
71 | 86 | }; |
---|
.. | .. |
---|
104 | 119 | extern int kprobe_exceptions_notify(struct notifier_block *self, |
---|
105 | 120 | unsigned long val, void *data); |
---|
106 | 121 | extern int kprobe_int3_handler(struct pt_regs *regs); |
---|
107 | | -extern int kprobe_debug_handler(struct pt_regs *regs); |
---|
108 | 122 | |
---|
109 | 123 | #else |
---|
110 | 124 | |
---|