@@ -54,39 +54,39 @@ static void __init test_branch_iform(void)
54
54
check (!instr_is_branch_iform (ppc_inst (0x7bfffffd )));
55
55
56
56
/* Absolute branch to 0x100 */
57
- patch_instruction (iptr , ppc_inst (0x48000103 ));
57
+ ppc_inst_write (iptr , ppc_inst (0x48000103 ));
58
58
check (instr_is_branch_to_addr (iptr , 0x100 ));
59
59
/* Absolute branch to 0x420fc */
60
- patch_instruction (iptr , ppc_inst (0x480420ff ));
60
+ ppc_inst_write (iptr , ppc_inst (0x480420ff ));
61
61
check (instr_is_branch_to_addr (iptr , 0x420fc ));
62
62
/* Maximum positive relative branch, + 20MB - 4B */
63
- patch_instruction (iptr , ppc_inst (0x49fffffc ));
63
+ ppc_inst_write (iptr , ppc_inst (0x49fffffc ));
64
64
check (instr_is_branch_to_addr (iptr , addr + 0x1FFFFFC ));
65
65
/* Smallest negative relative branch, - 4B */
66
- patch_instruction (iptr , ppc_inst (0x4bfffffc ));
66
+ ppc_inst_write (iptr , ppc_inst (0x4bfffffc ));
67
67
check (instr_is_branch_to_addr (iptr , addr - 4 ));
68
68
/* Largest negative relative branch, - 32 MB */
69
- patch_instruction (iptr , ppc_inst (0x4a000000 ));
69
+ ppc_inst_write (iptr , ppc_inst (0x4a000000 ));
70
70
check (instr_is_branch_to_addr (iptr , addr - 0x2000000 ));
71
71
72
72
/* Branch to self, with link */
73
73
err = create_branch (& instr , iptr , addr , BRANCH_SET_LINK );
74
- patch_instruction (iptr , instr );
74
+ ppc_inst_write (iptr , instr );
75
75
check (instr_is_branch_to_addr (iptr , addr ));
76
76
77
77
/* Branch to self - 0x100, with link */
78
78
err = create_branch (& instr , iptr , addr - 0x100 , BRANCH_SET_LINK );
79
- patch_instruction (iptr , instr );
79
+ ppc_inst_write (iptr , instr );
80
80
check (instr_is_branch_to_addr (iptr , addr - 0x100 ));
81
81
82
82
/* Branch to self + 0x100, no link */
83
83
err = create_branch (& instr , iptr , addr + 0x100 , 0 );
84
- patch_instruction (iptr , instr );
84
+ ppc_inst_write (iptr , instr );
85
85
check (instr_is_branch_to_addr (iptr , addr + 0x100 ));
86
86
87
87
/* Maximum relative negative offset, - 32 MB */
88
88
err = create_branch (& instr , iptr , addr - 0x2000000 , BRANCH_SET_LINK );
89
- patch_instruction (iptr , instr );
89
+ ppc_inst_write (iptr , instr );
90
90
check (instr_is_branch_to_addr (iptr , addr - 0x2000000 ));
91
91
92
92
/* Out of range relative negative offset, - 32 MB + 4*/
@@ -103,7 +103,7 @@ static void __init test_branch_iform(void)
103
103
104
104
/* Check flags are masked correctly */
105
105
err = create_branch (& instr , iptr , addr , 0xFFFFFFFC );
106
- patch_instruction (iptr , instr );
106
+ ppc_inst_write (iptr , instr );
107
107
check (instr_is_branch_to_addr (iptr , addr ));
108
108
check (ppc_inst_equal (instr , ppc_inst (0x48000000 )));
109
109
}
@@ -143,42 +143,42 @@ static void __init test_branch_bform(void)
143
143
check (!instr_is_branch_bform (ppc_inst (0x7bffffff )));
144
144
145
145
/* Absolute conditional branch to 0x100 */
146
- patch_instruction (iptr , ppc_inst (0x43ff0103 ));
146
+ ppc_inst_write (iptr , ppc_inst (0x43ff0103 ));
147
147
check (instr_is_branch_to_addr (iptr , 0x100 ));
148
148
/* Absolute conditional branch to 0x20fc */
149
- patch_instruction (iptr , ppc_inst (0x43ff20ff ));
149
+ ppc_inst_write (iptr , ppc_inst (0x43ff20ff ));
150
150
check (instr_is_branch_to_addr (iptr , 0x20fc ));
151
151
/* Maximum positive relative conditional branch, + 32 KB - 4B */
152
- patch_instruction (iptr , ppc_inst (0x43ff7ffc ));
152
+ ppc_inst_write (iptr , ppc_inst (0x43ff7ffc ));
153
153
check (instr_is_branch_to_addr (iptr , addr + 0x7FFC ));
154
154
/* Smallest negative relative conditional branch, - 4B */
155
- patch_instruction (iptr , ppc_inst (0x43fffffc ));
155
+ ppc_inst_write (iptr , ppc_inst (0x43fffffc ));
156
156
check (instr_is_branch_to_addr (iptr , addr - 4 ));
157
157
/* Largest negative relative conditional branch, - 32 KB */
158
- patch_instruction (iptr , ppc_inst (0x43ff8000 ));
158
+ ppc_inst_write (iptr , ppc_inst (0x43ff8000 ));
159
159
check (instr_is_branch_to_addr (iptr , addr - 0x8000 ));
160
160
161
161
/* All condition code bits set & link */
162
162
flags = 0x3ff000 | BRANCH_SET_LINK ;
163
163
164
164
/* Branch to self */
165
165
err = create_cond_branch (& instr , iptr , addr , flags );
166
- patch_instruction (iptr , instr );
166
+ ppc_inst_write (iptr , instr );
167
167
check (instr_is_branch_to_addr (iptr , addr ));
168
168
169
169
/* Branch to self - 0x100 */
170
170
err = create_cond_branch (& instr , iptr , addr - 0x100 , flags );
171
- patch_instruction (iptr , instr );
171
+ ppc_inst_write (iptr , instr );
172
172
check (instr_is_branch_to_addr (iptr , addr - 0x100 ));
173
173
174
174
/* Branch to self + 0x100 */
175
175
err = create_cond_branch (& instr , iptr , addr + 0x100 , flags );
176
- patch_instruction (iptr , instr );
176
+ ppc_inst_write (iptr , instr );
177
177
check (instr_is_branch_to_addr (iptr , addr + 0x100 ));
178
178
179
179
/* Maximum relative negative offset, - 32 KB */
180
180
err = create_cond_branch (& instr , iptr , addr - 0x8000 , flags );
181
- patch_instruction (iptr , instr );
181
+ ppc_inst_write (iptr , instr );
182
182
check (instr_is_branch_to_addr (iptr , addr - 0x8000 ));
183
183
184
184
/* Out of range relative negative offset, - 32 KB + 4*/
@@ -195,7 +195,7 @@ static void __init test_branch_bform(void)
195
195
196
196
/* Check flags are masked correctly */
197
197
err = create_cond_branch (& instr , iptr , addr , 0xFFFFFFFC );
198
- patch_instruction (iptr , instr );
198
+ ppc_inst_write (iptr , instr );
199
199
check (instr_is_branch_to_addr (iptr , addr ));
200
200
check (ppc_inst_equal (instr , ppc_inst (0x43FF0000 )));
201
201
}
@@ -215,52 +215,57 @@ static void __init test_translate_branch(void)
215
215
/* Simple case, branch to self moved a little */
216
216
p = buf ;
217
217
addr = (unsigned long )p ;
218
- patch_branch (p , addr , 0 );
218
+ create_branch (& instr , p , addr , 0 );
219
+ ppc_inst_write (p , instr );
219
220
check (instr_is_branch_to_addr (p , addr ));
220
221
q = p + 4 ;
221
222
translate_branch (& instr , q , p );
222
- patch_instruction (q , instr );
223
+ ppc_inst_write (q , instr );
223
224
check (instr_is_branch_to_addr (q , addr ));
224
225
225
226
/* Maximum negative case, move b . to addr + 32 MB */
226
227
p = buf ;
227
228
addr = (unsigned long )p ;
228
- patch_branch (p , addr , 0 );
229
+ create_branch (& instr , p , addr , 0 );
230
+ ppc_inst_write (p , instr );
229
231
q = buf + 0x2000000 ;
230
232
translate_branch (& instr , q , p );
231
- patch_instruction (q , instr );
233
+ ppc_inst_write (q , instr );
232
234
check (instr_is_branch_to_addr (p , addr ));
233
235
check (instr_is_branch_to_addr (q , addr ));
234
236
check (ppc_inst_equal (ppc_inst_read (q ), ppc_inst (0x4a000000 )));
235
237
236
238
/* Maximum positive case, move x to x - 32 MB + 4 */
237
239
p = buf + 0x2000000 ;
238
240
addr = (unsigned long )p ;
239
- patch_branch (p , addr , 0 );
241
+ create_branch (& instr , p , addr , 0 );
242
+ ppc_inst_write (p , instr );
240
243
q = buf + 4 ;
241
244
translate_branch (& instr , q , p );
242
- patch_instruction (q , instr );
245
+ ppc_inst_write (q , instr );
243
246
check (instr_is_branch_to_addr (p , addr ));
244
247
check (instr_is_branch_to_addr (q , addr ));
245
248
check (ppc_inst_equal (ppc_inst_read (q ), ppc_inst (0x49fffffc )));
246
249
247
250
/* Jump to x + 16 MB moved to x + 20 MB */
248
251
p = buf ;
249
252
addr = 0x1000000 + (unsigned long )buf ;
250
- patch_branch (p , addr , BRANCH_SET_LINK );
253
+ create_branch (& instr , p , addr , BRANCH_SET_LINK );
254
+ ppc_inst_write (p , instr );
251
255
q = buf + 0x1400000 ;
252
256
translate_branch (& instr , q , p );
253
- patch_instruction (q , instr );
257
+ ppc_inst_write (q , instr );
254
258
check (instr_is_branch_to_addr (p , addr ));
255
259
check (instr_is_branch_to_addr (q , addr ));
256
260
257
261
/* Jump to x + 16 MB moved to x - 16 MB + 4 */
258
262
p = buf + 0x1000000 ;
259
263
addr = 0x2000000 + (unsigned long )buf ;
260
- patch_branch (p , addr , 0 );
264
+ create_branch (& instr , p , addr , 0 );
265
+ ppc_inst_write (p , instr );
261
266
q = buf + 4 ;
262
267
translate_branch (& instr , q , p );
263
- patch_instruction (q , instr );
268
+ ppc_inst_write (q , instr );
264
269
check (instr_is_branch_to_addr (p , addr ));
265
270
check (instr_is_branch_to_addr (q , addr ));
266
271
@@ -271,21 +276,21 @@ static void __init test_translate_branch(void)
271
276
p = buf ;
272
277
addr = (unsigned long )p ;
273
278
create_cond_branch (& instr , p , addr , 0 );
274
- patch_instruction (p , instr );
279
+ ppc_inst_write (p , instr );
275
280
check (instr_is_branch_to_addr (p , addr ));
276
281
q = buf + 4 ;
277
282
translate_branch (& instr , q , p );
278
- patch_instruction (q , instr );
283
+ ppc_inst_write (q , instr );
279
284
check (instr_is_branch_to_addr (q , addr ));
280
285
281
286
/* Maximum negative case, move b . to addr + 32 KB */
282
287
p = buf ;
283
288
addr = (unsigned long )p ;
284
289
create_cond_branch (& instr , p , addr , 0xFFFFFFFC );
285
- patch_instruction (p , instr );
290
+ ppc_inst_write (p , instr );
286
291
q = buf + 0x8000 ;
287
292
translate_branch (& instr , q , p );
288
- patch_instruction (q , instr );
293
+ ppc_inst_write (q , instr );
289
294
check (instr_is_branch_to_addr (p , addr ));
290
295
check (instr_is_branch_to_addr (q , addr ));
291
296
check (ppc_inst_equal (ppc_inst_read (q ), ppc_inst (0x43ff8000 )));
@@ -294,10 +299,10 @@ static void __init test_translate_branch(void)
294
299
p = buf + 0x8000 ;
295
300
addr = (unsigned long )p ;
296
301
create_cond_branch (& instr , p , addr , 0xFFFFFFFC );
297
- patch_instruction (p , instr );
302
+ ppc_inst_write (p , instr );
298
303
q = buf + 4 ;
299
304
translate_branch (& instr , q , p );
300
- patch_instruction (q , instr );
305
+ ppc_inst_write (q , instr );
301
306
check (instr_is_branch_to_addr (p , addr ));
302
307
check (instr_is_branch_to_addr (q , addr ));
303
308
check (ppc_inst_equal (ppc_inst_read (q ), ppc_inst (0x43ff7ffc )));
@@ -306,21 +311,21 @@ static void __init test_translate_branch(void)
306
311
p = buf ;
307
312
addr = 0x3000 + (unsigned long )buf ;
308
313
create_cond_branch (& instr , p , addr , BRANCH_SET_LINK );
309
- patch_instruction (p , instr );
314
+ ppc_inst_write (p , instr );
310
315
q = buf + 0x5000 ;
311
316
translate_branch (& instr , q , p );
312
- patch_instruction (q , instr );
317
+ ppc_inst_write (q , instr );
313
318
check (instr_is_branch_to_addr (p , addr ));
314
319
check (instr_is_branch_to_addr (q , addr ));
315
320
316
321
/* Jump to x + 8 KB moved to x - 8 KB + 4 */
317
322
p = buf + 0x2000 ;
318
323
addr = 0x4000 + (unsigned long )buf ;
319
324
create_cond_branch (& instr , p , addr , 0 );
320
- patch_instruction (p , instr );
325
+ ppc_inst_write (p , instr );
321
326
q = buf + 4 ;
322
327
translate_branch (& instr , q , p );
323
- patch_instruction (q , instr );
328
+ ppc_inst_write (q , instr );
324
329
check (instr_is_branch_to_addr (p , addr ));
325
330
check (instr_is_branch_to_addr (q , addr ));
326
331
0 commit comments