Path: blob/master/libmupen64plus/mupen64plus-core/src/r4300/macros.h
2 views
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *1* Mupen64plus - macros.h *2* Mupen64Plus homepage: http://code.google.com/p/mupen64plus/ *3* Copyright (C) 2002 Hacktarux *4* *5* This program is free software; you can redistribute it and/or modify *6* it under the terms of the GNU General Public License as published by *7* the Free Software Foundation; either version 2 of the License, or *8* (at your option) any later version. *9* *10* This program is distributed in the hope that it will be useful, *11* but WITHOUT ANY WARRANTY; without even the implied warranty of *12* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *13* GNU General Public License for more details. *14* *15* You should have received a copy of the GNU General Public License *16* along with this program; if not, write to the *17* Free Software Foundation, Inc., *18* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *19* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */2021#ifndef MACROS_H22#define MACROS_H2324#define sign_extended(a) a = (long long)((int)a)25#define sign_extendedb(a) a = (long long)((signed char)a)26#define sign_extendedh(a) a = (long long)((short)a)2728#define rrt *PC->f.r.rt29#define rrd *PC->f.r.rd30#define rfs PC->f.r.nrd31#define rrs *PC->f.r.rs32#define rsa PC->f.r.sa33#define irt *PC->f.i.rt34#define ioffset PC->f.i.immediate35#define iimmediate PC->f.i.immediate36#define irs *PC->f.i.rs37#define ibase *PC->f.i.rs38#define jinst_index PC->f.j.inst_index39#define lfbase PC->f.lf.base40#define lfft PC->f.lf.ft41#define lfoffset PC->f.lf.offset42#define cfft PC->f.cf.ft43#define cffs PC->f.cf.fs44#define cffd PC->f.cf.fd4546// 32 bits macros47#ifndef M64P_BIG_ENDIAN48#define rrt32 *((int*)PC->f.r.rt)49#define rrd32 *((int*)PC->f.r.rd)50#define rrs32 *((int*)PC->f.r.rs)51#define irs32 *((int*)PC->f.i.rs)52#define irt32 *((int*)PC->f.i.rt)53#else54#define rrt32 *((int*)PC->f.r.rt+1)55#define rrd32 *((int*)PC->f.r.rd+1)56#define rrs32 *((int*)PC->f.r.rs+1)57#define irs32 *((int*)PC->f.i.rs+1)58#define irt32 *((int*)PC->f.i.rt+1)59#endif6061//cop0 macros62#define Index reg_cop0[0]63#define Random reg_cop0[1]64#define EntryLo0 reg_cop0[2]65#define EntryLo1 reg_cop0[3]66#define Context reg_cop0[4]67#define PageMask reg_cop0[5]68#define Wired reg_cop0[6]69#define BadVAddr reg_cop0[8]70#define Count reg_cop0[9]71#define EntryHi reg_cop0[10]72#define Compare reg_cop0[11]73#define Status reg_cop0[12]74#define Cause reg_cop0[13]75#define EPC reg_cop0[14]76#define PRevID reg_cop0[15]77#define Config reg_cop0[16]78#define LLAddr reg_cop0[17]79#define WatchLo reg_cop0[18]80#define WatchHi reg_cop0[19]81#define XContext reg_cop0[20]82#define PErr reg_cop0[26]83#define CacheErr reg_cop0[27]84#define TagLo reg_cop0[28]85#define TagHi reg_cop0[29]86#define ErrorEPC reg_cop0[30]8788#endif89909192