#include "armdefs.h"
#include "arm2x86_self.h"

/*uint8_t *
get_op_test_st_trap(int *len)
{
	unsigned int	begin=0,end=0;

	OP_BEGIN("get_op_test_st_trap");
	if (!st->trap) {
		wmb();
	}
	OP_END("get_op_test_st_trap");
	*len = end - begin;

	return((uint8_t *)begin);
}*/

uint8_t *
get_op_test_cpsr_ret_UNP(int *len)
{
	unsigned int	begin=0,end=0;

	OP_BEGIN("get_op_test_cpsr_ret_UNP");
	T2 = st->Cpsr & 0x1f;
	if (T2 == 0x10 || T2 == 0x1f) {
		st->trap = TRAP_UNPREDICTABLE;
		__asm__ __volatile__ ("ret");
	}
	OP_END("get_op_test_cpsr_ret_UNP");
	*len = end - begin;

	return((uint8_t *)begin);
}

uint8_t *
get_op_test_debug(int *len)
{
	unsigned int	begin=0,end=0;

	OP_BEGIN("get_op_test_debug");
	T0 = st->Emulate;
	if (T0 == 0) {
		st->trap = TRAP_DEBUG;
		__asm__ __volatile__ ("ret");
	}
	OP_END("get_op_test_debug");
	*len = end - begin;

	return((uint8_t *)begin);
}

//op_table_t	op_test_st_trap;
op_table_t	op_test_cpsr_ret_UNP;
op_table_t	op_test_debug;
int
arm2x86_test_init()
{
	//op_test_st_trap.op = get_op_test_st_trap(&op_test_st_trap.len);
	op_test_cpsr_ret_UNP.op = get_op_test_cpsr_ret_UNP(&op_test_cpsr_ret_UNP.len);
	op_test_debug.op = get_op_test_debug(&op_test_debug.len);

	return(0);
}
