Skip to content

Commit ed99335

Browse files
committed
* refactor .data and .rodata address computations in tests to use HI21/LO12
* refactor bounce tests to work with huge framebuffers
1 parent 842d6d4 commit ed99335

File tree

7 files changed

+60
-32
lines changed

7 files changed

+60
-32
lines changed

test_bounce.s

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,12 @@
1313
// symbols supplied by CLI
1414
.endif
1515

16+
// load 'far' address as a +/-4GB offset from PC
17+
.macro adrf Xn, addr:req
18+
adrp \Xn, \addr
19+
add \Xn, \Xn, :lo12:\addr
20+
.endm
21+
1622
.text
1723
_start:
1824
// clear screen
@@ -35,8 +41,8 @@ _start:
3541
svc 0
3642

3743
// access to fb: addr & len as per SYS_write
38-
mov x2, fb_len
39-
adr x1, fb
44+
ldr w2, =fb_len
45+
adrf x1, fb
4046

4147
// plot blip in fb
4248
mov w3, 0x5d5b
@@ -78,7 +84,6 @@ _start:
7884
mov x0, xzr
7985
svc 0
8086

81-
.section .rodata
8287
fb_clear_cmd:
8388
.ascii "\033[2J"
8489
fb_clear_len = . - fb_clear_cmd

test_bounce_neon.s

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ _start:
4444
svc 0
4545

4646
// access to fb: addr & len as per SYS_write
47-
mov x2, fb_len
47+
ldr x2, =fb_len
4848
adr x1, fb
4949

5050
// plot blips in fb

test_bounce_neon_aosoa.s

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,12 @@
1313
// symbols supplied by CLI
1414
.endif
1515

16+
// load 'far' address as a +/-4GB offset from PC
17+
.macro adrf Xn, addr:req
18+
adrp \Xn, \addr
19+
add \Xn, \Xn, :lo12:\addr
20+
.endm
21+
1622
.text
1723
_start:
1824
// clear screen
@@ -38,12 +44,12 @@ _start:
3844
svc 0
3945

4046
// access to fb: addr & len as per SYS_write
41-
mov x2, fb_len
42-
adr x1, fb
47+
ldr w2, =fb_len
48+
adrf x1, fb
4349

4450
// plot blips in fb
45-
adr x10, blip
46-
adr x11, blip_end
51+
adrf x10, blip
52+
adrf x11, blip_end
4753
mov x12, x11
4854
.Lpack_plot:
4955
// four Q-form regs hold SoA { pos_x, pos_y, step_x, step_y }
@@ -93,8 +99,8 @@ _start:
9399
svc 0
94100

95101
// erase blips from fb
96-
adr x10, blip_end
97-
adr x11, erase_end
102+
adrf x10, blip_end
103+
adrf x11, erase_end
98104
.Lpack_erase:
99105
ldp w4, w5, [x10], 8
100106
ldp w6, w7, [x10], 8
@@ -121,7 +127,6 @@ _start:
121127
mov x0, xzr
122128
svc 0
123129

124-
.section .rodata
125130
fb_clear_cmd:
126131
.ascii "\033[2J"
127132
fb_clear_len = . - fb_clear_cmd

test_bounce_neon_aosoa_bg.s

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,12 @@
2525
.equ GRID_STEP_Y_2, 0
2626
.equ GRID_STEP_Y_3, 1
2727

28+
// load 'far' address as a +/-4GB offset from PC
29+
.macro adrf Xn, addr:req
30+
adrp \Xn, \addr
31+
add \Xn, \Xn, :lo12:\addr
32+
.endm
33+
2834
.text
2935
_start:
3036
// clear screen
@@ -51,10 +57,8 @@ _start:
5157
adr x12, grid_step_xxx0
5258
adr x13, grid_step_1234
5359

54-
adrp x7, grid
55-
add x7, x7, :lo12:grid
56-
adrp x8, grid_end
57-
add x8, x8, :lo12:grid_end
60+
adrf x7, grid
61+
adrf x8, grid_end
5862
mov w9, wzr
5963
.Lgen_grid:
6064
// how many x-coords exceed end-of-line - 2?
@@ -139,14 +143,12 @@ _start:
139143
svc 0
140144

141145
// access to fb: addr & len as per SYS_write
142-
mov x2, fb_len
143-
adr x1, fb
146+
ldr w2, =fb_len
147+
adrf x1, fb
144148

145149
// plot grid in fb
146-
adrp x10, grid
147-
add x10, x10, :lo12:grid
148-
adrp x11, grid_end
149-
add x11, x11, :lo12:grid_end
150+
adrf x10, grid
151+
adrf x11, grid_end
150152
mov x12, x11
151153
.Lgrid_plot:
152154
// four Q-form regs hold SoA { pos_x, pos_y, step_x, step_y }
@@ -192,8 +194,8 @@ _start:
192194
bne .Lgrid_plot
193195

194196
// plot blips in fb
195-
adr x10, blip
196-
adr x11, blip_end
197+
adrf x10, blip
198+
adrf x11, blip_end
197199
mov x12, x11
198200
.Lpack_plot:
199201
// four Q-form regs hold SoA { pos_x, pos_y, step_x, step_y }
@@ -243,10 +245,8 @@ _start:
243245
svc 0
244246

245247
// erase grid from fb
246-
adrp x10, grid_end
247-
add x10, x10, :lo12:grid_end
248-
adrp x11, grid_erase_end
249-
add x11, x11, :lo12:grid_erase_end
248+
adrf x10, grid_end
249+
adrf x11, grid_erase_end
250250
.Lgrid_erase:
251251
ldp w4, w5, [x10], 8
252252
ldp w6, w7, [x10], 8
@@ -261,8 +261,8 @@ _start:
261261
bne .Lgrid_erase
262262

263263
// erase blips from fb
264-
adr x10, blip_end
265-
adr x11, erase_end
264+
adrf x10, blip_end
265+
adrf x11, erase_end
266266
.Lpack_erase:
267267
ldp w4, w5, [x10], 8
268268
ldp w6, w7, [x10], 8

test_cross_1.s

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,16 @@
44
.equ SYS_exit, 93
55
.equ STDOUT_FILENO, 1
66

7+
// load 'far' address as a +/-4GB offset from PC
8+
.macro adrf Xn, addr:req
9+
adrp \Xn, \addr
10+
add \Xn, \Xn, :lo12:\addr
11+
.endm
12+
713
.text
814
_start:
915
mov x8, SYS_write
10-
adr x1, buf
16+
adrf x1, buf
1117
ldrb w2, [x1, -1]
1218
mov x0, STDOUT_FILENO
1319
svc 0

test_data.s

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,17 @@
44
.equ SYS_exit, 93
55
.equ STDOUT_FILENO, 1
66

7+
// load 'far' address as a +/-4GB offset from PC
8+
.macro adrf Xn, addr:req
9+
adrp \Xn, \addr
10+
add \Xn, \Xn, :lo12:\addr
11+
.endm
12+
713
.text
814
_start:
915
mov x8, SYS_write
1016
mov x2, len
11-
adr x1, buf
17+
adrf x1, buf
1218
ldr w3, =0x4c45525f
1319
str w3, [x1, 13]
1420
mov x0, STDOUT_FILENO

test_rodata.s

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,17 @@
44
.equ SYS_exit, 93
55
.equ STDOUT_FILENO, 1
66

7+
// load 'far' address as a +/-4GB offset from PC
8+
.macro adrf Xn, addr:req
9+
adrp \Xn, \addr
10+
add \Xn, \Xn, :lo12:\addr
11+
.endm
12+
713
.text
814
_start:
915
mov x8, SYS_write
1016
mov x2, len
11-
adr x1, buf
17+
adrf x1, buf
1218
mov x0, STDOUT_FILENO
1319
svc 0
1420

0 commit comments

Comments
 (0)