|
|
1.1 root 1: /*
2: * MIPS emulation micro-operations templates for reg load & store for qemu.
1.1.1.3 ! root 3: *
1.1 root 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: {
1.1.1.3 ! root 24: T0 = env->gpr[REG][env->current_tc];
! 25: FORCE_RET();
1.1 root 26: }
27:
28: void glue(op_store_T0_gpr_gpr, REG) (void)
29: {
1.1.1.3 ! root 30: env->gpr[REG][env->current_tc] = T0;
! 31: FORCE_RET();
1.1 root 32: }
33:
34: void glue(op_load_gpr_T1_gpr, REG) (void)
35: {
1.1.1.3 ! root 36: T1 = env->gpr[REG][env->current_tc];
! 37: FORCE_RET();
1.1 root 38: }
39:
40: void glue(op_store_T1_gpr_gpr, REG) (void)
41: {
1.1.1.3 ! root 42: env->gpr[REG][env->current_tc] = T1;
! 43: FORCE_RET();
1.1 root 44: }
45:
46: void glue(op_load_gpr_T2_gpr, REG) (void)
47: {
1.1.1.3 ! root 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();
1.1 root 63: }
64: #endif
65:
66: #if defined (TN)
1.1.1.2 root 67: #define SET_RESET(treg, tregname) \
68: void glue(op_set, tregname)(void) \
69: { \
1.1.1.3 ! root 70: treg = (int32_t)PARAM1; \
! 71: FORCE_RET(); \
1.1.1.2 root 72: } \
73: void glue(op_reset, tregname)(void) \
74: { \
75: treg = 0; \
1.1.1.3 ! root 76: FORCE_RET(); \
1.1.1.2 root 77: } \
1.1 root 78:
1.1.1.2 root 79: SET_RESET(T0, _T0)
80: SET_RESET(T1, _T1)
81: SET_RESET(T2, _T2)
82:
83: #undef SET_RESET
1.1.1.3 ! root 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
1.1 root 100: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.