forked from dolphin-emu/dolphin
		
	functions are passed by value rather than by reference This is part of a bigger change so please report if it broke compile git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5228 8ced0084-cf51-0410-be5f-012b33b47a6e
		
			
				
	
	
		
			171 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			171 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| // Copyright (C) 2003 Dolphin Project.
 | |
| 
 | |
| // 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, version 2.0.
 | |
| 
 | |
| // 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 2.0 for more details.
 | |
| 
 | |
| // A copy of the GPL 2.0 should have been included with the program.
 | |
| // If not, see http://www.gnu.org/licenses/
 | |
| 
 | |
| // Official SVN repository and contact information can be found at
 | |
| // http://code.google.com/p/dolphin-emu/
 | |
| 
 | |
| #ifndef _DSPINTERPRETER_H
 | |
| #define _DSPINTERPRETER_H
 | |
| 
 | |
| #include "DSPTables.h"
 | |
| 
 | |
| #define DSP_REG_MASK    0x1f
 | |
| 
 | |
| namespace DSPInterpreter {
 | |
| 
 | |
| void Step();
 | |
| void Run();
 | |
| 
 | |
| // See: DspIntBranch.cpp
 | |
| void HandleLoop();
 | |
| 
 | |
| // If these simply return the same number of cycles as was passed into them,
 | |
| // chances are that the DSP is halted.
 | |
| // The difference between them is that the debug one obeys breakpoints.
 | |
| int RunCycles(int cycles);
 | |
| int RunCyclesDebug(int cycles);
 | |
| 
 | |
| void Stop();
 | |
| 
 | |
| void WriteCR(u16 val);
 | |
| u16  ReadCR();
 | |
| 
 | |
| 
 | |
| typedef void (*DSPInterpreterFunc)(const UDSPInstruction opc);
 | |
| 
 | |
| // All the opcode functions.
 | |
| void unknown(const UDSPInstruction opc);
 | |
| void call(const UDSPInstruction opc);
 | |
| void callr(const UDSPInstruction opc);
 | |
| void ifcc(const UDSPInstruction opc);
 | |
| void jcc(const UDSPInstruction opc);	
 | |
| void jmprcc(const UDSPInstruction opc);
 | |
| void ret(const UDSPInstruction opc);	
 | |
| void halt(const UDSPInstruction opc);
 | |
| void loop(const UDSPInstruction opc);
 | |
| void loopi(const UDSPInstruction opc);
 | |
| void bloop(const UDSPInstruction opc);
 | |
| void bloopi(const UDSPInstruction opc);
 | |
| void mrr(const UDSPInstruction opc);
 | |
| void lrr(const UDSPInstruction opc);
 | |
| void lrrd(const UDSPInstruction opc);
 | |
| void lrri(const UDSPInstruction opc);
 | |
| void lrrn(const UDSPInstruction opc);
 | |
| void srr(const UDSPInstruction opc);
 | |
| void srrd(const UDSPInstruction opc);
 | |
| void srri(const UDSPInstruction opc);
 | |
| void srrn(const UDSPInstruction opc);
 | |
| void lri(const UDSPInstruction opc);
 | |
| void lris(const UDSPInstruction opc);
 | |
| void lr(const UDSPInstruction opc);
 | |
| void sr(const UDSPInstruction opc);
 | |
| void si(const UDSPInstruction opc);
 | |
| void tstaxh(const UDSPInstruction opc);
 | |
| void clr(const UDSPInstruction opc);
 | |
| void clrl(const UDSPInstruction opc);
 | |
| void clrp(const UDSPInstruction opc);
 | |
| void mulc(const UDSPInstruction opc);
 | |
| void cmpar(const UDSPInstruction opc);
 | |
| void cmp(const UDSPInstruction opc);
 | |
| void tst(const UDSPInstruction opc);
 | |
| void addaxl(const UDSPInstruction opc);
 | |
| void addarn(const UDSPInstruction opc);
 | |
| void mulcac(const UDSPInstruction opc);
 | |
| void movr(const UDSPInstruction opc);
 | |
| void movax(const UDSPInstruction opc);
 | |
| void xorr(const UDSPInstruction opc);
 | |
| void andr(const UDSPInstruction opc);
 | |
| void orr(const UDSPInstruction opc);
 | |
| void andc(const UDSPInstruction opc);
 | |
| void orc(const UDSPInstruction opc);
 | |
| void xorc(const UDSPInstruction opc);
 | |
| void notc(const UDSPInstruction opc);
 | |
| void lsrnrx(const UDSPInstruction opc);
 | |
| void asrnrx(const UDSPInstruction opc);
 | |
| void lsrnr(const UDSPInstruction opc);
 | |
| void asrnr(const UDSPInstruction opc);
 | |
| void add(const UDSPInstruction opc);
 | |
| void addp(const UDSPInstruction opc);
 | |
| void cmpis(const UDSPInstruction opc);
 | |
| void addpaxz(const UDSPInstruction opc);
 | |
| void movpz(const UDSPInstruction opc);
 | |
| void decm(const UDSPInstruction opc);
 | |
| void dec(const UDSPInstruction opc);
 | |
| void inc(const UDSPInstruction opc);
 | |
| void incm(const UDSPInstruction opc);
 | |
| void neg(const UDSPInstruction opc);
 | |
| void addax(const UDSPInstruction opc);
 | |
| void addr(const UDSPInstruction opc);
 | |
| void subr(const UDSPInstruction opc);
 | |
| void subp(const UDSPInstruction opc);
 | |
| void subax(const UDSPInstruction opc);
 | |
| void addis(const UDSPInstruction opc);
 | |
| void addi(const UDSPInstruction opc);
 | |
| void lsl16(const UDSPInstruction opc);
 | |
| void madd(const UDSPInstruction opc);
 | |
| void msub(const UDSPInstruction opc);
 | |
| void lsr16(const UDSPInstruction opc);
 | |
| void asr16(const UDSPInstruction opc);
 | |
| void lsl(const UDSPInstruction opc);
 | |
| void lsr(const UDSPInstruction opc);
 | |
| void asl(const UDSPInstruction opc);
 | |
| void asr(const UDSPInstruction opc);  
 | |
| void lsrn(const UDSPInstruction opc);
 | |
| void asrn(const UDSPInstruction opc);
 | |
| void dar(const UDSPInstruction opc);
 | |
| void iar(const UDSPInstruction opc);
 | |
| void subarn(const UDSPInstruction opc);
 | |
| void sbclr(const UDSPInstruction opc);
 | |
| void sbset(const UDSPInstruction opc);
 | |
| void mov(const UDSPInstruction opc);
 | |
| void movp(const UDSPInstruction opc);
 | |
| void mul(const UDSPInstruction opc);
 | |
| void mulac(const UDSPInstruction opc);
 | |
| void mulmv(const UDSPInstruction opc);
 | |
| void mulmvz(const UDSPInstruction opc);
 | |
| void mulx(const UDSPInstruction opc);
 | |
| void mulxac(const UDSPInstruction opc);
 | |
| void mulxmv(const UDSPInstruction opc);
 | |
| void mulxmvz(const UDSPInstruction opc);
 | |
| void mulcmvz(const UDSPInstruction opc);
 | |
| void mulcmv(const UDSPInstruction opc);
 | |
| void movnp(const UDSPInstruction opc);
 | |
| void sub(const UDSPInstruction opc);
 | |
| void maddx(const UDSPInstruction opc);
 | |
| void msubx(const UDSPInstruction opc);
 | |
| void maddc(const UDSPInstruction opc);
 | |
| void msubc(const UDSPInstruction opc);
 | |
| void srs(const UDSPInstruction opc);
 | |
| void lrs(const UDSPInstruction opc);
 | |
| void nx(const UDSPInstruction opc);
 | |
| void cmpi(const UDSPInstruction opc);
 | |
| void rti(const UDSPInstruction opc);
 | |
| void ilrr(const UDSPInstruction opc);
 | |
| void ilrrd(const UDSPInstruction opc);
 | |
| void ilrri(const UDSPInstruction opc);
 | |
| void ilrrn(const UDSPInstruction opc);
 | |
| void andcf(const UDSPInstruction opc);
 | |
| void andf(const UDSPInstruction opc);
 | |
| void xori(const UDSPInstruction opc);
 | |
| void andi(const UDSPInstruction opc);
 | |
| void ori(const UDSPInstruction opc);
 | |
| void srbith(const UDSPInstruction opc);
 | |
| void mulaxh(const UDSPInstruction opc);
 | |
| void tstprod(const UDSPInstruction opc);
 | |
| void abs(const UDSPInstruction opc);
 | |
| 
 | |
| }  // namespace
 | |
| 
 | |
| #endif // _DSPINTERPRETER_H
 |