aboutsummaryrefslogtreecommitdiff
path: root/sim
diff options
context:
space:
mode:
authorJose E. Marchesi <jose.marchesi@oracle.com>2023-07-26 11:44:20 +0200
committerJose E. Marchesi <jose.marchesi@oracle.com>2023-07-26 11:44:20 +0200
commit4200337219274445a17e16d18d3c113f555cc786 (patch)
tree2b0111b3400af2513d9d89736d58a1f7e5d9c2c1 /sim
parent04896832b2e79c042ea1f510b0458ac342512152 (diff)
downloadgdb-4200337219274445a17e16d18d3c113f555cc786.zip
gdb-4200337219274445a17e16d18d3c113f555cc786.tar.gz
gdb-4200337219274445a17e16d18d3c113f555cc786.tar.bz2
bpf: fix neg and neg32 BPF instructions in simulator
This patch fixes the semantics of the neg and neg32 BPF instructions in the simulator, and also updates the corresponding tests accordingly. Tested in target bpf-unknown-none.
Diffstat (limited to 'sim')
-rw-r--r--sim/bpf/bpf-sim.c4
-rw-r--r--sim/testsuite/bpf/alu.s4
-rw-r--r--sim/testsuite/bpf/alu32.s6
3 files changed, 7 insertions, 7 deletions
diff --git a/sim/bpf/bpf-sim.c b/sim/bpf/bpf-sim.c
index 8d3a28e..5e01dde 100644
--- a/sim/bpf/bpf-sim.c
+++ b/sim/bpf/bpf-sim.c
@@ -728,7 +728,7 @@ execute (SIM_CPU *cpu, struct bpf_insn *insn)
break;
case BPF_INSN_NEGR:
BPF_TRACE ("BPF_INSN_NEGR\n");
- bpf_regs[insn->dst] = - (int64_t) bpf_regs[insn->src];
+ bpf_regs[insn->dst] = - (int64_t) bpf_regs[insn->dst];
break;
case BPF_INSN_NEGI:
BPF_TRACE ("BPF_INSN_NEGI\n");
@@ -865,7 +865,7 @@ execute (SIM_CPU *cpu, struct bpf_insn *insn)
break;
case BPF_INSN_NEG32R:
BPF_TRACE ("BPF_INSN_NEG32R\n");
- bpf_regs[insn->dst] = (uint32_t) (- (int32_t) bpf_regs[insn->src]);
+ bpf_regs[insn->dst] = (uint32_t) (- (int32_t) bpf_regs[insn->dst]);
break;
case BPF_INSN_NEG32I:
BPF_TRACE ("BPF_INSN_NEG32I\n");
diff --git a/sim/testsuite/bpf/alu.s b/sim/testsuite/bpf/alu.s
index c073f67..4dc37b1 100644
--- a/sim/testsuite/bpf/alu.s
+++ b/sim/testsuite/bpf/alu.s
@@ -112,10 +112,10 @@ main:
fail_ne %r1, 0
;; neg
- neg %r2, %r2
+ neg %r2
fail_ne %r2, -5
mov %r1, -1025
- neg %r1, %r1
+ neg %r1
fail_ne %r1, 1025
pass
diff --git a/sim/testsuite/bpf/alu32.s b/sim/testsuite/bpf/alu32.s
index d797122..e8d5062 100644
--- a/sim/testsuite/bpf/alu32.s
+++ b/sim/testsuite/bpf/alu32.s
@@ -100,11 +100,11 @@ main:
;; neg
mov32 %r1, -1
mov32 %r2, 0x7fffffff
- neg32 %r1, %r1
- neg32 %r2, %r2
+ neg32 %r1
+ neg32 %r2
fail_ne32 %r1, 1
fail_ne %r2, 0x80000001 ; Note: check for (bad) sign-extend
- neg32 %r2, %r2
+ neg32 %r2
fail_ne32 %r2, 0x7fffffff
pass