Statistics
| Branch: | Revision:

root / target-mips / op_mem.c @ 1e8a7cfd

History | View | Annotate | Download (2.3 kB)

1 6af0bf9c bellard
/*
2 6af0bf9c bellard
 *  MIPS emulation memory micro-operations for qemu.
3 6af0bf9c bellard
 * 
4 6af0bf9c bellard
 *  Copyright (c) 2004-2005 Jocelyn Mayer
5 6af0bf9c bellard
 *
6 6af0bf9c bellard
 * This library is free software; you can redistribute it and/or
7 6af0bf9c bellard
 * modify it under the terms of the GNU Lesser General Public
8 6af0bf9c bellard
 * License as published by the Free Software Foundation; either
9 6af0bf9c bellard
 * version 2 of the License, or (at your option) any later version.
10 6af0bf9c bellard
 *
11 6af0bf9c bellard
 * This library is distributed in the hope that it will be useful,
12 6af0bf9c bellard
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 6af0bf9c bellard
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 6af0bf9c bellard
 * Lesser General Public License for more details.
15 6af0bf9c bellard
 *
16 6af0bf9c bellard
 * You should have received a copy of the GNU Lesser General Public
17 6af0bf9c bellard
 * License along with this library; if not, write to the Free Software
18 6af0bf9c bellard
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19 6af0bf9c bellard
 */
20 6af0bf9c bellard
21 6af0bf9c bellard
/* Standard loads and stores */
22 6af0bf9c bellard
void glue(op_lb, MEMSUFFIX) (void)
23 6af0bf9c bellard
{
24 6af0bf9c bellard
    T0 = glue(ldsb, MEMSUFFIX)(T0);
25 6af0bf9c bellard
    RETURN();
26 6af0bf9c bellard
}
27 6af0bf9c bellard
28 6af0bf9c bellard
void glue(op_lbu, MEMSUFFIX) (void)
29 6af0bf9c bellard
{
30 6af0bf9c bellard
    T0 = glue(ldub, MEMSUFFIX)(T0);
31 6af0bf9c bellard
    RETURN();
32 6af0bf9c bellard
}
33 6af0bf9c bellard
34 6af0bf9c bellard
void glue(op_sb, MEMSUFFIX) (void)
35 6af0bf9c bellard
{
36 6af0bf9c bellard
    glue(stb, MEMSUFFIX)(T0, T1);
37 6af0bf9c bellard
    RETURN();
38 6af0bf9c bellard
}
39 6af0bf9c bellard
40 6af0bf9c bellard
void glue(op_lh, MEMSUFFIX) (void)
41 6af0bf9c bellard
{
42 6af0bf9c bellard
    T0 = glue(ldsw, MEMSUFFIX)(T0);
43 6af0bf9c bellard
    RETURN();
44 6af0bf9c bellard
}
45 6af0bf9c bellard
46 6af0bf9c bellard
void glue(op_lhu, MEMSUFFIX) (void)
47 6af0bf9c bellard
{
48 6af0bf9c bellard
    T0 = glue(lduw, MEMSUFFIX)(T0);
49 6af0bf9c bellard
    RETURN();
50 6af0bf9c bellard
}
51 6af0bf9c bellard
52 6af0bf9c bellard
void glue(op_sh, MEMSUFFIX) (void)
53 6af0bf9c bellard
{
54 6af0bf9c bellard
    glue(stw, MEMSUFFIX)(T0, T1);
55 6af0bf9c bellard
    RETURN();
56 6af0bf9c bellard
}
57 6af0bf9c bellard
58 6af0bf9c bellard
void glue(op_lw, MEMSUFFIX) (void)
59 6af0bf9c bellard
{
60 6af0bf9c bellard
    T0 = glue(ldl, MEMSUFFIX)(T0);
61 6af0bf9c bellard
    RETURN();
62 6af0bf9c bellard
}
63 6af0bf9c bellard
64 6af0bf9c bellard
void glue(op_sw, MEMSUFFIX) (void)
65 6af0bf9c bellard
{
66 6af0bf9c bellard
    glue(stl, MEMSUFFIX)(T0, T1);
67 6af0bf9c bellard
    RETURN();
68 6af0bf9c bellard
}
69 6af0bf9c bellard
70 6af0bf9c bellard
/* "half" load and stores */
71 6af0bf9c bellard
void glue(op_lwl, MEMSUFFIX) (void)
72 6af0bf9c bellard
{
73 6af0bf9c bellard
    CALL_FROM_TB0(glue(do_lwl, MEMSUFFIX));
74 6af0bf9c bellard
    RETURN();
75 6af0bf9c bellard
}
76 6af0bf9c bellard
77 6af0bf9c bellard
void glue(op_lwr, MEMSUFFIX) (void)
78 6af0bf9c bellard
{
79 6af0bf9c bellard
    CALL_FROM_TB0(glue(do_lwr, MEMSUFFIX));
80 6af0bf9c bellard
    RETURN();
81 6af0bf9c bellard
}
82 6af0bf9c bellard
83 6af0bf9c bellard
void glue(op_swl, MEMSUFFIX) (void)
84 6af0bf9c bellard
{
85 6af0bf9c bellard
    CALL_FROM_TB0(glue(do_swl, MEMSUFFIX));
86 6af0bf9c bellard
    RETURN();
87 6af0bf9c bellard
}
88 6af0bf9c bellard
89 6af0bf9c bellard
void glue(op_swr, MEMSUFFIX) (void)
90 6af0bf9c bellard
{
91 6af0bf9c bellard
    CALL_FROM_TB0(glue(do_swr, MEMSUFFIX));
92 6af0bf9c bellard
    RETURN();
93 6af0bf9c bellard
}
94 6af0bf9c bellard
95 6af0bf9c bellard
void glue(op_ll, MEMSUFFIX) (void)
96 6af0bf9c bellard
{
97 6af0bf9c bellard
    T1 = T0;
98 6af0bf9c bellard
    T0 = glue(ldl, MEMSUFFIX)(T0);
99 6af0bf9c bellard
    env->CP0_LLAddr = T1;
100 6af0bf9c bellard
    RETURN();
101 6af0bf9c bellard
}
102 6af0bf9c bellard
103 6af0bf9c bellard
void glue(op_sc, MEMSUFFIX) (void)
104 6af0bf9c bellard
{
105 6af0bf9c bellard
    CALL_FROM_TB0(dump_sc);
106 6af0bf9c bellard
    if (T0 == env->CP0_LLAddr) {
107 6af0bf9c bellard
        glue(stl, MEMSUFFIX)(T0, T1);
108 6af0bf9c bellard
        T0 = 1;
109 6af0bf9c bellard
    } else {
110 6af0bf9c bellard
        T0 = 0;
111 6af0bf9c bellard
    }
112 6af0bf9c bellard
    RETURN();
113 6af0bf9c bellard
}