#ifndef _ARM2X86_DP_H_
#define _ARM2X86_DP_H_

extern op_table_t	op_andl_T0_T1;
extern op_table_t	op_eorl_T0_T1;
extern op_table_t	op_subl_T0_T1;
extern op_table_t	op_subl_T0_T1_scv;
extern op_table_t	op_rsbl_T0_T1;
extern op_table_t	op_rsbl_T0_T1_scv;
extern op_table_t	op_addl_T0_T1;
extern op_table_t	op_addl_T0_T1_scv;
extern op_table_t	op_adcl_T0_T1;
extern op_table_t	op_adcl_T0_T1_scv;
extern op_table_t	op_sbcl_T0_T1;
extern op_table_t	op_sbcl_T0_T1_scv;
extern op_table_t	op_rscl_T0_T1;
extern op_table_t	op_rscl_T0_T1_scv;
extern op_table_t	op_orrl_T0_T1;
extern op_table_t	op_movl_T0_T1;
extern op_table_t	op_bicl_T0_T1;
extern op_table_t	op_notl_T0_T1;
extern op_table_t	op_addl_T1_im;
extern op_table_t	op_subl_T1_T2;
extern op_table_t	op_addl_T1_T2;

typedef void (arm2x86_get_dp_op_t)(ARMul_State *state, uint8_t **tbpp, int *plen, ARMword set_cc, ARMword rd);
extern arm2x86_get_dp_op_t	*arm2x86_get_dp_op[16];
extern arm2x86_get_dp_op_t	*arm2x86_get_dp_op_setcpsr[16];

extern int	arm2x86_dp_init();

static __inline__ void
gen_op_addl_T1_im(ARMul_State *state, uint8_t **tbpp, int *plen, ARMword im)
{
	GEN_OP(*tbpp, *plen, op_addl_T1_im);
	if (*tbpp) {
		memcpy(*tbpp, &im, sizeof(im));
		*tbpp += sizeof(im);
	}
	*plen += sizeof(im);
}

#endif	//_ARM2X86_DP_H_
