| .. | .. | 
|---|
| 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 |   | 
|---|