From: Toni Wilen Date: Mon, 6 Jul 2015 17:27:16 +0000 (+0300) Subject: 68020/030 prefetch routines without filling pipeline. X-Git-Tag: 3200~149 X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=df18e76acbfe9e60f046f7d861c32b4ce61118be;p=francis%2Fwinuae.git 68020/030 prefetch routines without filling pipeline. --- diff --git a/include/cpu_prefetch.h b/include/cpu_prefetch.h index 4fd2995b..6bfdfc7c 100644 --- a/include/cpu_prefetch.h +++ b/include/cpu_prefetch.h @@ -108,7 +108,8 @@ STATIC_INLINE void put_byte_ce020 (uaecptr addr, uae_u32 v) mem_access_delay_byte_write_ce020 (addr, v); } -extern uae_u32 get_word_ce020_prefetch (int); +extern uae_u32 get_word_ce020_prefetch(int); +extern uae_u32 get_word_ce020_prefetch_buffer(int); STATIC_INLINE uae_u32 get_long_ce020_prefetch (int o) { @@ -121,6 +122,17 @@ STATIC_INLINE uae_u32 get_long_ce020_prefetch (int o) return v; } +STATIC_INLINE uae_u32 get_long_ce020_prefetch_buffer(int o) +{ + uae_u32 v; + uae_u16 tmp; + v = get_word_ce020_prefetch_buffer(o) << 16; + tmp = regs.db; + v |= get_word_ce020_prefetch_buffer(o + 2); + regs.db = tmp; + return v; +} + STATIC_INLINE uae_u32 next_iword_020ce (void) { uae_u32 r = get_word_ce020_prefetch (0); @@ -152,6 +164,7 @@ STATIC_INLINE void m68k_do_rts_ce020 (void) #ifdef CPUEMU_22 extern uae_u32 get_word_ce030_prefetch(int); +extern uae_u32 get_word_ce030_prefetch_buffer(int); STATIC_INLINE void put_long_ce030 (uaecptr addr, uae_u32 v) { @@ -186,6 +199,14 @@ STATIC_INLINE uae_u32 get_long_ce030_prefetch (int o) return v; } +STATIC_INLINE uae_u32 get_long_ce030_prefetch_buffer(int o) +{ + uae_u32 v; + v = get_word_ce030_prefetch_buffer(o) << 16; + v |= get_word_ce030_prefetch_buffer(o + 2); + return v; +} + STATIC_INLINE uae_u32 next_iword_030ce (void) { uae_u32 r = get_word_ce030_prefetch (0);