summaryrefslogtreecommitdiff
path: root/sim/testsuite/bpf/mem.s
diff options
context:
space:
mode:
Diffstat (limited to 'sim/testsuite/bpf/mem.s')
-rw-r--r--sim/testsuite/bpf/mem.s56
1 files changed, 56 insertions, 0 deletions
diff --git a/sim/testsuite/bpf/mem.s b/sim/testsuite/bpf/mem.s
new file mode 100644
index 00000000000..f9c6a193eab
--- /dev/null
+++ b/sim/testsuite/bpf/mem.s
@@ -0,0 +1,56 @@
+# mach: bpf
+# output: pass\nexit 0 (0x0)\n
+;;; mem.s
+;;; Tests for BPF memory (ldx, stx, ..) instructions in simulator
+
+ .include "testutils.inc"
+
+ .text
+ .global main
+ .type main, @function
+main:
+ lddw %r1, 0x1234deadbeef5678
+ mov %r2, 0x1000
+
+ ;; basic store/load check
+ stxb [%r2+0], %r1
+ stxh [%r2+2], %r1
+ stxw [%r2+4], %r1
+ stxdw [%r2+8], %r1
+
+ stb [%r2+16], 0x5a
+ sth [%r2+18], 0xcafe
+ stw [%r2+20], 0xbeefface
+ stdw [%r2+24], 0x7eadbeef
+
+ ldxb %r1, [%r2+16]
+ fail_ne %r1, 0x5a
+ ldxh %r1, [%r2+18]
+ fail_ne %r1, 0xffffffffffffcafe
+ ldxw %r1, [%r2+20]
+ fail_ne %r1, 0xffffffffbeefface
+ ldxdw %r1, [%r2+24]
+ fail_ne %r1, 0x7eadbeef
+
+ ldxb %r3, [%r2+0]
+ fail_ne %r3, 0x78
+ ldxh %r3, [%r2+2]
+ fail_ne %r3, 0x5678
+ ldxw %r3, [%r2+4]
+ fail_ne %r3, 0xffffffffbeef5678
+ ldxdw %r3, [%r2+8]
+ fail_ne %r3, 0x1234deadbeef5678
+
+ ldxw %r4, [%r2+10]
+ fail_ne %r4, 0xffffffffdeadbeef
+
+ ;; negative offsets
+ add %r2, 16
+ ldxh %r5, [%r2+-14]
+ fail_ne %r5, 0x5678
+ ldxw %r5, [%r2+-12]
+ fail_ne %r5, 0xffffffffbeef5678
+ ldxdw %r5, [%r2+-8]
+ fail_ne %r5, 0x1234deadbeef5678
+
+ pass