mem.s revision 1.1 1 # mach: bpf
2 # output: pass\nexit 0 (0x0)\n
3 ;;; mem.s
4 ;;; Tests for BPF memory (ldx, stx, ..) instructions in simulator
5
6 .include "testutils.inc"
7
8 .text
9 .global main
10 .type main, @function
11 main:
12 lddw %r1, 0x1234deadbeef5678
13 mov %r2, 0x1000
14
15 ;; basic store/load check
16 stxb [%r2+0], %r1
17 stxh [%r2+2], %r1
18 stxw [%r2+4], %r1
19 stxdw [%r2+8], %r1
20
21 stb [%r2+16], 0x5a
22 sth [%r2+18], 0xcafe
23 stw [%r2+20], 0xbeefface
24 stdw [%r2+24], 0x7eadbeef
25
26 ldxb %r1, [%r2+16]
27 fail_ne %r1, 0x5a
28 ldxh %r1, [%r2+18]
29 fail_ne %r1, 0xffffffffffffcafe
30 ldxw %r1, [%r2+20]
31 fail_ne %r1, 0xffffffffbeefface
32 ldxdw %r1, [%r2+24]
33 fail_ne %r1, 0x7eadbeef
34
35 ldxb %r3, [%r2+0]
36 fail_ne %r3, 0x78
37 ldxh %r3, [%r2+2]
38 fail_ne %r3, 0x5678
39 ldxw %r3, [%r2+4]
40 fail_ne %r3, 0xffffffffbeef5678
41 ldxdw %r3, [%r2+8]
42 fail_ne %r3, 0x1234deadbeef5678
43
44 ldxw %r4, [%r2+10]
45 fail_ne %r4, 0xffffffffdeadbeef
46
47 ;; negative offsets
48 add %r2, 16
49 ldxh %r5, [%r2+-14]
50 fail_ne %r5, 0x5678
51 ldxw %r5, [%r2+-12]
52 fail_ne %r5, 0xffffffffbeef5678
53 ldxdw %r5, [%r2+-8]
54 fail_ne %r5, 0x1234deadbeef5678
55
56 pass
57