bpf: add xBPF ISA
authorDavid Faust <david.faust@oracle.com>
Wed, 26 Aug 2020 13:39:00 +0000 (15:39 +0200)
committerJose E. Marchesi <jose.marchesi@oracle.com>
Wed, 26 Aug 2020 13:39:00 +0000 (15:39 +0200)
commit4449c81a85eef44b10532032207e8db5858c00ee
tree654bfee49c2ea7d88e009f2a37ce6b15d1edd18f
parent37f628c34d2d1f7e30c95b21f9c4c21819cb4534
bpf: add xBPF ISA

This patch adds support for xBPF, another ISA targetting the BPF
virtual architecture. For now, the primary difference between eBPF
and xBPF is that xBPF supports indirect calls through the
'call %reg' form of the call instruction.

bfd/
* archures.c (bfd_mach_xbpf): Define.
* bfd-in2.h: Regenerate.
* cpu-bpf.c (bfd_xbpf_arch) New.
(bfd_bpf_arch) Update next in list field to point to xbpf arch.

cpu/
* bpf.cpu (arch bpf): Add xbpf mach and isas.
(define-xbpf-isa) New pmacro.
(all-isas) Add xbpfle,xbpfbe.
(endian-isas): New pmacro.
(mach xbpf): New.
(model xbpf-def): Likewise.
(h-gpr): Add xbpf mach.
(f-dstle, f-srcle, dstle, srcle): Add xbpfle isa.
(f-dstbe, f-srcbe, dstbe, srcbe): Add xbpfbe isa.
(define-alu-insn-un): Use new endian-isas pmacro.
(define-alu-insn-bin, define-alu-insn-mov): Likewise.
(define-endian-insn, define-lddw): Likewise.
(dlind, dxli, dxsi, dsti): Likewise.
(define-cond-jump-insn, define-call-insn): Likewise.
(define-atomic-insns): Likewise.

gas/
* config/tc-bpf.c: Add option -mxbpf to select xbpf isa.
* testsuite/gas/bpf/indcall-1.d: New file.
* testsuite/gas/bpf/indcall-1.s: Likewise.
* testsuite/gas/bpf/indcall-bad-1.l: Likewise.
* testsuite/gas/bpf/indcall-bad-1.s: Likewise.
* testsuite/gas/bpf/bpf.exp: Run new tests.

opcodes/
* bpf-desc.c: Regenerate.
* bpf-desc.h: Likewise.
* bpf-opc.c: Likewise.
* bpf-opc.h: Likewise.
* disassemble.c (disassemble_init_for_target): Set bits for xBPF
ISA when appropriate.
19 files changed:
bfd/ChangeLog
bfd/archures.c
bfd/bfd-in2.h
bfd/cpu-bpf.c
cpu/ChangeLog
cpu/bpf.cpu
gas/ChangeLog
gas/config/tc-bpf.c
gas/testsuite/gas/bpf/bpf.exp
gas/testsuite/gas/bpf/indcall-1.d [new file with mode: 0644]
gas/testsuite/gas/bpf/indcall-1.s [new file with mode: 0644]
gas/testsuite/gas/bpf/indcall-bad-1.l [new file with mode: 0644]
gas/testsuite/gas/bpf/indcall-bad-1.s [new file with mode: 0644]
opcodes/ChangeLog
opcodes/bpf-desc.c
opcodes/bpf-desc.h
opcodes/bpf-opc.c
opcodes/bpf-opc.h
opcodes/disassemble.c