Revision 2b29924f

b/target-sparc/helper.h
37 37
void TCG_HELPER_PROTO helper_trap(target_ulong nb_trap);
38 38
void TCG_HELPER_PROTO helper_trapcc(target_ulong nb_trap,
39 39
                                    target_ulong do_trap);
40
void TCG_HELPER_PROTO helper_check_align(target_ulong addr, uint32_t align);
40 41
void TCG_HELPER_PROTO helper_debug(void);
41 42
void TCG_HELPER_PROTO helper_save(void);
42 43
void TCG_HELPER_PROTO helper_restore(void);
b/target-sparc/op.c
36 36
#include "op_mem.h"
37 37
#endif
38 38
#endif
39

  
40
#define CHECK_ALIGN_OP(align)                           \
41
    void OPPROTO op_check_align_T0_ ## align (void)     \
42
    {                                                   \
43
        if (T0 & align)                                 \
44
            raise_exception(TT_UNALIGNED);              \
45
        FORCE_RET();                                    \
46
    }
47

  
48
CHECK_ALIGN_OP(1)
49
CHECK_ALIGN_OP(3)
50
CHECK_ALIGN_OP(7)
b/target-sparc/op_helper.c
50 50
    }
51 51
}
52 52

  
53
void helper_check_align(target_ulong addr, uint32_t align)
54
{
55
    if (addr & align)
56
        raise_exception(TT_UNALIGNED);
57
}
58

  
53 59
#define F_HELPER(name, p) void helper_f##name##p(void)
54 60

  
55 61
#if defined(CONFIG_USER_ONLY)
b/target-sparc/translate.c
1664 1664
    tcg_gen_helper_0_0(helper_clear_float_exceptions);
1665 1665
}
1666 1666

  
1667
static inline void gen_check_align(TCGv r_addr, int align)
1668
{
1669
    tcg_gen_helper_0_2(helper_check_align, r_addr, tcg_const_i32(align));
1670
}
1671

  
1672
static inline void gen_op_check_align_T0_1(void)
1673
{
1674
    gen_check_align(cpu_T[0], 1);
1675
}
1676

  
1677
static inline void gen_op_check_align_T0_3(void)
1678
{
1679
    gen_check_align(cpu_T[0], 3);
1680
}
1681

  
1682
static inline void gen_op_check_align_T0_7(void)
1683
{
1684
    gen_check_align(cpu_T[0], 7);
1685
}
1686

  
1667 1687
/* asi moves */
1668 1688
#ifdef TARGET_SPARC64
1669 1689
static inline TCGv gen_get_asi(int insn, TCGv r_addr)

Also available in: Unified diff