This is the mail archive of the ecos-discuss@sources.redhat.com mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: SH4 cache problem


>>>>> "Suzuki,RyosIII" == Suzuki,RyosIII  <ryos@atom-tc.or.jp> writes:

Suzuki,RyosIII> Hello, I found another SH4 problems in current CVS
Suzuki,RyosIII> tree about cache, I know current eCos doesn't support
Suzuki,RyosIII> SH4's cache.  However I think it is gdb_stub problem
Suzuki,RyosIII> since I can run with cache by using Hardware debugger.
Suzuki,RyosIII> please check following, and I hope this problems is
Suzuki,RyosIII> fixed in near future.

I've checked in the below.

Thanks!
Jesper


Index: sh3/current/ChangeLog
===================================================================
RCS file: /home/cvs/ecc/ecc/hal/sh/sh3/current/ChangeLog,v
retrieving revision 1.14
diff -u -5 -r1.14 ChangeLog
--- sh3/current/ChangeLog	2001/02/26 10:43:28	1.14
+++ sh3/current/ChangeLog	2001/02/28 10:07:49
@@ -1,5 +1,11 @@
+2001-02-28  Jesper Skov  <jskov@redhat.com>
+
+	* src/variant.S (cyg_hal_cache_enable): Write ORed value, not just
+	the enable bit.
+	Problem noticed by Ryouzaburou Suzuki <ryos@atom-tc.or.jp>
+
 2001-02-26  Jesper Skov  <jskov@redhat.com>
 
 	* include/mod_regs_ser.h: Add a couple of zeroes to
 	SCIF clear masks (for looks - no semantic change).
 
Index: sh3/current/src/variant.S
===================================================================
RCS file: /home/cvs/ecc/ecc/hal/sh/sh3/current/src/variant.S,v
retrieving revision 1.3
diff -u -5 -r1.3 variant.S
--- sh3/current/src/variant.S	2001/01/18 10:42:08	1.3
+++ sh3/current/src/variant.S	2001/02/28 10:07:50
@@ -71,11 +71,12 @@
 FUNC_START(cyg_hal_cache_enable)
         GOTO_NONCACHED_SHADOW
         mov     #CYGARC_REG_CCR,r1
         mov.l   @r1,r0
         mov     #CYGARC_REG_CCR_CE,r2
-        mov.l   r2,@r1
+        or      r2,r0
+        mov.l   r0,@r1
         nop
         rts
          nop
 
 FUNC_START(cyg_hal_cache_disable)
Index: sh4/current/ChangeLog
===================================================================
RCS file: /home/cvs/ecc/ecc/hal/sh/sh4/current/ChangeLog,v
retrieving revision 1.10
diff -u -5 -r1.10 ChangeLog
--- sh4/current/ChangeLog	2001/02/26 10:43:28	1.10
+++ sh4/current/ChangeLog	2001/02/28 10:07:50
@@ -1,5 +1,13 @@
+2001-02-28  Jesper Skov  <jskov@redhat.com>
+
+	* src/variant.S (cyg_hal_dcache_enable, cyg_hal_icache_enable):
+	Write ORed value, not just the enable bit.
+	* include/var_cache.h: Fix various macro typos.
+
+	Fixes from Ryouzaburou Suzuki <ryos@atom-tc.or.jp>
+
 2001-02-26  Jesper Skov  <jskov@redhat.com>
 
 	* include/mod_regs_ser.h: Add a couple of zeroes to SCIF clear
 	masks (for looks - no semantic change).
 
Index: sh4/current/include/var_cache.h
===================================================================
RCS file: /home/cvs/ecc/ecc/hal/sh/sh4/current/include/var_cache.h,v
retrieving revision 1.1
diff -u -5 -r1.1 var_cache.h
--- sh4/current/include/var_cache.h	2000/11/01 10:00:38	1.1
+++ sh4/current/include/var_cache.h	2001/02/28 10:07:50
@@ -123,18 +123,18 @@
 
 // Set the cache refill burst size
 //#define HAL_ICACHE_BURST_SIZE(_size_)
 
 // Set the cache write mode
-#define HAL_ICACHE_WRITE_MODE( _mode_ )         \
+#define HAL_DCACHE_WRITE_MODE( _mode_ )         \
     CYG_MACRO_START                             \
     cyg_uint32 _m_;                             \
     if (HAL_DCACHE_WRITETHRU_MODE == _mode_)    \
       _m_ = CYGARC_REG_CCR_WT;                  \
     else                                        \
       _m_ = CYGARC_REG_CCR_CB;                  \
-    cyg_hal_cache_write_mode(_m_);              \
+    cyg_hal_dcache_write_mode(_m_);             \
     CYG_MACRO_END
 
 #define HAL_DCACHE_WRITETHRU_MODE       0
 #define HAL_DCACHE_WRITEBACK_MODE       1
 
@@ -189,14 +189,14 @@
 externC void cyg_hal_icache_enable(void);
 externC void cyg_hal_icache_disable(void);
 externC void cyg_hal_icache_invalidate_all(void);
 
 // Enable the cache
-#define HAL_ICACHE_ENABLE() cyg_hal_dcache_enable()
+#define HAL_ICACHE_ENABLE() cyg_hal_icache_enable()
 
 // Disable the cache
-#define HAL_ICACHE_DISABLE() cyg_hal_dcache_disable()
+#define HAL_ICACHE_DISABLE() cyg_hal_icache_disable()
 
 // Invalidate the entire cache
 #define HAL_ICACHE_INVALIDATE_ALL() cyg_hal_icache_invalidate_all()
 
 // Synchronize the contents of the cache with memory.
Index: sh4/current/src/variant.S
===================================================================
RCS file: /home/cvs/ecc/ecc/hal/sh/sh4/current/src/variant.S,v
retrieving revision 1.3
diff -u -5 -r1.3 variant.S
--- sh4/current/src/variant.S	2001/01/18 10:42:08	1.3
+++ sh4/current/src/variant.S	2001/02/28 10:07:50
@@ -71,11 +71,12 @@
 FUNC_START(cyg_hal_dcache_enable)
         GOTO_NONCACHED_SHADOW
         mov.l   $nCYGARC_REG_CCR,r1
         mov.l   @r1,r0
         mov     #CYGARC_REG_CCR_OCE,r2
-        mov.l   r2,@r1
+        or      r2,r0
+        mov.l   r0,@r1
         nop
         rts
          nop
 
 FUNC_START(cyg_hal_dcache_disable)
@@ -162,11 +163,12 @@
 FUNC_START(cyg_hal_icache_enable)
         GOTO_NONCACHED_SHADOW
         mov.l   $nCYGARC_REG_CCR,r1
         mov.l   @r1,r0
         mov.l   $nCYGARC_REG_CCR_ICE,r2
-        mov.l   r2,@r1
+        or      r2,r0
+        mov.l   r0,@r1
         nop
         rts
          nop
 
 FUNC_START(cyg_hal_icache_disable)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]