Annotation of qemu/target-mips/op_template.c, revision 1.1.1.3

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.