/* Arguments: CH - channel executing the instruction OPCODE - opcode ARGS - array of 8-bit arguments LEN - number of elements in ARGS array  */
static void pl330_dmaadxh(PL330Chan *ch, uint8_t *args, bool ra, bool neg)
/* Arguments: CH - channel executing the instruction OPCODE - opcode ARGS - array of 8-bit arguments LEN - number of elements in ARGS array  */
static void pl330_dmaadxh(PL330Chan *ch, uint8_t *args, bool ra, bool neg)
{
    uint32_t im = (args[1] << 8) | args[0];
    if (neg) {
        im |= 0xffffu << 16;
    }
    if (ch->is_manager) {
        pl330_fault(ch, PL330_FAULT_UNDEF_INSTR);
        return;
    }
    if (ra) {
        ch->dst += im;
    } else {
        ch->src += im;
    }
}