mirror of
https://github.com/mupen64plus/mupen64plus-oldsvn.git
synced 2025-04-02 10:52:35 -04:00
56 lines
1.9 KiB
C
56 lines
1.9 KiB
C
/**
|
|
* Mupen64 - r4300/x86_64/regcache.h
|
|
* Copyright (C) 2007 Richard Goedeken, Hacktarux
|
|
* Based on code written by Hacktarux, Copyright (C) 2002
|
|
*
|
|
* Mupen64 homepage: http://mupen64.emulation64.com
|
|
* Forum homepage: http://www.emutalk.net/forumdisplay.php?f=50
|
|
*
|
|
* This program is free software; you can redistribute it and/
|
|
* or modify it under the terms of the GNU General Public Li-
|
|
* cence as published by the Free Software Foundation; either
|
|
* version 2 of the Licence, or any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be use-
|
|
* ful, but WITHOUT ANY WARRANTY; without even the implied war-
|
|
* ranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
* See the GNU General Public Licence for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public
|
|
* Licence along with this program; if not, write to the Free
|
|
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
|
|
* USA.
|
|
*
|
|
**/
|
|
|
|
|
|
#ifndef REGCACHE_H
|
|
#define REGCACHE_H
|
|
|
|
#include "../recomp.h"
|
|
|
|
void init_cache(precomp_instr* start);
|
|
void free_registers_move_start();
|
|
void free_all_registers();
|
|
void free_register(int reg);
|
|
void flush_registers();
|
|
void reload_registers();
|
|
void stack_save_registers();
|
|
void stack_load_registers();
|
|
int is64(unsigned int *addr);
|
|
int lru_register();
|
|
int lru_base_register();
|
|
void set_register_state(int reg, unsigned int *addr, int dirty, int is64bits);
|
|
int lock_register(int reg);
|
|
void unlock_register(int reg);
|
|
int allocate_register_32(unsigned int *addr);
|
|
int allocate_register_64(unsigned long long *addr);
|
|
int allocate_register_32_w(unsigned int *addr);
|
|
int allocate_register_64_w(unsigned long long *addr);
|
|
void allocate_register_32_manually(int reg, unsigned int *addr);
|
|
void allocate_register_32_manually_w(int reg, unsigned int *addr);
|
|
void simplify_access();
|
|
void build_wrapper(precomp_instr*, unsigned char*, precomp_block*);
|
|
void build_wrappers(precomp_instr*, int, int, precomp_block*);
|
|
|
|
#endif // REGCACHE_H
|