Statistics
| Branch: | Revision:

root / target-sparc / op_mem.h @ c48fcb47

History | View | Annotate | Download (1.2 kB)

1
#ifdef TARGET_ABI32
2
#define ADDR(x) ((x) & 0xffffffff)
3
#else
4
#define ADDR(x) (x)
5
#endif
6

    
7
#ifdef __i386__
8
/***                              Integer store                            ***/
9
void OPPROTO glue(op_std, MEMSUFFIX)(void)
10
{
11
    uint64_t tmp = ((uint64_t)T1 << 32) | (uint64_t)(T2 & 0xffffffff);
12

    
13
    glue(stq, MEMSUFFIX)(ADDR(T0), tmp);
14
}
15

    
16
#endif /* __i386__ */
17
/***                         Floating-point store                          ***/
18
void OPPROTO glue(op_stdf, MEMSUFFIX) (void)
19
{
20
    glue(stfq, MEMSUFFIX)(ADDR(T0), DT0);
21
}
22

    
23
/***                         Floating-point load                           ***/
24
void OPPROTO glue(op_lddf, MEMSUFFIX) (void)
25
{
26
    DT0 = glue(ldfq, MEMSUFFIX)(ADDR(T0));
27
}
28

    
29
#if defined(CONFIG_USER_ONLY)
30
void OPPROTO glue(op_ldqf, MEMSUFFIX) (void)
31
{
32
    // XXX add 128 bit load
33
    CPU_QuadU u;
34

    
35
    u.ll.upper = glue(ldq, MEMSUFFIX)(ADDR(T0));
36
    u.ll.lower = glue(ldq, MEMSUFFIX)(ADDR(T0 + 8));
37
    QT0 = u.q;
38
}
39

    
40
void OPPROTO glue(op_stqf, MEMSUFFIX) (void)
41
{
42
    // XXX add 128 bit store
43
    CPU_QuadU u;
44

    
45
    u.q = QT0;
46
    glue(stq, MEMSUFFIX)(ADDR(T0), u.ll.upper);
47
    glue(stq, MEMSUFFIX)(ADDR(T0 + 8), u.ll.lower);
48
}
49
#endif
50

    
51
#undef MEMSUFFIX