qemu_put signedness fixes, by Andre Przywara.
[qemu] / target-mips / op_template.c
1 /*
2  *  MIPS emulation micro-operations templates for reg load & store for qemu.
3  *
4  *  Copyright (c) 2004-2005 Jocelyn Mayer
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19  */
20
21 #if defined(REG)
22 void glue(op_load_gpr_T0_gpr, REG) (void)
23 {
24     T0 = env->gpr[REG][env->current_tc];
25     FORCE_RET();
26 }
27
28 void glue(op_store_T0_gpr_gpr, REG) (void)
29 {
30     env->gpr[REG][env->current_tc] = T0;
31     FORCE_RET();
32 }
33
34 void glue(op_load_gpr_T1_gpr, REG) (void)
35 {
36     T1 = env->gpr[REG][env->current_tc];
37     FORCE_RET();
38 }
39
40 void glue(op_store_T1_gpr_gpr, REG) (void)
41 {
42     env->gpr[REG][env->current_tc] = T1;
43     FORCE_RET();
44 }
45
46 void glue(op_load_gpr_T2_gpr, REG) (void)
47 {
48     T2 = env->gpr[REG][env->current_tc];
49     FORCE_RET();
50 }
51
52
53 void glue(op_load_srsgpr_T0_gpr, REG) (void)
54 {
55     T0 = env->gpr[REG][(env->CP0_SRSCtl >> CP0SRSCtl_PSS) & 0xf];
56     FORCE_RET();
57 }
58
59 void glue(op_store_T0_srsgpr_gpr, REG) (void)
60 {
61     env->gpr[REG][(env->CP0_SRSCtl >> CP0SRSCtl_PSS) & 0xf] = T0;
62     FORCE_RET();
63 }
64 #endif
65
66 #if defined (TN)
67 #define SET_RESET(treg, tregname)        \
68     void glue(op_set, tregname)(void)    \
69     {                                    \
70         treg = (int32_t)PARAM1;          \
71         FORCE_RET();                     \
72     }                                    \
73     void glue(op_reset, tregname)(void)  \
74     {                                    \
75         treg = 0;                        \
76         FORCE_RET();                     \
77     }                                    \
78
79 SET_RESET(T0, _T0)
80 SET_RESET(T1, _T1)
81 SET_RESET(T2, _T2)
82
83 #undef SET_RESET
84
85 #if defined(TARGET_MIPS64)
86 #define SET64(treg, tregname)                               \
87     void glue(op_set64, tregname)(void)                     \
88     {                                                       \
89         treg = ((uint64_t)PARAM1 << 32) | (uint32_t)PARAM2; \
90         FORCE_RET();                                        \
91     }
92
93 SET64(T0, _T0)
94 SET64(T1, _T1)
95 SET64(T2, _T2)
96
97 #undef SET64
98
99 #endif
100 #endif