annotate packages/kernel/current/tests/kcache2.c @ 161:ac086aa3217e

Merge from eCos master repository on 2001-06-08-21:11:51-BST
author jlarmour
date Sun, 10 Jun 2001 19:35:23 +0000
parents 6b5f480c6929
children 678094f34118
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1 /*=================================================================
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
2 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
3 // kcache2.c
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
4 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
5 // Cache feature/timing tests
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
6 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
7 //==========================================================================
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
8 //####COPYRIGHTBEGIN####
64
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 24
diff changeset
9 //
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 24
diff changeset
10 // -------------------------------------------
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 24
diff changeset
11 // The contents of this file are subject to the Red Hat eCos Public License
66
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
12 // Version 1.1 (the "License"); you may not use this file except in
64
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 24
diff changeset
13 // compliance with the License. You may obtain a copy of the License at
66
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
14 // http://www.redhat.com/
64
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 24
diff changeset
15 //
66
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
16 // Software distributed under the License is distributed on an "AS IS"
64
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 24
diff changeset
17 // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 24
diff changeset
18 // License for the specific language governing rights and limitations under
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 24
diff changeset
19 // the License.
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 24
diff changeset
20 //
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 24
diff changeset
21 // The Original Code is eCos - Embedded Configurable Operating System,
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 24
diff changeset
22 // released September 30, 1998.
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 24
diff changeset
23 //
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 24
diff changeset
24 // The Initial Developer of the Original Code is Red Hat.
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 24
diff changeset
25 // Portions created by Red Hat are
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 24
diff changeset
26 // Copyright (C) 1998, 1999, 2000 Red Hat, Inc.
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 24
diff changeset
27 // All Rights Reserved.
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 24
diff changeset
28 // -------------------------------------------
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 24
diff changeset
29 //
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
30 //####COPYRIGHTEND####
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
31 //==========================================================================
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
32 //#####DESCRIPTIONBEGIN####
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
33 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
34 // Author(s): jskov, based on kcache1.c by dsm
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
35 // Contributors: jskov
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
36 // Date: 1998-12-10
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
37 // Description: Tests some of the more exotic cache macros.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
38 //####DESCRIPTIONEND####
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
39 */
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
40
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
41 #include <cyg/hal/hal_arch.h> // CYGNUM_HAL_STACK_SIZE_TYPICAL
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
42
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
43 #include <cyg/kernel/kapi.h>
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
44
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
45 #include <cyg/infra/testcase.h>
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
46
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
47 #ifdef CYGVAR_KERNEL_COUNTERS_CLOCK
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
48 #ifdef CYGFUN_KERNEL_API_C
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
49
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
50 #include <cyg/infra/diag.h>
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
51 #include <cyg/hal/hal_cache.h>
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
52
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
53 // -------------------------------------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
54
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
55 #define NTHREADS 1
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
56 #define STACKSIZE CYGNUM_HAL_STACK_SIZE_TYPICAL
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
57
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
58 // The following are defaults for loop variables. Note they will be overriden
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
59 // on simulator targets, where detected - there is no point testing a cache
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
60 // which doesn't exist :-).
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
61
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
62 #define TEST_DZERO_LOOPS 5000 // default number of loops for test_dzero()
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
63 #define TIME_ILOCK_LOOPS 10000 // default number of loops for time_ilock()
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
64 #define TIME_DLOCK_LOOPS 10000 // default number of loops for time_dlock()
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
65
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
66
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
67 static cyg_handle_t thread[NTHREADS];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
68
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
69 static cyg_thread thread_obj[NTHREADS];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
70 static char stack[NTHREADS][STACKSIZE];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
71
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
72 #define MAXSIZE 1<<18
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
73
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
74 volatile char m[MAXSIZE];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
75
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
76 // -------------------------------------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
77 // Test of data cache zero.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
78 // o Timing comparison with instructions doing the same amount of work.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
79 // o Check that area cleared with the DCACHE_ZERO macro contains zeros.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
80 #ifdef HAL_DCACHE_ZERO
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
81 static void test_dzero(void)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
82 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
83 register cyg_uint32 k, i;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
84 cyg_tick_count_t count0, count1;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
85 cyg_ucount32 t;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
86 volatile cyg_uint32* aligned_p;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
87 volatile cyg_uint32* p;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
88 register CYG_INTERRUPT_STATE oldints;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
89 cyg_ucount32 test_dzero_loops = TEST_DZERO_LOOPS;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
90
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
91 CYG_TEST_INFO("Data cache zero");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
92
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
93 if (cyg_test_is_simulator)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
94 test_dzero_loops=10;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
95
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
96 aligned_p = (volatile cyg_uint32*)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
97 (((unsigned long) &m[HAL_DCACHE_LINE_SIZE*2])
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
98 & ~(HAL_DCACHE_LINE_SIZE-1));
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
99
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
100 // Time with conventional instructions.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
101 HAL_DISABLE_INTERRUPTS(oldints);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
102 HAL_DCACHE_SYNC();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
103 HAL_DCACHE_DISABLE();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
104 HAL_DCACHE_SYNC();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
105 HAL_DCACHE_INVALIDATE_ALL();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
106 HAL_DCACHE_ENABLE();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
107 HAL_RESTORE_INTERRUPTS(oldints);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
108 count0 = cyg_current_time();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
109 for (k = 0; k < test_dzero_loops; k++) {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
110 p = aligned_p;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
111 for (i = 0; i < HAL_DCACHE_SETS; i++) {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
112 #if (16 == HAL_DCACHE_LINE_SIZE)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
113 *p++ = 0;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
114 *p++ = 0;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
115 *p++ = 0;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
116 *p++ = 0;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
117 #else
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
118 #error "Not defined for this cache line size."
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
119 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
120 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
121
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
122 HAL_DISABLE_INTERRUPTS(oldints);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
123 HAL_DCACHE_SYNC();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
124 HAL_DCACHE_DISABLE();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
125 HAL_DCACHE_SYNC();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
126 HAL_DCACHE_INVALIDATE_ALL();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
127 HAL_DCACHE_ENABLE();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
128 HAL_RESTORE_INTERRUPTS(oldints);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
129 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
130 count1 = cyg_current_time();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
131 t = count1 - count0;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
132 diag_printf("time with instructions: %d\n", t);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
133
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
134 // Initialize the area with non-zero so we can check whether
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
135 // the macro cleared the area properly.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
136 p = aligned_p;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
137 for (i = 0;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
138 i < HAL_DCACHE_SETS*HAL_DCACHE_LINE_SIZE/sizeof(cyg_uint32);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
139 i++) {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
140 *p++ = 0xdeadbeef;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
141 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
142
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
143 // Time with DCACHE_ZERO.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
144 HAL_DISABLE_INTERRUPTS(oldints);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
145 HAL_DCACHE_SYNC();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
146 HAL_DCACHE_DISABLE();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
147 HAL_DCACHE_SYNC();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
148 HAL_DCACHE_INVALIDATE_ALL();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
149 HAL_DCACHE_ENABLE();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
150 HAL_RESTORE_INTERRUPTS(oldints);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
151 count0 = cyg_current_time();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
152 for (k = 0; k < test_dzero_loops; k++) {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
153 HAL_DCACHE_ZERO(aligned_p, HAL_DCACHE_SETS*HAL_DCACHE_LINE_SIZE);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
154
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
155 HAL_DISABLE_INTERRUPTS(oldints);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
156 HAL_DCACHE_SYNC();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
157 HAL_DCACHE_DISABLE();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
158 HAL_DCACHE_SYNC();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
159 HAL_DCACHE_INVALIDATE_ALL();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
160 HAL_DCACHE_ENABLE();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
161 HAL_RESTORE_INTERRUPTS(oldints);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
162 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
163 count1 = cyg_current_time();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
164 t = count1 - count0;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
165 diag_printf("time with HAL_DCACHE_ZERO: %d\n", t);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
166
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
167 // Verify that the area was actually cleared.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
168 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
169 cyg_uint32 d;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
170
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
171 d = 0;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
172 p = aligned_p;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
173 for (i = 0;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
174 i < HAL_DCACHE_SETS*HAL_DCACHE_LINE_SIZE/sizeof(cyg_uint32);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
175 i++) {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
176 d |= *p++;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
177 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
178
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
179 CYG_TEST_CHECK(0 == d, "region not properly cleared");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
180 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
181
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
182 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
183 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
184
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
185 // -------------------------------------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
186 // Test of data cache write hint.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
187 // Just check that the macro compiles.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
188 #ifdef HAL_DCACHE_WRITE_HINT
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
189 static void test_dwrite_hint(void)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
190 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
191 register cyg_uint32 k;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
192 register CYG_INTERRUPT_STATE oldints;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
193
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
194 CYG_TEST_INFO("Data cache write hint");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
195
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
196 HAL_DISABLE_INTERRUPTS(oldints);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
197 HAL_DCACHE_SYNC();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
198 HAL_DCACHE_DISABLE();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
199 HAL_DCACHE_SYNC();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
200 HAL_DCACHE_INVALIDATE_ALL();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
201 HAL_DCACHE_ENABLE();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
202 HAL_RESTORE_INTERRUPTS(oldints);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
203
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
204 HAL_DCACHE_WRITE_HINT(&m[HAL_DCACHE_LINE_SIZE*2], 2*HAL_DCACHE_LINE_SIZE);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
205 for (k = 0; k < 20; k++);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
206 m[HAL_DCACHE_LINE_SIZE*2] = 42;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
207 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
208 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
209
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
210 // -------------------------------------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
211 // Test of data cache read hint.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
212 // Just check that the macro compiles.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
213 #ifdef HAL_DCACHE_READ_HINT
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
214 static void test_dread_hint(void)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
215 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
216 register char c;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
217 register cyg_uint32 k;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
218 register CYG_INTERRUPT_STATE oldints;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
219
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
220 CYG_TEST_INFO("Data cache read hint");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
221
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
222 HAL_DISABLE_INTERRUPTS(oldints);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
223 HAL_DCACHE_SYNC();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
224 HAL_DCACHE_DISABLE();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
225 HAL_DCACHE_SYNC();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
226 HAL_DCACHE_INVALIDATE_ALL();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
227 HAL_DCACHE_ENABLE();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
228 HAL_RESTORE_INTERRUPTS(oldints);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
229
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
230 HAL_DCACHE_READ_HINT(&m[HAL_DCACHE_LINE_SIZE*2], 2*HAL_DCACHE_LINE_SIZE);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
231 for (k = 0; k < 20; k++);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
232 c = m[HAL_DCACHE_LINE_SIZE*2];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
233 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
234 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
235
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
236 // -------------------------------------------------------------------------
143
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
237 // Test of data cache line store
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
238 // o No semantic requirement.
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
239 // o Check that flushed data is written to memory.
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
240 // o Simple invocation check of macro.
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
241 #ifdef HAL_DCACHE_STORE
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
242 static void test_dstore(void)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
243 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
244 volatile cyg_uint8* aligned_p;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
245 cyg_int32 i;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
246 register CYG_INTERRUPT_STATE oldints;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
247
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
248 CYG_TEST_INFO("Data cache store region");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
249
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
250 for (i = 0; i < HAL_DCACHE_LINE_SIZE*16; i++)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
251 m[i] = 0;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
252
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
253 HAL_DISABLE_INTERRUPTS(oldints);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
254 HAL_DCACHE_SYNC();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
255 HAL_DCACHE_DISABLE();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
256 HAL_DCACHE_SYNC();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
257 HAL_DCACHE_INVALIDATE_ALL();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
258 HAL_DCACHE_ENABLE();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
259 HAL_RESTORE_INTERRUPTS(oldints);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
260
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
261 aligned_p = (volatile cyg_uint8*)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
262 (((unsigned long) &m[HAL_DCACHE_LINE_SIZE*2])
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
263 & ~(HAL_DCACHE_LINE_SIZE-1));
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
264
143
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
265 HAL_DISABLE_INTERRUPTS(oldints);
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
266
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
267 aligned_p[0] = 42 + aligned_p[1]; // Load causes cache to be used!
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
268
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
269 HAL_DCACHE_STORE(aligned_p, HAL_DCACHE_LINE_SIZE);
143
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
270
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
271 HAL_RESTORE_INTERRUPTS(oldints);
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
272
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
273 CYG_TEST_CHECK(42 == aligned_p[0],
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
274 "memory didn't contain flushed data");
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
275
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
276 HAL_DCACHE_INVALIDATE_ALL(); // Discard...
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
277
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
278 CYG_TEST_CHECK(42 == aligned_p[0],
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
279 "memory didn't contain flushed data after invalidate all");
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
280 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
281 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
282
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
283 // -------------------------------------------------------------------------
143
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
284 // Test of data cache total flush (sync).
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
285 // o No semantic requirement.
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
286 // o Check that flushed data is written to memory.
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
287 // o Simple invocation check of macro.
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
288 #ifdef HAL_DCACHE_LINE_SIZE // So we can find our way around memory
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
289 static void test_dsync(void)
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
290 {
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
291 volatile cyg_uint8* aligned_p;
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
292 cyg_int32 i;
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
293 register CYG_INTERRUPT_STATE oldints;
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
294
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
295 CYG_TEST_INFO("Data cache sync all");
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
296
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
297 for (i = 0; i < HAL_DCACHE_LINE_SIZE*16; i++)
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
298 m[i] = 0;
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
299
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
300 HAL_DISABLE_INTERRUPTS(oldints);
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
301 HAL_DCACHE_SYNC();
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
302 HAL_DCACHE_DISABLE();
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
303 HAL_DCACHE_SYNC();
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
304 HAL_DCACHE_INVALIDATE_ALL();
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
305 HAL_DCACHE_ENABLE();
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
306 HAL_RESTORE_INTERRUPTS(oldints);
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
307
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
308 aligned_p = (volatile cyg_uint8*)
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
309 (((unsigned long) &m[HAL_DCACHE_LINE_SIZE*2])
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
310 & ~(HAL_DCACHE_LINE_SIZE-1));
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
311
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
312 HAL_DISABLE_INTERRUPTS(oldints);
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
313
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
314 aligned_p[0] = 42 + aligned_p[1]; // Load causes cache to be used!
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
315 aligned_p[HAL_DCACHE_LINE_SIZE] = 43 + aligned_p[HAL_DCACHE_LINE_SIZE + 1];
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
316
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
317 HAL_DCACHE_SYNC();
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
318
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
319 HAL_RESTORE_INTERRUPTS(oldints);
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
320
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
321 CYG_TEST_CHECK(42 == aligned_p[0],
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
322 "memory didn't contain flushed data");
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
323 CYG_TEST_CHECK(43 == aligned_p[HAL_DCACHE_LINE_SIZE],
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
324 "memory didn't contain flushed data next block");
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
325
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
326 HAL_DCACHE_INVALIDATE_ALL();
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
327
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
328 CYG_TEST_CHECK(42 == aligned_p[0],
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
329 "memory didn't contain flushed data after invalidate");
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
330 CYG_TEST_CHECK(43 == aligned_p[HAL_DCACHE_LINE_SIZE],
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
331 "memory didn't contain flushed data next block after invalidate");
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
332
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
333 HAL_DCACHE_DISABLE();
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
334
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
335 CYG_TEST_CHECK(42 == aligned_p[0],
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
336 "memory didn't contain flushed data after disable");
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
337 CYG_TEST_CHECK(43 == aligned_p[HAL_DCACHE_LINE_SIZE],
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
338 "memory didn't contain flushed data next block after disable");
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
339
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
340 HAL_DCACHE_ENABLE();
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
341 }
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
342 #endif // HAL_DCACHE_LINE_SIZE
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
343
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
344 // -------------------------------------------------------------------------
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
345 // Test of data cache line flush.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
346 // o Requires write-back cache.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
347 // o Check that flushed data is written to memory.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
348 // o Simple range check of macro.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
349 #ifdef HAL_DCACHE_FLUSH
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
350 static void test_dflush(void)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
351 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
352 volatile cyg_uint8* aligned_p;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
353 cyg_int32 i;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
354 register CYG_INTERRUPT_STATE oldints;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
355
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
356 CYG_TEST_INFO("Data cache flush region");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
357
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
358 for (i = 0; i < HAL_DCACHE_LINE_SIZE*16; i++)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
359 m[i] = 0;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
360
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
361 HAL_DISABLE_INTERRUPTS(oldints);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
362 HAL_DCACHE_SYNC();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
363 HAL_DCACHE_DISABLE();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
364 HAL_DCACHE_SYNC();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
365 HAL_DCACHE_INVALIDATE_ALL();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
366 HAL_DCACHE_ENABLE();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
367 HAL_RESTORE_INTERRUPTS(oldints);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
368
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
369 aligned_p = (volatile cyg_uint8*)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
370 (((unsigned long) &m[HAL_DCACHE_LINE_SIZE*2])
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
371 & ~(HAL_DCACHE_LINE_SIZE-1));
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
372
143
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
373 HAL_DISABLE_INTERRUPTS(oldints);
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
374
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
375 aligned_p[0] = 42 + aligned_p[1]; // Load causes cache to be used!
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
376 aligned_p[HAL_DCACHE_LINE_SIZE] = 43 + aligned_p[HAL_DCACHE_LINE_SIZE + 1];
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
377
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
378 HAL_DCACHE_FLUSH(aligned_p, HAL_DCACHE_LINE_SIZE);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
379
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
380 HAL_DCACHE_DISABLE();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
381
143
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
382 HAL_RESTORE_INTERRUPTS(oldints);
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
383
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
384 CYG_TEST_CHECK(42 == aligned_p[0],
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
385 "memory didn't contain flushed data");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
386 CYG_TEST_CHECK(0 == aligned_p[HAL_DCACHE_LINE_SIZE],
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
387 "flushed beyond region");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
388
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
389 HAL_DCACHE_ENABLE();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
390 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
391 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
392
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
393 // -------------------------------------------------------------------------
143
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
394 // Test of data cache disable (which does NOT force contents out to RAM)
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
395 // o Requires write-back cache [so NOT invoked unconditionally]
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
396 // o Check that dirty data is not written to memory and is invalidated
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
397 // in the cache.
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
398 // o Simple invocation check of macro.
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
399 #ifdef HAL_DCACHE_QUERY_WRITE_MODE // only if we know this, can we test:
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
400 static void test_ddisable(void)
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
401 {
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
402 volatile cyg_uint8* aligned_p;
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
403 cyg_int32 i;
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
404 register CYG_INTERRUPT_STATE oldints;
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
405
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
406 CYG_TEST_INFO("Data cache gross disable");
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
407
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
408 for (i = 0; i < HAL_DCACHE_LINE_SIZE*16; i++)
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
409 m[i] = 0;
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
410
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
411 HAL_DISABLE_INTERRUPTS(oldints);
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
412 HAL_DCACHE_SYNC();
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
413 HAL_DCACHE_DISABLE();
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
414 HAL_DCACHE_SYNC();
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
415 HAL_DCACHE_INVALIDATE_ALL();
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
416 HAL_DCACHE_ENABLE();
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
417 HAL_RESTORE_INTERRUPTS(oldints);
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
418
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
419 aligned_p = (volatile cyg_uint8*)
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
420 (((unsigned long) &m[HAL_DCACHE_LINE_SIZE*2])
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
421 & ~(HAL_DCACHE_LINE_SIZE-1));
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
422
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
423 HAL_DISABLE_INTERRUPTS(oldints);
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
424
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
425 aligned_p[0] = 43 + aligned_p[1]; // Load causes cache to be used!
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
426 aligned_p[HAL_DCACHE_LINE_SIZE-1] = 43;
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
427
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
428 aligned_p[HAL_DCACHE_LINE_SIZE] = 42 + aligned_p[HAL_DCACHE_LINE_SIZE + 1];
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
429
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
430 HAL_DCACHE_DISABLE();
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
431
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
432 HAL_RESTORE_INTERRUPTS(oldints);
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
433
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
434 CYG_TEST_CHECK(0 == aligned_p[0] &&
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
435 0 == aligned_p[HAL_DCACHE_LINE_SIZE-1],
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
436 "cache/memory contained invalidated data");
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
437 CYG_TEST_CHECK(0 == aligned_p[HAL_DCACHE_LINE_SIZE],
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
438 "next block contained invalidated data");
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
439
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
440 HAL_DCACHE_ENABLE();
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
441 }
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
442 #endif // def HAL_DCACHE_QUERY_WRITE_MODE
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
443
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
444 // -------------------------------------------------------------------------
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
445 // Test of data cache total invalidate.
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
446 // o Requires write-back cache.
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
447 // o Check that invalidated data is not written to memory and is invalidated
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
448 // in the cache.
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
449 // o Simple invocation check of macro.
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
450 #ifdef HAL_DCACHE_QUERY_WRITE_MODE // only if we know this, can we test:
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
451 #ifdef HAL_DCACHE_INVALIDATE_ALL
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
452 static void test_dinvalidate_all(void)
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
453 {
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
454 volatile cyg_uint8* aligned_p;
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
455 cyg_int32 i;
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
456 register CYG_INTERRUPT_STATE oldints;
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
457
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
458 CYG_TEST_INFO("Data cache invalidate all");
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
459
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
460 for (i = 0; i < HAL_DCACHE_LINE_SIZE*16; i++)
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
461 m[i] = 0;
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
462
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
463 HAL_DISABLE_INTERRUPTS(oldints);
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
464 HAL_DCACHE_SYNC();
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
465 HAL_DCACHE_DISABLE();
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
466 HAL_DCACHE_SYNC();
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
467 HAL_DCACHE_INVALIDATE_ALL();
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
468 HAL_DCACHE_ENABLE();
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
469 HAL_RESTORE_INTERRUPTS(oldints);
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
470
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
471 aligned_p = (volatile cyg_uint8*)
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
472 (((unsigned long) &m[HAL_DCACHE_LINE_SIZE*2])
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
473 & ~(HAL_DCACHE_LINE_SIZE-1));
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
474
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
475 HAL_DISABLE_INTERRUPTS(oldints);
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
476
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
477 aligned_p[0] = 43 + aligned_p[1]; // Load causes cache to be used!
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
478 aligned_p[HAL_DCACHE_LINE_SIZE-1] = 43;
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
479
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
480 aligned_p[HAL_DCACHE_LINE_SIZE] = 42 + aligned_p[HAL_DCACHE_LINE_SIZE + 1];
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
481
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
482 HAL_DCACHE_INVALIDATE_ALL();
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
483
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
484 HAL_RESTORE_INTERRUPTS(oldints);
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
485
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
486 CYG_TEST_CHECK(0 == aligned_p[0] &&
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
487 0 == aligned_p[HAL_DCACHE_LINE_SIZE-1],
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
488 "cache/memory contained invalidated data");
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
489 CYG_TEST_CHECK(0 == aligned_p[HAL_DCACHE_LINE_SIZE],
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
490 "next block contained invalidated data");
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
491 }
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
492 #endif
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
493 #endif // def HAL_DCACHE_QUERY_WRITE_MODE
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
494
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
495 // -------------------------------------------------------------------------
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
496 // Test of data cache line invalidate.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
497 // o Requires write-back cache.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
498 // o Check that invalidated data is not written to memory and is invalidated
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
499 // in the cache.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
500 // o Simple range check of macro.
143
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
501 #ifdef HAL_DCACHE_QUERY_WRITE_MODE // only if we know this, can we test:
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
502 #ifdef HAL_DCACHE_INVALIDATE
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
503 static void test_dinvalidate(void)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
504 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
505 volatile cyg_uint8* aligned_p;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
506 cyg_int32 i;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
507 register CYG_INTERRUPT_STATE oldints;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
508
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
509 CYG_TEST_INFO("Data cache invalidate region");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
510
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
511 for (i = 0; i < HAL_DCACHE_LINE_SIZE*16; i++)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
512 m[i] = 0;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
513
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
514 HAL_DISABLE_INTERRUPTS(oldints);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
515 HAL_DCACHE_SYNC();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
516 HAL_DCACHE_DISABLE();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
517 HAL_DCACHE_SYNC();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
518 HAL_DCACHE_INVALIDATE_ALL();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
519 HAL_DCACHE_ENABLE();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
520 HAL_RESTORE_INTERRUPTS(oldints);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
521
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
522 aligned_p = (volatile cyg_uint8*)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
523 (((unsigned long) &m[HAL_DCACHE_LINE_SIZE*2])
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
524 & ~(HAL_DCACHE_LINE_SIZE-1));
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
525
143
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
526 HAL_DISABLE_INTERRUPTS(oldints);
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
527
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
528 aligned_p[0] = 43 + aligned_p[1]; // Load causes cache to be used!
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
529 aligned_p[HAL_DCACHE_LINE_SIZE-1] = 43;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
530
143
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
531 aligned_p[HAL_DCACHE_LINE_SIZE] = 42 + aligned_p[HAL_DCACHE_LINE_SIZE + 1];
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
532
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
533 HAL_DCACHE_INVALIDATE(aligned_p, HAL_DCACHE_LINE_SIZE);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
534
143
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
535 HAL_RESTORE_INTERRUPTS(oldints);
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
536
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
537 CYG_TEST_CHECK(0 == aligned_p[0] &&
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
538 0 == aligned_p[HAL_DCACHE_LINE_SIZE-1],
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
539 "cache/memory contained invalidated data");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
540 CYG_TEST_CHECK(42 == aligned_p[HAL_DCACHE_LINE_SIZE],
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
541 "invalidated beyond range");
143
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
542
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
543 HAL_DCACHE_SYNC();
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
544 HAL_DCACHE_DISABLE();
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
545
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
546 CYG_TEST_CHECK(0 == aligned_p[0] &&
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
547 0 == aligned_p[HAL_DCACHE_LINE_SIZE-1],
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
548 "cache/memory contained invalidated data after SYNC/DIS");
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
549 CYG_TEST_CHECK(42 == aligned_p[HAL_DCACHE_LINE_SIZE],
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
550 "invalidated beyond range after SYNC/DIS");
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
551
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
552 HAL_DCACHE_ENABLE();
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
553 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
554 #endif
143
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
555 #endif // def HAL_DCACHE_QUERY_WRITE_MODE
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
556
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
557 // -------------------------------------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
558 // Test of instruction cache locking.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
559 // o Time difference between repeatedly executing a bunch of instructions
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
560 // with and without locking.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
561 #ifdef HAL_ICACHE_LOCK
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
562 static void iloop(unsigned long* start, unsigned long* end)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
563 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
564 register char c;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
565 register CYG_INTERRUPT_STATE oldints;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
566
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
567 label_start:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
568 // Invalidating shouldn't affect locked lines.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
569 HAL_DISABLE_INTERRUPTS(oldints);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
570 HAL_ICACHE_DISABLE();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
571 HAL_ICACHE_INVALIDATE_ALL();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
572 HAL_ICACHE_ENABLE();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
573 HAL_RESTORE_INTERRUPTS(oldints);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
574
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
575 c = m[HAL_DCACHE_LINE_SIZE*0];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
576 c = m[HAL_DCACHE_LINE_SIZE*1];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
577 c = m[HAL_DCACHE_LINE_SIZE*2];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
578 c = m[HAL_DCACHE_LINE_SIZE*3];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
579 c = m[HAL_DCACHE_LINE_SIZE*4];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
580 c = m[HAL_DCACHE_LINE_SIZE*5];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
581 c = m[HAL_DCACHE_LINE_SIZE*6];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
582 c = m[HAL_DCACHE_LINE_SIZE*7];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
583 c = m[HAL_DCACHE_LINE_SIZE*8];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
584 c = m[HAL_DCACHE_LINE_SIZE*9];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
585 c = m[HAL_DCACHE_LINE_SIZE*10];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
586 c = m[HAL_DCACHE_LINE_SIZE*11];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
587 c = m[HAL_DCACHE_LINE_SIZE*12];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
588 c = m[HAL_DCACHE_LINE_SIZE*13];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
589 c = m[HAL_DCACHE_LINE_SIZE*14];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
590 c = m[HAL_DCACHE_LINE_SIZE*15];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
591 c = m[HAL_DCACHE_LINE_SIZE*16];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
592 c = m[HAL_DCACHE_LINE_SIZE*17];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
593 c = m[HAL_DCACHE_LINE_SIZE*18];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
594 c = m[HAL_DCACHE_LINE_SIZE*19];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
595 c = m[HAL_DCACHE_LINE_SIZE*20];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
596 c = m[HAL_DCACHE_LINE_SIZE*21];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
597 c = m[HAL_DCACHE_LINE_SIZE*22];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
598 c = m[HAL_DCACHE_LINE_SIZE*23];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
599 c = m[HAL_DCACHE_LINE_SIZE*24];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
600 c = m[HAL_DCACHE_LINE_SIZE*25];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
601 c = m[HAL_DCACHE_LINE_SIZE*26];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
602 c = m[HAL_DCACHE_LINE_SIZE*27];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
603 c = m[HAL_DCACHE_LINE_SIZE*28];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
604 c = m[HAL_DCACHE_LINE_SIZE*29];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
605 c = m[HAL_DCACHE_LINE_SIZE*30];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
606 c = m[HAL_DCACHE_LINE_SIZE*31];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
607 c = m[HAL_DCACHE_LINE_SIZE*32];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
608 c = m[HAL_DCACHE_LINE_SIZE*33];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
609 c = m[HAL_DCACHE_LINE_SIZE*34];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
610 c = m[HAL_DCACHE_LINE_SIZE*35];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
611 c = m[HAL_DCACHE_LINE_SIZE*36];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
612 c = m[HAL_DCACHE_LINE_SIZE*37];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
613 c = m[HAL_DCACHE_LINE_SIZE*38];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
614 c = m[HAL_DCACHE_LINE_SIZE*39];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
615 c = m[HAL_DCACHE_LINE_SIZE*40];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
616 c = m[HAL_DCACHE_LINE_SIZE*41];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
617 c = m[HAL_DCACHE_LINE_SIZE*42];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
618 c = m[HAL_DCACHE_LINE_SIZE*43];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
619 c = m[HAL_DCACHE_LINE_SIZE*44];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
620 c = m[HAL_DCACHE_LINE_SIZE*45];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
621 c = m[HAL_DCACHE_LINE_SIZE*46];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
622 c = m[HAL_DCACHE_LINE_SIZE*47];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
623 c = m[HAL_DCACHE_LINE_SIZE*48];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
624 c = m[HAL_DCACHE_LINE_SIZE*49];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
625 c = m[HAL_DCACHE_LINE_SIZE*50];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
626 c = m[HAL_DCACHE_LINE_SIZE*51];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
627 c = m[HAL_DCACHE_LINE_SIZE*52];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
628 c = m[HAL_DCACHE_LINE_SIZE*53];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
629 c = m[HAL_DCACHE_LINE_SIZE*54];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
630 c = m[HAL_DCACHE_LINE_SIZE*55];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
631 c = m[HAL_DCACHE_LINE_SIZE*56];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
632 c = m[HAL_DCACHE_LINE_SIZE*57];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
633 c = m[HAL_DCACHE_LINE_SIZE*58];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
634 c = m[HAL_DCACHE_LINE_SIZE*59];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
635 c = m[HAL_DCACHE_LINE_SIZE*60];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
636 c = m[HAL_DCACHE_LINE_SIZE*61];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
637 c = m[HAL_DCACHE_LINE_SIZE*62];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
638 c = m[HAL_DCACHE_LINE_SIZE*63];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
639
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
640 label_end:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
641
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
642 *start = (unsigned long) &&label_start;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
643 *end = (unsigned long) &&label_end;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
644 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
645
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
646 static void time_ilock(void)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
647 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
648 register cyg_ucount32 k;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
649 cyg_tick_count_t count0, count1;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
650 cyg_ucount32 t;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
651 unsigned long start, end;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
652 register cyg_ucount32 time_ilock_loops = TIME_ILOCK_LOOPS;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
653
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
654 CYG_TEST_INFO("Instruction cache lock");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
655
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
656 if (cyg_test_is_simulator)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
657 time_ilock_loops = 10;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
658
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
659 count0 = cyg_current_time();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
660 for (k = 0; k < time_ilock_loops; k++) {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
661 iloop(&start, &end);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
662 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
663 count1 = cyg_current_time();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
664 t = count1 - count0;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
665 diag_printf("time without lock: %d\n", t);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
666
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
667 HAL_ICACHE_LOCK(start, end-start);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
668
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
669 count0 = cyg_current_time();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
670 for (k = 0; k < time_ilock_loops; k++) {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
671 iloop(&start, &end);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
672 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
673 count1 = cyg_current_time();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
674 t = count1 - count0;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
675 diag_printf("time with lock: %d\n", t);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
676
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
677 HAL_ICACHE_UNLOCK(start, end-start);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
678 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
679 #endif // ifdef HAL_ICACHE_LOCK
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
680
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
681 // -------------------------------------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
682 // Test of data cache locking.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
683 // o Time difference between repeatedly accessing a memory region
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
684 // with and without locking.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
685 #ifdef HAL_DCACHE_LOCK
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
686 static void dloop(void)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
687 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
688 register cyg_uint32 j;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
689 register char c;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
690 register CYG_INTERRUPT_STATE oldints;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
691
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
692 HAL_DISABLE_INTERRUPTS(oldints);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
693 HAL_DCACHE_SYNC();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
694 HAL_DCACHE_DISABLE();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
695 HAL_DCACHE_SYNC();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
696 HAL_DCACHE_INVALIDATE_ALL();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
697 HAL_DCACHE_ENABLE();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
698 HAL_RESTORE_INTERRUPTS(oldints);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
699 for (j = 0; j < HAL_DCACHE_SETS; j++) {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
700 c = m[HAL_DCACHE_LINE_SIZE*j];
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
701 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
702 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
703
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
704 static void time_dlock(void)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
705 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
706 register cyg_ucount32 k;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
707 cyg_tick_count_t count0, count1;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
708 cyg_ucount32 t;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
709 register cyg_ucount32 time_dlock_loops = TIME_DLOCK_LOOPS;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
710
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
711 CYG_TEST_INFO("Data cache lock");
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
712
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
713 if (cyg_test_is_simulator)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
714 time_dlock_loops = 10;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
715
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
716 count0 = cyg_current_time();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
717 for (k = 0; k < time_dlock_loops; k++) {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
718 dloop();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
719 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
720 count1 = cyg_current_time();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
721 t = count1 - count0;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
722 diag_printf("time without lock: %d\n", t);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
723
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
724 HAL_DCACHE_LOCK(&m[0], HAL_DCACHE_SETS*HAL_DCACHE_LINE_SIZE);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
725
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
726 count0 = cyg_current_time();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
727 for (k = 0; k < time_dlock_loops; k++) {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
728 dloop();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
729 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
730 count1 = cyg_current_time();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
731 t = count1 - count0;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
732 diag_printf("time with lock: %d\n", t);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
733
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
734 HAL_DCACHE_UNLOCK(&m[0], HAL_DCACHE_SETS*HAL_DCACHE_LINE_SIZE);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
735 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
736 #endif // ifdef HAL_DCACHE_LOCK
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
737
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
738 // -------------------------------------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
739 static void entry0( cyg_addrword_t data )
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
740 {
143
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
741 int numtests = 0;
24
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 2
diff changeset
742 #ifdef HAL_DCACHE_QUERY_WRITE_MODE
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 2
diff changeset
743 int wmode;
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 2
diff changeset
744 #endif
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
745 #ifdef HAL_DCACHE_LOCK
143
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
746 time_dlock(); numtests++;
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
747 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
748 #ifdef HAL_ICACHE_LOCK
143
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
749 time_ilock(); numtests++;
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
750 #endif
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
751 #ifdef HAL_DCACHE_LINE_SIZE // So we can find our way around memory
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
752 test_dsync(); numtests++;
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
753 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
754 #ifdef HAL_DCACHE_STORE
143
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
755 test_dstore(); numtests++;
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
756 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
757 #ifdef HAL_DCACHE_READ_HINT
143
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
758 test_dread_hint(); numtests++;
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
759 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
760 #ifdef HAL_DCACHE_WRITE_HINT
143
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
761 test_dwrite_hint(); numtests++;
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
762 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
763 #ifdef HAL_DCACHE_ZERO
143
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
764 test_dzero(); numtests++;
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
765 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
766
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
767 // The below tests only work on a copy-back cache.
24
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 2
diff changeset
768 #ifdef HAL_DCACHE_QUERY_WRITE_MODE
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 2
diff changeset
769 HAL_DCACHE_QUERY_WRITE_MODE( wmode );
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 2
diff changeset
770
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 2
diff changeset
771 if ( HAL_DCACHE_WRITEBACK_MODE == wmode ) {
143
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
772 test_ddisable(); numtests++;
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
773 #ifdef HAL_DCACHE_INVALIDATE
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
774 test_dinvalidate_all(); numtests++;
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
775 #endif
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
776 #ifdef HAL_DCACHE_FLUSH
143
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
777 test_dflush(); numtests++;
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
778 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
779 #ifdef HAL_DCACHE_INVALIDATE
143
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
780 test_dinvalidate(); numtests++;
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
781 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
782 }
24
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 2
diff changeset
783 #endif // def HAL_DCACHE_QUERY_WRITE_MODE
143
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
784 if ( numtests ) {
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
785 CYG_TEST_PASS_FINISH("End of test");
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
786 }
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
787 else {
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
788 CYG_TEST_NA( "No applicable cache tests" );
6b5f480c6929 Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents: 66
diff changeset
789 }
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
790 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
791
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
792 // -------------------------------------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
793
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
794 void kcache2_main( void )
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
795 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
796 CYG_TEST_INIT();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
797
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
798 cyg_thread_create(4, entry0 , (cyg_addrword_t)0, "kcache2",
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
799 (void *)stack[0], STACKSIZE, &thread[0], &thread_obj[0]);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
800 cyg_thread_resume(thread[0]);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
801
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
802 cyg_scheduler_start();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
803 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
804
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
805 // -------------------------------------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
806
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
807 externC void
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
808 cyg_start( void )
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
809 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
810 kcache2_main();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
811 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
812
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
813 // -------------------------------------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
814
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
815 #else // def CYGFUN_KERNEL_API_C
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
816 #define N_A_MSG "Kernel C API layer disabled"
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
817 #endif // def CYGFUN_KERNEL_API_C
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
818 #else // def CYGVAR_KERNEL_COUNTERS_CLOCK
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
819 #define N_A_MSG "Kernel real-time clock disabled"
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
820 #endif // def CYGVAR_KERNEL_COUNTERS_CLOCK
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
821
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
822 #ifdef N_A_MSG
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
823 externC void
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
824 cyg_start( void )
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
825 {
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
826 CYG_TEST_INIT();
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
827 CYG_TEST_NA( N_A_MSG );
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
828 }
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
829 #endif // N_A_MSG
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
830
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
831 // -------------------------------------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
832 /* EOF kcache2.c */