1
2
3
4
5
6
7
8
9
10
11
12#include <asm/ppc_asm.h>
13#include <asm/ptrace.h>
14#include <asm/asm-offsets.h>
15
16#define OPT_SLOT_SIZE 65536
17
18 .balign 4
19
20
21
22
23
24
25 .global optinsn_slot
26optinsn_slot:
27 .space OPT_SLOT_SIZE
28
29
30
31
32
33
34 .global optprobe_template_entry
35optprobe_template_entry:
36
37 stdu r1,-INT_FRAME_SIZE(r1)
38 SAVE_GPR(0,r1)
39
40 addi r0,r1,INT_FRAME_SIZE
41 std r0,GPR1(r1)
42 SAVE_10GPRS(2,r1)
43 SAVE_10GPRS(12,r1)
44 SAVE_10GPRS(22,r1)
45
46 mfmsr r5
47 std r5,_MSR(r1)
48 li r5,0x700
49 std r5,_TRAP(r1)
50 li r5,0
51 std r5,ORIG_GPR3(r1)
52 std r5,RESULT(r1)
53 mfctr r5
54 std r5,_CTR(r1)
55 mflr r5
56 std r5,_LINK(r1)
57 mfspr r5,SPRN_XER
58 std r5,_XER(r1)
59 mfcr r5
60 std r5,_CCR(r1)
61 lbz r5,PACAIRQSOFTMASK(r13)
62 std r5,SOFTE(r1)
63
64
65
66
67
68
69 ld r2,PACATOC(r13)
70
71 .global optprobe_template_op_address
72optprobe_template_op_address:
73
74
75
76
77 nop
78 nop
79 nop
80 nop
81 nop
82
83 addi r4,r1,STACK_FRAME_OVERHEAD
84
85 .global optprobe_template_call_handler
86optprobe_template_call_handler:
87
88 nop
89
90
91
92
93
94 addi r3,r1,STACK_FRAME_OVERHEAD
95
96 .global optprobe_template_insn
97optprobe_template_insn:
98
99 nop
100 nop
101
102 .global optprobe_template_call_emulate
103optprobe_template_call_emulate:
104
105 nop
106
107
108
109
110
111 ld r5,_MSR(r1)
112 mtmsr r5
113 ld r5,_CTR(r1)
114 mtctr r5
115 ld r5,_LINK(r1)
116 mtlr r5
117 ld r5,_XER(r1)
118 mtxer r5
119 ld r5,_CCR(r1)
120 mtcr r5
121 REST_GPR(0,r1)
122 REST_10GPRS(2,r1)
123 REST_10GPRS(12,r1)
124 REST_10GPRS(22,r1)
125
126 addi r1,r1,INT_FRAME_SIZE
127
128 .global optprobe_template_ret
129optprobe_template_ret:
130
131 nop
132
133 .global optprobe_template_end
134optprobe_template_end:
135