xref: /qemu/target/loongarch/translate.h (revision 143d6785ef725aff6d09bc112c21119c32d9d0ae)
1f8da88d7SSong Gao /* SPDX-License-Identifier: GPL-2.0-or-later */
2f8da88d7SSong Gao /*
3f8da88d7SSong Gao  * LoongArch translation routines.
4f8da88d7SSong Gao  *
5f8da88d7SSong Gao  * Copyright (c) 2021 Loongson Technology Corporation Limited
6f8da88d7SSong Gao  */
7f8da88d7SSong Gao 
8f8da88d7SSong Gao #ifndef TARGET_LOONGARCH_TRANSLATE_H
9f8da88d7SSong Gao #define TARGET_LOONGARCH_TRANSLATE_H
10f8da88d7SSong Gao 
11f8da88d7SSong Gao #include "exec/translator.h"
12f8da88d7SSong Gao 
13*143d6785SSong Gao #define TRANS(NAME, FUNC, ...) \
14*143d6785SSong Gao     static bool trans_##NAME(DisasContext *ctx, arg_##NAME * a) \
15*143d6785SSong Gao     { return FUNC(ctx, a, __VA_ARGS__); }
16*143d6785SSong Gao 
17*143d6785SSong Gao /*
18*143d6785SSong Gao  * If an operation is being performed on less than TARGET_LONG_BITS,
19*143d6785SSong Gao  * it may require the inputs to be sign- or zero-extended; which will
20*143d6785SSong Gao  * depend on the exact operation being performed.
21*143d6785SSong Gao  */
22*143d6785SSong Gao typedef enum {
23*143d6785SSong Gao     EXT_NONE,
24*143d6785SSong Gao     EXT_SIGN,
25*143d6785SSong Gao     EXT_ZERO,
26*143d6785SSong Gao } DisasExtend;
27*143d6785SSong Gao 
28f8da88d7SSong Gao typedef struct DisasContext {
29f8da88d7SSong Gao     DisasContextBase base;
30f8da88d7SSong Gao     target_ulong page_start;
31f8da88d7SSong Gao     uint32_t opcode;
32f8da88d7SSong Gao     int mem_idx;
33*143d6785SSong Gao     TCGv zero;
34*143d6785SSong Gao     /* Space for 3 operands plus 1 extra for address computation. */
35*143d6785SSong Gao     TCGv temp[4];
36*143d6785SSong Gao     uint8_t ntemp;
37f8da88d7SSong Gao } DisasContext;
38f8da88d7SSong Gao 
39f8da88d7SSong Gao void generate_exception(DisasContext *ctx, int excp);
40f8da88d7SSong Gao 
41f8da88d7SSong Gao extern TCGv cpu_gpr[32], cpu_pc;
42f8da88d7SSong Gao extern TCGv_i32 cpu_fscr0;
43f8da88d7SSong Gao extern TCGv_i64 cpu_fpr[32];
44f8da88d7SSong Gao 
45f8da88d7SSong Gao #endif
46