mirror of
https://github.com/kanjitalk755/macemu.git
synced 2024-11-26 10:49:21 +00:00
- changed set/get PC to better reflect direct or real addressing modes
- removed m68k_get_pc_p() - default to not using prefetch buffer
This commit is contained in:
parent
b7177f6932
commit
d3f64dcb5f
@ -6,6 +6,9 @@
|
|||||||
* Copyright 1995 Bernd Schmidt
|
* Copyright 1995 Bernd Schmidt
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifndef NEWCPU_H
|
||||||
|
#define NEWCPU_H
|
||||||
|
|
||||||
#define SPCFLAG_STOP 2
|
#define SPCFLAG_STOP 2
|
||||||
#define SPCFLAG_DISK 4
|
#define SPCFLAG_DISK 4
|
||||||
#define SPCFLAG_INT 8
|
#define SPCFLAG_INT 8
|
||||||
@ -140,6 +143,7 @@ static __inline__ uae_u32 get_ilong_prefetch (uae_s32 o)
|
|||||||
|
|
||||||
static __inline__ void fill_prefetch_0 (void)
|
static __inline__ void fill_prefetch_0 (void)
|
||||||
{
|
{
|
||||||
|
#if USE_PREFETCH_BUFFER
|
||||||
uae_u32 r;
|
uae_u32 r;
|
||||||
#ifdef UNALIGNED_PROFITABLE
|
#ifdef UNALIGNED_PROFITABLE
|
||||||
r = *(uae_u32 *)regs.pc_p;
|
r = *(uae_u32 *)regs.pc_p;
|
||||||
@ -148,6 +152,7 @@ static __inline__ void fill_prefetch_0 (void)
|
|||||||
r = do_get_mem_long ((uae_u32 *)regs.pc_p);
|
r = do_get_mem_long ((uae_u32 *)regs.pc_p);
|
||||||
do_put_mem_long (®s.prefetch, r);
|
do_put_mem_long (®s.prefetch, r);
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
@ -188,8 +193,12 @@ static __inline__ uae_u32 next_ilong (void)
|
|||||||
#if !defined USE_COMPILER
|
#if !defined USE_COMPILER
|
||||||
static __inline__ void m68k_setpc (uaecptr newpc)
|
static __inline__ void m68k_setpc (uaecptr newpc)
|
||||||
{
|
{
|
||||||
|
#if REAL_ADDRESSING || DIRECT_ADDRESSING
|
||||||
|
regs.pc_p = get_real_address(newpc);
|
||||||
|
#else
|
||||||
regs.pc_p = regs.pc_oldp = get_real_address(newpc);
|
regs.pc_p = regs.pc_oldp = get_real_address(newpc);
|
||||||
regs.pc = newpc;
|
regs.pc = newpc;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
extern void m68k_setpc (uaecptr newpc);
|
extern void m68k_setpc (uaecptr newpc);
|
||||||
@ -197,12 +206,11 @@ extern void m68k_setpc (uaecptr newpc);
|
|||||||
|
|
||||||
static __inline__ uaecptr m68k_getpc (void)
|
static __inline__ uaecptr m68k_getpc (void)
|
||||||
{
|
{
|
||||||
|
#if REAL_ADDRESSING || DIRECT_ADDRESSING
|
||||||
|
return get_virtual_address(regs.pc_p);
|
||||||
|
#else
|
||||||
return regs.pc + ((char *)regs.pc_p - (char *)regs.pc_oldp);
|
return regs.pc + ((char *)regs.pc_p - (char *)regs.pc_oldp);
|
||||||
}
|
#endif
|
||||||
|
|
||||||
static __inline__ uaecptr m68k_getpc_p (uae_u8 *p)
|
|
||||||
{
|
|
||||||
return regs.pc + ((char *)p - (char *)regs.pc_oldp);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef USE_COMPILER
|
#ifdef USE_COMPILER
|
||||||
@ -280,3 +288,4 @@ extern struct cputbl op_smalltbl_4[];
|
|||||||
|
|
||||||
extern cpuop_func *cpufunctbl[65536] ASM_SYM_FOR_FUNC ("cpufunctbl");
|
extern cpuop_func *cpufunctbl[65536] ASM_SYM_FOR_FUNC ("cpufunctbl");
|
||||||
|
|
||||||
|
#endif /* NEWCPU_H */
|
||||||
|
Loading…
Reference in New Issue
Block a user