diff options
| author | SND\weimingzhi_cp <SND\weimingzhi_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97> | 2010-05-30 03:17:20 +0000 |
|---|---|---|
| committer | SND\weimingzhi_cp <SND\weimingzhi_cp@e17a0e51-4ae3-4d35-97c3-1a29b211df97> | 2010-05-30 03:17:20 +0000 |
| commit | e5119ae370a0b2c721e154b45bb1d67b866aec89 (patch) | |
| tree | 26cde1855f5c80c44265eb9da63e6f4bcd036ee9 | |
| parent | bf456c2072aff8448ff83db081dc700bb7032846 (diff) | |
| download | pcsxr-e5119ae370a0b2c721e154b45bb1d67b866aec89.tar.gz | |
git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@49879 e17a0e51-4ae3-4d35-97c3-1a29b211df97
| -rw-r--r-- | libpcsxcore/psxbios.c | 42 |
1 files changed, 19 insertions, 23 deletions
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; \ |
