ra8-firmware 0.1.0
Bare-metal firmware for the Renesas RA8 family (RA8D2 / RA8P1)
Loading...
Searching...
No Matches
long_shift_insn_t Struct Reference

One decoded immediate-or-register Armv8.1-M long shift. More...

Data Fields

uint32_t rdalo
 Low destination register index (even).
uint32_t rdahi
 High destination register index.
uint32_t op
 k_lsh_op_lsll / _lsrl / _asrl.
bool by_reg
 true when the amount comes from rm.
uint32_t rm
 Register holding the amount (register form only).
uint32_t imm
 Shift amount 1..32 (immediate form only).

Detailed Description

One decoded immediate-or-register Armv8.1-M long shift.

Produced by internal_long_shift_decode and consumed by internal_long_shift_begin. The register form carries the shift amount in a register that can only be read once the core is at the instruction, so the amount is resolved separately by internal_long_shift_amount rather than being decoded here.

Invariant
rdalo is even; rdahi is never 0b1111.
Exactly one of by_reg / immediate use is meaningful: when by_reg is false imm holds the amount, otherwise rm names the register that does.
See also
internal_long_shift_decode

Definition at line 133 of file emu_seam_longshift.c.

Field Documentation

◆ by_reg

bool long_shift_insn_t::by_reg

true when the amount comes from rm.

Definition at line 137 of file emu_seam_longshift.c.

Referenced by emulate_long_shift_reg(), internal_install_seg_hooks(), internal_long_shift_amount(), and internal_long_shift_decode().

◆ imm

uint32_t long_shift_insn_t::imm

Shift amount 1..32 (immediate form only).

Definition at line 139 of file emu_seam_longshift.c.

Referenced by internal_long_shift_amount(), and internal_long_shift_decode().

◆ op

uint32_t long_shift_insn_t::op

◆ rdahi

uint32_t long_shift_insn_t::rdahi

High destination register index.

Definition at line 135 of file emu_seam_longshift.c.

Referenced by emulate_long_shift_reg(), and internal_long_shift_begin().

◆ rdalo

uint32_t long_shift_insn_t::rdalo

Low destination register index (even).

Definition at line 134 of file emu_seam_longshift.c.

Referenced by emulate_long_shift_reg(), and internal_long_shift_begin().

◆ rm

uint32_t long_shift_insn_t::rm

Register holding the amount (register form only).

Definition at line 138 of file emu_seam_longshift.c.

Referenced by internal_long_shift_amount(), and internal_long_shift_decode().


The documentation for this struct was generated from the following file: