From e5119ae370a0b2c721e154b45bb1d67b866aec89 Mon Sep 17 00:00:00 2001 From: "SND\\weimingzhi_cp" Date: Sun, 30 May 2010 03:17:20 +0000 Subject: git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@49879 e17a0e51-4ae3-4d35-97c3-1a29b211df97 --- libpcsxcore/psxbios.c | 42 +++++++++++++++++++----------------------- 1 file changed, 19 insertions(+), 23 deletions(-) (limited to 'libpcsxcore') diff --git a/libpcsxcore/psxbios.c b/libpcsxcore/psxbios.c index 70c193b3..c6ccbbcb 100644 --- a/libpcsxcore/psxbios.c +++ b/libpcsxcore/psxbios.c @@ -257,14 +257,14 @@ static TCB Thread[8]; static int CurThread = 0; static FileDesc FDesc[32]; -static __inline void softCall(u32 pc) { +static inline void softCall(u32 pc) { pc0 = pc; ra = 0x80001000; while (pc0 != 0x80001000) psxCpu->ExecuteBlock(); } -static __inline void softCall2(u32 pc) { +static inline void softCall2(u32 pc) { u32 sra = ra; pc0 = pc; ra = 0x80001000; @@ -273,7 +273,7 @@ static __inline void softCall2(u32 pc) { ra = sra; } -static __inline void DeliverEvent(u32 ev, u32 spec) { +static inline void DeliverEvent(u32 ev, u32 spec) { if (Event[ev][spec].status != EvStACTIVE) return; // Event[ev][spec].status = EvStALREADY; @@ -282,6 +282,19 @@ static __inline void DeliverEvent(u32 ev, u32 spec) { } else Event[ev][spec].status = EvStALREADY; } +static inline void SaveRegs() { + memcpy(regs, psxRegs.GPR.r, 32*4); + regs[32] = psxRegs.GPR.n.lo; + regs[33] = psxRegs.GPR.n.hi; + regs[34] = psxRegs.pc; +} + +static inline void LoadRegs() { + memcpy(psxRegs.GPR.r, regs, 32*4); + psxRegs.GPR.n.lo = regs[32]; + psxRegs.GPR.n.hi = regs[33]; +} + /* * // * // * @@ -1543,9 +1556,8 @@ void psxBios_PAD_init() { // 15 #ifdef PSXBIOS_LOG PSXBIOS_LOG("psxBios_%s\n", biosB0n[0x15]); #endif - psxHwWrite16(0x1f801074, (u16)(psxHwRead16(0x1f801074) | 0x1)); - pad_buf = (int*)Ra1; + pad_buf = (int *)Ra1; *pad_buf = -1; psxRegs.CP0.n.Status |= 0x401; pc0 = ra; @@ -1560,12 +1572,10 @@ void psxBios_PAD_dr() { // 16 } void psxBios_ReturnFromException() { // 17 - memcpy(psxRegs.GPR.r, regs, 32*4); - psxRegs.GPR.n.lo = regs[32]; - psxRegs.GPR.n.hi = regs[33]; + LoadRegs(); pc0 = psxRegs.CP0.n.EPC; - if (psxRegs.CP0.n.Cause & 0x80000000) pc0+=4; + if (psxRegs.CP0.n.Cause & 0x80000000) pc0 += 4; psxRegs.CP0.n.Status = (psxRegs.CP0.n.Status & 0xfffffff0) | ((psxRegs.CP0.n.Status & 0x3c) >> 2); @@ -2511,20 +2521,6 @@ void psxBiosInit() { void psxBiosShutdown() { } -__inline void SaveRegs() { - memcpy(regs, psxRegs.GPR.r, 32*4); - regs[32] = psxRegs.GPR.n.lo; - regs[33] = psxRegs.GPR.n.hi; - regs[34] = psxRegs.pc; -} - -__inline void LoadRegs() { - memcpy(psxRegs.GPR.r, regs, 32*4); - psxRegs.GPR.n.lo = regs[32]; - psxRegs.GPR.n.hi = regs[33]; -} - - #define psxBios_PADpoll(pad) { \ PAD##pad##_startPoll(pad); \ pad_buf##pad[0] = 0; \ -- cgit v1.2.3