]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
68020/030 prefetch routines without filling pipeline.
authorToni Wilen <twilen@winuae.net>
Mon, 6 Jul 2015 17:27:16 +0000 (20:27 +0300)
committerToni Wilen <twilen@winuae.net>
Mon, 6 Jul 2015 17:27:16 +0000 (20:27 +0300)
include/cpu_prefetch.h

index 4fd2995b8b1306d91535c083d1a08dc7215b384f..6bfdfc7cb415193ac27ead2e4d316215983ab936 100644 (file)
@@ -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);