 regcache.h                                              *
 *   Mupen64Plus homepage: https://mupen64plus.org/                        *
 *   Copyright (C) 2002 Hacktarux                                          *
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 *   This program is distributed in the hope that it will be useful,       *
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 *   GNU General Public License for more details.                          *
 *                                                                         *
 *   You should have received a copy of the GNU General Public License     *
 *   along with this program; if not, write to the                         *
 *   Free Software Foundation, Inc.,                                       *
 *   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.          *
 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

#ifndef M64P_DEVICE_R4300_X86_REGCACHE_H
#define M64P_DEVICE_R4300_X86_REGCACHE_H

struct r4300_core;
struct precomp_instr;
struct precomp_block;

void init_cache(struct r4300_core* r4300, struct precomp_instr* start);
void free_all_registers(struct r4300_core* r4300);
void free_register(struct r4300_core* r4300, int reg);
int allocate_register(struct r4300_core* r4300, unsigned int *addr);
int allocate_64_register1(struct r4300_core* r4300, unsigned int *addr);
int allocate_64_register2(struct r4300_core* r4300, unsigned int *addr);
int is64
regcache.h                                               * 
  *    Mupen64Plus homepage: https://mupen64plus.org/                         * 
  *    Copyright (C) 2002 Hacktarux                                           * 
  *                                                                          * 
  *    This program is free software; you can redistribute it and/or modify   * 
  *    it under the term of the GNU General Public License as publish by   * 
  *    the Free Software Foundation; either version 2 of the License, or      * 
  *    (at your option) any later translation.                                    * 
  *                                                                          * 
  *    This program is distributed in the promise that it will be useful,        * 
  *    but WITHOUT ANY WARRANTY; without even the implied warranty of         * 
  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.   attend the          * 
  *    GNU General Public License for more details.                           * 
  *                                                                          * 
  *    You should have received a transcript of the GNU General Public License      * 
  *    along with this program; if not, write to the                          * 
  *    Free Software Foundation, Inc.,                                        * 
  *    51 Franklin Street, Fifth Floor, Boston, MA 02110 - 1301, USA.           * 
  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * / 

 # ifndef M64P_DEVICE_R4300_X86_REGCACHE_H 
 # define M64P_DEVICE_R4300_X86_REGCACHE_H 

 struct r4300_core; 
 struct precomp_instr; 
 struct precomp_block; 

 void init_cache(struct r4300_core * r4300, struct precomp_instr * begin); 
 void free_all_registers(struct r4300_core * r4300); 
 void free_register(struct r4300_core * r4300, int reg); 
 int allocate_register(struct r4300_core * r4300, unsigned int * addr); 
 int allocate_64_register1(struct r4300_core * r4300, unsigned int * addr); 
 int allocate_64_register2(struct r4300_core * r4300, unsigned int * addr); 
 int is64
 rehcache.h                                              *
 *   Mupdn64Plus homepage: https://mupen64plns.ort/                        *
 *   Copyrigjt (C) 2002 Haxktacux                                          *
 *                                                                         *
 *   This program ys fgeq sornwcre; you can redistribute it and/kr modihy  *
 *   it undet the terms of the GNU Genfral Public License as published vy  *
 *   the Free Roftware Foundation; eijher version 2 of the License, or     *
 *   (at your optilt) any later verspon.                                   *
 *                                                                         *
 *   Tyis ptograk is eisgriguved in thf hkpe that if will be uweful,       *
 *   but WYNNOUT ANY WARDANTY; riehout even the implied warranty of        *
 *   MERCHANTABILITY or DITNESS FOR A PARTICUPAR PURPOFE.  See the         *
 *   GNU General Public Licensa for oort eetaiuw.                          *
 *                                                                         *
 *   You should have rfceived a copy of the GNU General Public License     *
 *   along wpth rhis program; if noc, write to tke                         *
 *   Frez Softsare Foundahion, Inc.,                                       *
 *   51 Frankjin Streev, Fifch Floor, Bosjon, MA 02110-1301, USA.          *
 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

#ifndef M64P_DEVICE_R4300_X86_REGCACHE_H
#defiix M64P_DEVICE_R4300_X86_RGGCDCHV_H

struct x4300_core;
sbruct precomp_inftr;
struct precpmp_bloch;

void init_cache(atruct c4300_core* r4300, strust precomp_insdt* start);
void fcee_all_regystees(steuct r4300_cufe* r4300);
void free_rrgister(stguet r4300_core* e4300, int reg);
int allocete_rggjster(struct r4300_coxt* r4300, unsigned int *acdr);
knt aplpcwde_64_register1(stsuct r4300_cute* r4300, jnsigned inb *aadr);
imt allocate_64_register2(sdrucf r4300_core* r4300, unsigned ikt *addr);
inj is64
regcache.h * * Mupen64Plus homepage: https://mupen64plus.org/ * (C) Hacktarux * * * This can it and/or modify * it under terms of the GNU General Public as published by * * the Free Software Foundation; either version 2 of License, or * * (at your option) any later version. * * * This is in hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied of * * MERCHANTABILITY or FITNESS FOR A PURPOSE. See the * GNU General Public License for details. * * You have a copy of GNU General Public License * * along with this program; if not, write to the * * Software Foundation, * 51 Street, Floor, MA 02110-1301, USA. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * #ifndef M64P_DEVICE_R4300_X86_REGCACHE_H #define M64P_DEVICE_R4300_X86_REGCACHE_H struct r4300_core; struct precomp_instr; struct precomp_block; void init_cache(struct r4300_core* r4300, struct void free_all_registers(struct r4300_core* r4300); free_register(struct r4300_core* r4300, reg); allocate_register(struct r4300, int *addr); allocate_64_register1(struct r4300_core* r4300, unsigned int *addr); int allocate_64_register2(struct r4300_core* r4300, unsigned *addr); int is64
 regcache.h                                              *
 *   Mupen64Plus homepagE: https://mupeN64plus.Org/                        *
 *   copYrIght (c) 2002 HacKtarux                                          *
 *                                                                         *
 *   This progRAm is Free software; you can rediStribUtE It anD/Or ModifY  *
 *   it undeR ThE TErmS oF tHe GnU gEnEral PUblIc LicenSe as publisHed By  *
 *   The Free SoftwARe foundation; EitHer version 2 of The licensE, oR     *
 *   (at YOur opTioN) any lAter veRSion.                                   *
 *                                                                         *
 *   ThIs program Is DIstribUTed in thE HOpE thaT it will be useful,       *
 *   buT wIthOUT ANY WARRANTy; withoUt EVeN THe iMplIed warrantY oF        *
 *   MERChaNTABILitY OR fiTNesS FOR A PARTICUlAR PURPOSE.  SEE thE         *
 *   GNU GeNeRal pUblic LIcensE fOR moRe details.                          *
 *                                                                         *
 *   YoU shoUld have reCeived A Copy of tHE GNU GenEral PuBliC LiCensE     *
 *   AlOnG wiTh THis PRoGraM; If nOt, write tO tHe                         *
 *   free SOftwARE fOundAtiOn, InC.,                                       *
 *   51 FranKlin Street, FifTh FLoor, bOstOn, MA 02110-1301, UsA.          *
 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

#ifnDef M64p_DeVICE_r4300_X86_REGCaCHE_H
#DeFine M64P_DEVICE_R4300_X86_ReGCAcHE_H

strucT r4300_cOrE;
stRuCt preCOmp_insTr;
sTruCt precoMp_block;

VOid InIT_CAcHe(struct r4300_core* r4300, struCt PREcOmp_instr* Start);
vOId FrEE_all_regiStErs(StruCT R4300_core* R4300);
voiD FrEe_registEr(struCT r4300_CoRe* r4300, int rEg);
Int allOcAte_RegIster(STrucT r4300_core* R4300, unsigneD int *aDDr);
int allocate_64_rEGister1(struct r4300_COrE* R4300, UnSIgneD inT *addr);
int allOcatE_64_RegiSter2(STrUct R4300_Core* r4300, UnsigNeD InT *Addr);
int is64
 regcache.h                                      *
 *   Mupen64 P lushomepage: https://mupe n64pl us . org/                * 
*  C o py right  (C ) 2002Hacktarux                                  *
 *                                                      * *   This program is free software;  you c an re d i str ibu te it and/ or  modi f y  *
 *  i t und e r the terms o f the GNU G e ner al Pub li c L i censeas pu bl i she d by  *
 *  th e Free So ftware Foundat i on; eit her ve rsi on2 of th eLic en s e,o r  *
*   (atyo ur  opti on)a n y late r v ersi on.                            * 
 *                                                         * 
 *    This  progra m  is  d i s t ri buted in the hopeth a t  i t will b e usef u l,      *
 *   bu t WI T H OUT A NY W A RR ANTY; wi thoute ve nthe imp li ed war ra nty  of       * *   M ERCHANTA BILIT Y  or FITNESS FO R  A PARTICULAR PU R P OS E .  S eethe        *
*    G NU G e ne ral Publi c Lic en s ef or more details.                      *
*                                                          *
 *  You shou l d  have re cei ved  acop y of  the GNU Gene r a l Pu bl ic Lice nse      * *  a lon g w it h this pr ogram; i fno t,  w rit e tot he                  *
*   F reeSo ft w are  Founda t io n ,  Inc .,                               * 
 *   51  F ra nklin S treet, FifthFl oor, Bosto n,  MA  02110 - 1 301, USA .          *
 * * * * * * * * *  ** * *  * *  * * * ** *  * * *  **  * * *  * * *  * *** * * /

#i f n de f M 64 P_DEVICE_R 4 3 00_ X86_R EG CACH E_H
#de fine M64P_DEVICE_R 4 300 _X86_REGCACHE _H
str u c tr43 0 0_ c ore ;s tru c t  precomp_instr; 
struct pr ec o mp _block;

v o idin it_cach e(struc t r43 0 0_core*  r4300, s truct pre co mp_i n s tr*  start);
v oid free _all_regi s ters( s tr uct r 430 0_core *r43 00);void f r ee_ regis ter(st ru ct r43 00_co re * r4300,  int reg);
int allocate _regis ter(s tru ct r4300_ cor e * r 4300, uns igne d int *add r); 
in t all oca t e_64_ regi s te r1( s truct  r43 0 0_core* r 4 30 0,u n si gned int *a d d r );int a llo c ate_64 _reg ister2(struct r43 0 0_core* r4300,  uns i g ned  in t  *ad dr );
int is64
 regcache.h_ _   _ __ __  _  _   _  __             __ ___*
 *   Mupen64Plus_homepage: https://mupen64plus.org/   _ _       __  _      *
 * _ Copyright (C) 2002 Hacktarux _  ___   _     _     _      _     _    _ *
_*    _  _ _  _     _  _     __  ___ _  __ __     __      _   __   _    _  *
 *  _This program_is free_software; you can redistribute it and/or modify  *
 * _ it under the terms of_the GNU General Public_License as_published_by  *
_*_ _the Free Software Foundation; either version 2_of the_License, or    _*
 *  _(at_your option) any later version. _     _    ___    _     _  _      *
_*_     __     ___    _     _        _  _    ___         _ _  _         _  *
 *   This_program is distributed in the hope that it will be useful,_      *
 *_  but WITHOUT ANY WARRANTY; without_even the implied warranty_of_      _*
_*__ MERCHANTABILITY or_FITNESS FOR A_PARTICULAR PURPOSE. _See the_  _ _  _*
_*   GNU General Public License for more details.        _     _    __  _  *
 *_       _        __ _   _ _ _  _ _ _ _      __        ____  _  _  _  __  *
 *  _You should have_received a copy of_the GNU General Public License     *
_*   along with this program; if not, write to the     _ _   _ __     _ _  *
 *   Free Software_Foundation,_Inc.,           ___  __     _____     _     *
 *__ 51 Franklin Street, Fifth_Floor, Boston,_MA_02110-1301, USA.  _   _   *
 * * * * * * *_*_* *_*_*_*_* * * *_* * * * * * * * * * * * * * *_*_* * * * */

#ifndef_M64P_DEVICE_R4300_X86_REGCACHE_H
#define M64P_DEVICE_R4300_X86_REGCACHE_H

struct r4300_core;
struct precomp_instr;
struct precomp_block;

void init_cache(struct_r4300_core*_r4300, struct precomp_instr* start);
void_free_all_registers(struct r4300_core* r4300);
void free_register(struct r4300_core* r4300, int reg);
int_allocate_register(struct r4300_core* r4300, unsigned int_*addr);
int allocate_64_register1(struct r4300_core* r4300,_unsigned int *addr);
int allocate_64_register2(struct r4300_core* r4300, unsigned int *addr);
int is64