Annotation of qemu/target-ppc/op_template.h, revision 1.1.1.2

1.1       root        1: /*
                      2:  *  PowerPC emulation micro-operations for qemu.
1.1.1.2 ! root        3:  *
        !             4:  *  Copyright (c) 2003-2007 Jocelyn Mayer
1.1       root        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: /* General purpose registers moves */
1.1.1.2 ! root       22: void OPPROTO glue(op_load_gpr_T0_gpr, REG) (void)
1.1       root       23: {
1.1.1.2 ! root       24:     T0 = env->gpr[REG];
1.1       root       25:     RETURN();
                     26: }
                     27: 
1.1.1.2 ! root       28: void OPPROTO glue(op_load_gpr_T1_gpr, REG) (void)
1.1       root       29: {
1.1.1.2 ! root       30:     T1 = env->gpr[REG];
1.1       root       31:     RETURN();
                     32: }
                     33: 
1.1.1.2 ! root       34: void OPPROTO glue(op_load_gpr_T2_gpr, REG) (void)
1.1       root       35: {
1.1.1.2 ! root       36:     T2 = env->gpr[REG];
1.1       root       37:     RETURN();
                     38: }
                     39: 
1.1.1.2 ! root       40: void OPPROTO glue(op_store_T0_gpr_gpr, REG) (void)
1.1       root       41: {
1.1.1.2 ! root       42:     env->gpr[REG] = T0;
1.1       root       43:     RETURN();
                     44: }
                     45: 
1.1.1.2 ! root       46: void OPPROTO glue(op_store_T1_gpr_gpr, REG) (void)
1.1       root       47: {
1.1.1.2 ! root       48:     env->gpr[REG] = T1;
1.1       root       49:     RETURN();
                     50: }
                     51: 
1.1.1.2 ! root       52: #if 0 // unused
        !            53: void OPPROTO glue(op_store_T2_gpr_gpr, REG) (void)
1.1       root       54: {
1.1.1.2 ! root       55:     env->gpr[REG] = T2;
1.1       root       56:     RETURN();
                     57: }
1.1.1.2 ! root       58: #endif
1.1       root       59: 
1.1.1.2 ! root       60: /* General purpose registers containing vector operands moves */
        !            61: #if !defined(TARGET_PPC64)
        !            62: void OPPROTO glue(op_load_gpr64_T0_gpr, REG) (void)
1.1       root       63: {
1.1.1.2 ! root       64:     T0_64 = (uint64_t)env->gpr[REG] | ((uint64_t)env->gprh[REG] << 32);
1.1       root       65:     RETURN();
                     66: }
                     67: 
1.1.1.2 ! root       68: void OPPROTO glue(op_load_gpr64_T1_gpr, REG) (void)
1.1       root       69: {
1.1.1.2 ! root       70:     T1_64 = (uint64_t)env->gpr[REG] | ((uint64_t)env->gprh[REG] << 32);
1.1       root       71:     RETURN();
                     72: }
                     73: 
1.1.1.2 ! root       74: #if 0 // unused
        !            75: void OPPROTO glue(op_load_gpr64_T2_gpr, REG) (void)
1.1       root       76: {
1.1.1.2 ! root       77:     T2_64 = (uint64_t)env->gpr[REG] | ((uint64_t)env->gprh[REG] << 32);
1.1       root       78:     RETURN();
                     79: }
1.1.1.2 ! root       80: #endif
1.1       root       81: 
1.1.1.2 ! root       82: void OPPROTO glue(op_store_T0_gpr64_gpr, REG) (void)
1.1       root       83: {
1.1.1.2 ! root       84:     env->gpr[REG] = T0_64;
        !            85:     env->gprh[REG] = T0_64 >> 32;
1.1       root       86:     RETURN();
                     87: }
                     88: 
1.1.1.2 ! root       89: void OPPROTO glue(op_store_T1_gpr64_gpr, REG) (void)
1.1       root       90: {
1.1.1.2 ! root       91:     env->gpr[REG] = T1_64;
        !            92:     env->gprh[REG] = T1_64 >> 32;
1.1       root       93:     RETURN();
                     94: }
                     95: 
1.1.1.2 ! root       96: #if 0 // unused
        !            97: void OPPROTO glue(op_store_T2_gpr64_gpr, REG) (void)
1.1       root       98: {
1.1.1.2 ! root       99:     env->gpr[REG] = T2_64;
        !           100:     env->gprh[REG] = T2_64 >> 32;
1.1       root      101:     RETURN();
                    102: }
1.1.1.2 ! root      103: #endif
        !           104: #endif /* !defined(TARGET_PPC64) */
1.1       root      105: 
1.1.1.2 ! root      106: /* Altivec registers moves */
        !           107: void OPPROTO glue(op_load_avr_A0_avr, REG) (void)
1.1       root      108: {
1.1.1.2 ! root      109:     AVR0 = env->avr[REG];
1.1       root      110:     RETURN();
                    111: }
                    112: 
1.1.1.2 ! root      113: void OPPROTO glue(op_load_avr_A1_avr, REG) (void)
1.1       root      114: {
1.1.1.2 ! root      115:     AVR1 = env->avr[REG];
1.1       root      116:     RETURN();
                    117: }
1.1.1.2 ! root      118: 
        !           119: void OPPROTO glue(op_load_avr_A2_avr, REG) (void)
1.1       root      120: {
1.1.1.2 ! root      121:     AVR2 = env->avr[REG];
1.1       root      122:     RETURN();
                    123: }
                    124: 
1.1.1.2 ! root      125: void OPPROTO glue(op_store_A0_avr_avr, REG) (void)
1.1       root      126: {
1.1.1.2 ! root      127:     env->avr[REG] = AVR0;
1.1       root      128:     RETURN();
                    129: }
                    130: 
1.1.1.2 ! root      131: void OPPROTO glue(op_store_A1_avr_avr, REG) (void)
1.1       root      132: {
1.1.1.2 ! root      133:     env->avr[REG] = AVR1;
        !           134:     RETURN();
        !           135: }
        !           136: 
        !           137: #if 0 // unused
        !           138: void OPPROTO glue(op_store_A2_avr_avr, REG) (void)
        !           139: {
        !           140:     env->avr[REG] = AVR2;
1.1       root      141:     RETURN();
                    142: }
                    143: #endif
                    144: 
1.1.1.2 ! root      145: #if REG <= 7
        !           146: /* Condition register moves */
        !           147: void OPPROTO glue(op_load_crf_T0_crf, REG) (void)
        !           148: {
        !           149:     T0 = env->crf[REG];
        !           150:     RETURN();
        !           151: }
1.1       root      152: 
1.1.1.2 ! root      153: void OPPROTO glue(op_load_crf_T1_crf, REG) (void)
1.1       root      154: {
1.1.1.2 ! root      155:     T1 = env->crf[REG];
1.1       root      156:     RETURN();
                    157: }
                    158: 
1.1.1.2 ! root      159: void OPPROTO glue(op_store_T0_crf_crf, REG) (void)
1.1       root      160: {
1.1.1.2 ! root      161:     env->crf[REG] = T0;
1.1       root      162:     RETURN();
                    163: }
                    164: 
1.1.1.2 ! root      165: #if 0 // Unused
        !           166: void OPPROTO glue(op_store_T1_crf_crf, REG) (void)
1.1       root      167: {
1.1.1.2 ! root      168:     env->crf[REG] = T1;
1.1       root      169:     RETURN();
                    170: }
1.1.1.2 ! root      171: #endif
        !           172: 
        !           173: #endif /* REG <= 7 */
1.1       root      174: 
1.1.1.2 ! root      175: /* floating point registers moves */
        !           176: void OPPROTO glue(op_load_fpr_FT0_fpr, REG) (void)
1.1       root      177: {
1.1.1.2 ! root      178:     FT0 = env->fpr[REG];
1.1       root      179:     RETURN();
                    180: }
                    181: 
1.1.1.2 ! root      182: void OPPROTO glue(op_store_FT0_fpr_fpr, REG) (void)
1.1       root      183: {
1.1.1.2 ! root      184:     env->fpr[REG] = FT0;
1.1       root      185:     RETURN();
                    186: }
                    187: 
1.1.1.2 ! root      188: void OPPROTO glue(op_load_fpr_FT1_fpr, REG) (void)
1.1       root      189: {
1.1.1.2 ! root      190:     FT1 = env->fpr[REG];
1.1       root      191:     RETURN();
                    192: }
                    193: 
1.1.1.2 ! root      194: void OPPROTO glue(op_store_FT1_fpr_fpr, REG) (void)
1.1       root      195: {
1.1.1.2 ! root      196:     env->fpr[REG] = FT1;
1.1       root      197:     RETURN();
                    198: }
                    199: 
1.1.1.2 ! root      200: void OPPROTO glue(op_load_fpr_FT2_fpr, REG) (void)
1.1       root      201: {
1.1.1.2 ! root      202:     FT2 = env->fpr[REG];
        !           203:     RETURN();
        !           204: }
        !           205: 
        !           206: #if 0 // unused
        !           207: void OPPROTO glue(op_store_FT2_fpr_fpr, REG) (void)
        !           208: {
        !           209:     env->fpr[REG] = FT2;
1.1       root      210:     RETURN();
                    211: }
                    212: #endif
                    213: 
                    214: #undef REG

unix.superglobalmegacorp.com

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