aboutsummaryrefslogtreecommitdiff
path: root/lib/dis-arm-multi.inc.h
blob: 56cde3563f0019a654440a8b40f7848c35d82914 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "dis-thumb.inc.h"
#include "dis-thumb2.inc.h"
#include "dis-arm.inc.h"

static INLINE void P(dis)(tdis_ctx ctx) {
    if (ctx->pc_low_bit) {
        uint16_t op = *(uint16_t *) ctx->ptr;
        bool is_32 = (op >> 13 & 7) == 7 && (op >> 11 & 3) != 0;
        if (is_32)
            return P(dis_thumb2)(ctx);
        else
            return P(dis_thumb)(ctx);
    } else {
        return P(dis_arm)(ctx);
    }
}