annotate packages/kernel/current/tests/kcache1.c @ 3292:7f8e529b4d82 default tip

Fix FREESCALE_EDMA_NBYTES_MLOFFYES_MLOFF() so it works with negative offsets.
author vae
date Wed, 29 Apr 2015 23:31:48 +0000
parents 283b2c38b413
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1 /*=================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
2 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
3 // kcache1.c
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
4 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
5 // Cache timing test
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
6 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
7 //==========================================================================
2729
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
8 // ####ECOSGPLCOPYRIGHTBEGIN####
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
9 // -------------------------------------------
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
10 // This file is part of eCos, the Embedded Configurable Operating System.
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
11 // Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 151
diff changeset
12 //
2729
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
13 // eCos is free software; you can redistribute it and/or modify it under
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
14 // the terms of the GNU General Public License as published by the Free
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
15 // Software Foundation; either version 2 or (at your option) any later
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
16 // version.
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 151
diff changeset
17 //
2729
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
18 // eCos is distributed in the hope that it will be useful, but WITHOUT
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
19 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
20 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
21 // for more details.
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 151
diff changeset
22 //
2729
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
23 // You should have received a copy of the GNU General Public License
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
24 // along with eCos; if not, write to the Free Software Foundation, Inc.,
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
25 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 151
diff changeset
26 //
2729
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
27 // As a special exception, if other files instantiate templates or use
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
28 // macros or inline functions from this file, or you compile this file
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
29 // and link it with other works to produce a work based on this file,
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
30 // this file does not by itself cause the resulting work to be covered by
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
31 // the GNU General Public License. However the source code for this file
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
32 // must still be made available in accordance with section (3) of the GNU
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
33 // General Public License v2.
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 151
diff changeset
34 //
2729
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
35 // This exception does not invalidate any other reasons why a work based
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
36 // on this file might be covered by the GNU General Public License.
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
37 // -------------------------------------------
74dbf4c3f2e1 Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents: 210
diff changeset
38 // ####ECOSGPLCOPYRIGHTEND####
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
39 //==========================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
40 //#####DESCRIPTIONBEGIN####
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
41 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
42 // Author(s): dsm
44
41bd4f3a90de Merge from eCos master repository on 1999-10-08-07:47:04-BST
jlarmour
parents: 34
diff changeset
43 // Contributors: dsm, nickg
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
44 // Date: 1998-06-18
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
45 //####DESCRIPTIONEND####
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
46 */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
47
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
48 #include <cyg/hal/hal_arch.h> // CYGNUM_HAL_STACK_SIZE_TYPICAL
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
49
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
50 #include <cyg/kernel/kapi.h>
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
51
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
52 #include <cyg/infra/testcase.h>
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
53
84
489eb5632bc3 Merge from eCos master repository on 2000-04-28-18:44:39-BST
jlarmour
parents: 78
diff changeset
54 #include <cyg/hal/hal_cache.h>
489eb5632bc3 Merge from eCos master repository on 2000-04-28-18:44:39-BST
jlarmour
parents: 78
diff changeset
55
489eb5632bc3 Merge from eCos master repository on 2000-04-28-18:44:39-BST
jlarmour
parents: 78
diff changeset
56 #if defined(HAL_DCACHE_SIZE) || defined(HAL_UCACHE_SIZE)
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
57 #ifdef CYGVAR_KERNEL_COUNTERS_CLOCK
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
58 #ifdef CYGFUN_KERNEL_API_C
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
59
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
60 #include <cyg/infra/diag.h>
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
61 #include <cyg/hal/hal_intr.h>
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
62
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
63 // -------------------------------------------------------------------------
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
64 // If the HAL does not supply this, we supply our own version
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
65
44
41bd4f3a90de Merge from eCos master repository on 1999-10-08-07:47:04-BST
jlarmour
parents: 34
diff changeset
66 #ifndef HAL_DCACHE_PURGE_ALL
41bd4f3a90de Merge from eCos master repository on 1999-10-08-07:47:04-BST
jlarmour
parents: 34
diff changeset
67 # ifdef HAL_DCACHE_SYNC
10
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 2
diff changeset
68
44
41bd4f3a90de Merge from eCos master repository on 1999-10-08-07:47:04-BST
jlarmour
parents: 34
diff changeset
69 #define HAL_DCACHE_PURGE_ALL() HAL_DCACHE_SYNC()
10
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 2
diff changeset
70
44
41bd4f3a90de Merge from eCos master repository on 1999-10-08-07:47:04-BST
jlarmour
parents: 34
diff changeset
71 # else
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
72
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
73 static cyg_uint8 dca[HAL_DCACHE_SIZE + HAL_DCACHE_LINE_SIZE*2];
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
74
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
75 #define HAL_DCACHE_PURGE_ALL() \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
76 CYG_MACRO_START \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
77 volatile cyg_uint8 *addr = &dca[HAL_DCACHE_LINE_SIZE]; \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
78 volatile cyg_uint8 tmp = 0; \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
79 int i; \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
80 for( i = 0; i < HAL_DCACHE_SIZE; i += HAL_DCACHE_LINE_SIZE ) \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
81 { \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
82 tmp = addr[i]; \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
83 } \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
84 CYG_MACRO_END
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
85
44
41bd4f3a90de Merge from eCos master repository on 1999-10-08-07:47:04-BST
jlarmour
parents: 34
diff changeset
86 # endif
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
87 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
88
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
89 // -------------------------------------------------------------------------
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
90
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
91 #define NTHREADS 1
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
92 #define STACKSIZE CYGNUM_HAL_STACK_SIZE_TYPICAL
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
93
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
94 static cyg_handle_t thread[NTHREADS];
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
95
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
96 static cyg_thread thread_obj[NTHREADS];
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
97 static char stack[NTHREADS][STACKSIZE];
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
98
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
99 #ifndef MAX_STRIDE
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
100 #define MAX_STRIDE 64
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
101 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
102
46
797268ecc331 Merge from eCos master repository on 1999-10-19-18:55:31-BST
jlarmour
parents: 44
diff changeset
103 volatile char m[(HAL_DCACHE_SIZE/HAL_DCACHE_LINE_SIZE)*MAX_STRIDE];
44
41bd4f3a90de Merge from eCos master repository on 1999-10-08-07:47:04-BST
jlarmour
parents: 34
diff changeset
104
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
105 // -------------------------------------------------------------------------
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
106
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
107 static void time0(register cyg_uint32 stride)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
108 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
109 register cyg_uint32 j,k;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
110 cyg_tick_count_t count0, count1;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
111 cyg_ucount32 t;
3250
283b2c38b413 Fix compiler warnings. [ Bugzilla 1001865 ]
vae
parents: 2729
diff changeset
112 register char c CYGBLD_ATTRIB_UNUSED;
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
113
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
114 count0 = cyg_current_time();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
115
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
116 k = 0;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
117 if ( cyg_test_is_simulator )
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
118 k = 3960;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
119
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
120 for(; k<4000;k++) {
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
121 for(j=0; j<(HAL_DCACHE_SIZE/HAL_DCACHE_LINE_SIZE); j++) {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
122 c=m[stride*j];
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
123 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
124 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
125
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
126 count1 = cyg_current_time();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
127 t = count1 - count0;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
128 diag_printf("stride=%d, time=%d\n", stride, t);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
129 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
130
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
131 // -------------------------------------------------------------------------
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
132
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
133 void time1(void)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
134 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
135 cyg_uint32 i;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
136
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
137 for(i=1; i<=MAX_STRIDE; i+=i) {
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
138 time0(i);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
139 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
140 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
141
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
142 // -------------------------------------------------------------------------
24
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
143 // With an ICache invalidate in the middle:
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
144 #ifdef HAL_ICACHE_INVALIDATE_ALL
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
145 static void time0II(register cyg_uint32 stride)
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
146 {
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
147 register cyg_uint32 j,k;
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
148 cyg_tick_count_t count0, count1;
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
149 cyg_ucount32 t;
3250
283b2c38b413 Fix compiler warnings. [ Bugzilla 1001865 ]
vae
parents: 2729
diff changeset
150 register char c CYGBLD_ATTRIB_UNUSED;
24
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
151
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
152 count0 = cyg_current_time();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
153
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
154 k = 0;
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
155 if ( cyg_test_is_simulator )
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
156 k = 3960;
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
157
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
158 for(; k<4000;k++) {
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
159 for(j=0; j<(HAL_DCACHE_SIZE/HAL_DCACHE_LINE_SIZE); j++) {
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
160 HAL_ICACHE_INVALIDATE_ALL();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
161 c=m[stride*j];
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
162 }
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
163 }
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
164
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
165 count1 = cyg_current_time();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
166 t = count1 - count0;
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
167 diag_printf("stride=%d, time=%d\n", stride, t);
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
168 }
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
169
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
170 // -------------------------------------------------------------------------
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
171
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
172 void time1II(void)
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
173 {
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
174 cyg_uint32 i;
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
175
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
176 for(i=1; i<=MAX_STRIDE; i+=i) {
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
177 time0II(i);
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
178 }
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
179 }
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
180 #endif
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
181 // -------------------------------------------------------------------------
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
182 // With a DCache invalidate in the middle:
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 151
diff changeset
183 // This is guaranteed to produce bogus timing results since interrupts
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 151
diff changeset
184 // have to be disabled to prevent accidental loss of state.
24
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
185 #ifdef HAL_DCACHE_INVALIDATE_ALL
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
186 static void time0DI(register cyg_uint32 stride)
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
187 {
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
188 register cyg_uint32 j,k;
84
489eb5632bc3 Merge from eCos master repository on 2000-04-28-18:44:39-BST
jlarmour
parents: 78
diff changeset
189 volatile cyg_tick_count_t count0;
489eb5632bc3 Merge from eCos master repository on 2000-04-28-18:44:39-BST
jlarmour
parents: 78
diff changeset
190 cyg_tick_count_t count1;
24
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
191 cyg_ucount32 t;
3250
283b2c38b413 Fix compiler warnings. [ Bugzilla 1001865 ]
vae
parents: 2729
diff changeset
192 register char c CYGBLD_ATTRIB_UNUSED;
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 151
diff changeset
193 register CYG_INTERRUPT_STATE oldints;
24
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
194
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
195 count0 = cyg_current_time();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
196
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 151
diff changeset
197 HAL_DISABLE_INTERRUPTS(oldints);
24
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
198 HAL_DCACHE_SYNC();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
199
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
200 k = 0;
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
201 if ( cyg_test_is_simulator )
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
202 k = 3960;
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
203
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
204 for(; k<4000;k++) {
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
205 for(j=0; j<(HAL_DCACHE_SIZE/HAL_DCACHE_LINE_SIZE); j++) {
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
206 HAL_DCACHE_INVALIDATE_ALL();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
207 c=m[stride*j];
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
208 }
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
209 }
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 151
diff changeset
210 HAL_RESTORE_INTERRUPTS(oldints);
24
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
211
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
212 count1 = cyg_current_time();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
213 t = count1 - count0;
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
214 diag_printf("stride=%d, time=%d\n", stride, t);
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
215 }
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
216
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
217 // -------------------------------------------------------------------------
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
218
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
219 void time1DI(void)
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
220 {
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
221 cyg_uint32 i;
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
222
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
223 for(i=1; i<=MAX_STRIDE; i+=i) {
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
224 time0DI(i);
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
225 }
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
226 }
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
227 #endif
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
228 // -------------------------------------------------------------------------
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
229 // This test could be improved by counting number of passes possible
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
230 // in a given number of ticks.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
231
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
232 static void entry0( cyg_addrword_t data )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
233 {
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
234 register CYG_INTERRUPT_STATE oldints;
84
489eb5632bc3 Merge from eCos master repository on 2000-04-28-18:44:39-BST
jlarmour
parents: 78
diff changeset
235
10
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 2
diff changeset
236 #ifdef HAL_CACHE_UNIFIED
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 2
diff changeset
237
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 2
diff changeset
238 HAL_DISABLE_INTERRUPTS(oldints);
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 2
diff changeset
239 HAL_DCACHE_PURGE_ALL(); // rely on above definition
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 2
diff changeset
240 HAL_UCACHE_INVALIDATE_ALL();
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 2
diff changeset
241 HAL_UCACHE_DISABLE();
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 2
diff changeset
242 HAL_RESTORE_INTERRUPTS(oldints);
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 2
diff changeset
243 CYG_TEST_INFO("Cache off");
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 2
diff changeset
244 time1();
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 2
diff changeset
245
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 2
diff changeset
246 HAL_DISABLE_INTERRUPTS(oldints);
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 2
diff changeset
247 HAL_DCACHE_PURGE_ALL(); // rely on above definition
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 2
diff changeset
248 HAL_UCACHE_INVALIDATE_ALL();
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 2
diff changeset
249 HAL_UCACHE_ENABLE();
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 2
diff changeset
250 HAL_RESTORE_INTERRUPTS(oldints);
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 2
diff changeset
251 CYG_TEST_INFO("Cache on");
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 2
diff changeset
252 time1();
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 2
diff changeset
253
84
489eb5632bc3 Merge from eCos master repository on 2000-04-28-18:44:39-BST
jlarmour
parents: 78
diff changeset
254 #ifdef HAL_DCACHE_INVALIDATE_ALL
489eb5632bc3 Merge from eCos master repository on 2000-04-28-18:44:39-BST
jlarmour
parents: 78
diff changeset
255 HAL_DISABLE_INTERRUPTS(oldints);
489eb5632bc3 Merge from eCos master repository on 2000-04-28-18:44:39-BST
jlarmour
parents: 78
diff changeset
256 HAL_DCACHE_PURGE_ALL();
489eb5632bc3 Merge from eCos master repository on 2000-04-28-18:44:39-BST
jlarmour
parents: 78
diff changeset
257 HAL_UCACHE_INVALIDATE_ALL();
489eb5632bc3 Merge from eCos master repository on 2000-04-28-18:44:39-BST
jlarmour
parents: 78
diff changeset
258 HAL_UCACHE_ENABLE();
489eb5632bc3 Merge from eCos master repository on 2000-04-28-18:44:39-BST
jlarmour
parents: 78
diff changeset
259 HAL_RESTORE_INTERRUPTS(oldints);
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 151
diff changeset
260 CYG_TEST_INFO("Cache on: invalidate Cache (expect bogus timing)");
84
489eb5632bc3 Merge from eCos master repository on 2000-04-28-18:44:39-BST
jlarmour
parents: 78
diff changeset
261 time1DI();
489eb5632bc3 Merge from eCos master repository on 2000-04-28-18:44:39-BST
jlarmour
parents: 78
diff changeset
262 #endif
489eb5632bc3 Merge from eCos master repository on 2000-04-28-18:44:39-BST
jlarmour
parents: 78
diff changeset
263
10
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 2
diff changeset
264 #else // HAL_CACHE_UNIFIED
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 2
diff changeset
265
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
266 HAL_DISABLE_INTERRUPTS(oldints);
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
267 HAL_DCACHE_PURGE_ALL();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
268 HAL_ICACHE_INVALIDATE_ALL();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
269 HAL_DCACHE_INVALIDATE_ALL();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
270 HAL_ICACHE_DISABLE();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
271 HAL_DCACHE_DISABLE();
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
272 HAL_RESTORE_INTERRUPTS(oldints);
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
273 CYG_TEST_INFO("Dcache off Icache off");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
274 time1();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
275
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
276 HAL_DISABLE_INTERRUPTS(oldints);
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
277 HAL_DCACHE_PURGE_ALL();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
278 HAL_ICACHE_INVALIDATE_ALL();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
279 HAL_DCACHE_INVALIDATE_ALL();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
280 HAL_ICACHE_DISABLE();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
281 HAL_DCACHE_ENABLE();
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
282 HAL_RESTORE_INTERRUPTS(oldints);
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
283 CYG_TEST_INFO("Dcache on Icache off");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
284 time1();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
285
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
286 HAL_DISABLE_INTERRUPTS(oldints);
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
287 HAL_DCACHE_PURGE_ALL();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
288 HAL_ICACHE_INVALIDATE_ALL();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
289 HAL_DCACHE_INVALIDATE_ALL();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
290 HAL_ICACHE_ENABLE();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
291 HAL_DCACHE_DISABLE();
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
292 HAL_RESTORE_INTERRUPTS(oldints);
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
293 CYG_TEST_INFO("Dcache off Icache on");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
294 time1();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
295
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
296 HAL_DISABLE_INTERRUPTS(oldints);
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
297 HAL_DCACHE_PURGE_ALL();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
298 HAL_ICACHE_INVALIDATE_ALL();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
299 HAL_DCACHE_INVALIDATE_ALL();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
300 HAL_ICACHE_ENABLE();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
301 HAL_DCACHE_ENABLE();
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
302 HAL_RESTORE_INTERRUPTS(oldints);
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
303 CYG_TEST_INFO("Dcache on Icache on");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
304 time1();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
305
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
306
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
307 HAL_DISABLE_INTERRUPTS(oldints);
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
308 HAL_DCACHE_PURGE_ALL();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
309 HAL_ICACHE_INVALIDATE_ALL();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
310 HAL_DCACHE_INVALIDATE_ALL();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
311 HAL_ICACHE_DISABLE();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
312 HAL_DCACHE_DISABLE();
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
313 HAL_RESTORE_INTERRUPTS(oldints);
24
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
314 CYG_TEST_INFO("Dcache off Icache off (again)");
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
315 time1();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
316
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
317 #if defined(HAL_DCACHE_INVALIDATE_ALL) || defined(HAL_ICACHE_INVALIDATE_ALL)
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
318 HAL_DISABLE_INTERRUPTS(oldints);
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
319 HAL_DCACHE_PURGE_ALL();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
320 HAL_ICACHE_INVALIDATE_ALL();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
321 HAL_DCACHE_INVALIDATE_ALL();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
322 HAL_ICACHE_ENABLE();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
323 HAL_DCACHE_ENABLE();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
324 HAL_RESTORE_INTERRUPTS(oldints);
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
325 CYG_TEST_INFO("Dcache on Icache on (again)");
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
326 time1();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
327
34
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 24
diff changeset
328 #if defined(CYGPKG_HAL_MIPS)
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 24
diff changeset
329 // In some architectures, the time taken for the next two tests is
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 24
diff changeset
330 // very long, partly because HAL_XCACHE_INVALIDATE_ALL() is implemented
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 24
diff changeset
331 // with a loop over the cache. Hence these tests take longer than the
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 24
diff changeset
332 // testing infrastructure is prepared to wait. The simplest way to get
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 24
diff changeset
333 // these tests to run quickly is to make them think they are running
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 24
diff changeset
334 // under a simulator.
76
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
335 // If the target actually is a simulator, skip the below - it's very
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
336 // slow on the simulator, even with reduced loop counts.
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
337 if (cyg_test_is_simulator)
435cced73e2f eCos v1.3.1 merged from eCos master repository on 2000-03-27-23:22:51-BST
jlarmour
parents: 66
diff changeset
338 CYG_TEST_PASS_FINISH("End of test");
99
97d9d85b42c0 Merge from eCos master repository on 2000-06-07-14:25:36-BST
jlarmour
parents: 84
diff changeset
339
134
d2f49caf9e38 Merge from eCos master repository on 2000-11-03-09:00:49-GMT
jlarmour
parents: 99
diff changeset
340 #if defined(CYGPKG_HAL_MIPS_TX49)
d2f49caf9e38 Merge from eCos master repository on 2000-11-03-09:00:49-GMT
jlarmour
parents: 99
diff changeset
341 // The TX49 has a large cache, and even with reduced loop count,
d2f49caf9e38 Merge from eCos master repository on 2000-11-03-09:00:49-GMT
jlarmour
parents: 99
diff changeset
342 // 90+ seconds elapses between each INFO output.
d2f49caf9e38 Merge from eCos master repository on 2000-11-03-09:00:49-GMT
jlarmour
parents: 99
diff changeset
343 CYG_TEST_PASS_FINISH("End of test");
d2f49caf9e38 Merge from eCos master repository on 2000-11-03-09:00:49-GMT
jlarmour
parents: 99
diff changeset
344 #endif
d2f49caf9e38 Merge from eCos master repository on 2000-11-03-09:00:49-GMT
jlarmour
parents: 99
diff changeset
345
34
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 24
diff changeset
346 cyg_test_is_simulator = 1;
84
489eb5632bc3 Merge from eCos master repository on 2000-04-28-18:44:39-BST
jlarmour
parents: 78
diff changeset
347 #endif
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 134
diff changeset
348
24
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
349 #ifdef HAL_ICACHE_INVALIDATE_ALL
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
350 HAL_DISABLE_INTERRUPTS(oldints);
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
351 HAL_DCACHE_PURGE_ALL();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
352 HAL_ICACHE_INVALIDATE_ALL();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
353 HAL_DCACHE_INVALIDATE_ALL();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
354 HAL_ICACHE_ENABLE();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
355 HAL_DCACHE_ENABLE();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
356 HAL_RESTORE_INTERRUPTS(oldints);
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
357 CYG_TEST_INFO("Dcache on Icache on: invalidate ICache each time");
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
358 time1II();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
359 #endif
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
360 #ifdef HAL_DCACHE_INVALIDATE_ALL
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
361 HAL_DISABLE_INTERRUPTS(oldints);
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
362 HAL_DCACHE_PURGE_ALL();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
363 HAL_ICACHE_INVALIDATE_ALL();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
364 HAL_DCACHE_INVALIDATE_ALL();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
365 HAL_ICACHE_ENABLE();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
366 HAL_DCACHE_ENABLE();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
367 HAL_RESTORE_INTERRUPTS(oldints);
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
368 CYG_TEST_INFO("Dcache on Icache on: invalidate DCache (expect bogus times)");
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
369 time1DI();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
370 #endif
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
371 #endif // either INVALIDATE_ALL macro
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
372
10
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 2
diff changeset
373 #endif // HAL_CACHE_UNIFIED
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 2
diff changeset
374
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
375 CYG_TEST_PASS_FINISH("End of test");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
376 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
377
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
378 // -------------------------------------------------------------------------
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
379
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
380 void kcache2_main( void )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
381 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
382 CYG_TEST_INIT();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
383
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
384 cyg_thread_create(4, entry0 , (cyg_addrword_t)0, "kcache1",
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
385 (void *)stack[0], STACKSIZE, &thread[0], &thread_obj[0]);
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
386 cyg_thread_resume(thread[0]);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
387
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
388 cyg_scheduler_start();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
389 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
390
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
391 // -------------------------------------------------------------------------
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
392
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
393 externC void
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
394 cyg_start( void )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
395 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
396 kcache2_main();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
397 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
398
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
399 // -------------------------------------------------------------------------
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
400
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
401 #else // def CYGFUN_KERNEL_API_C
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
402 #define N_A_MSG "Kernel C API layer disabled"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
403 #endif // def CYGFUN_KERNEL_API_C
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
404 #else // def CYGVAR_KERNEL_COUNTERS_CLOCK
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
405 #define N_A_MSG "Kernel real-time clock disabled"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
406 #endif // def CYGVAR_KERNEL_COUNTERS_CLOCK
78
59d97b6ba612 Merge from eCos master repository on 2000-03-28-19:50:47-BST
jlarmour
parents: 76
diff changeset
407 #else // def HAL_DCACHE_SIZE
59d97b6ba612 Merge from eCos master repository on 2000-03-28-19:50:47-BST
jlarmour
parents: 76
diff changeset
408 #define N_A_MSG "No caches defined"
59d97b6ba612 Merge from eCos master repository on 2000-03-28-19:50:47-BST
jlarmour
parents: 76
diff changeset
409 #endif // def HAL_DCACHE_SIZE
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
410
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
411 #ifdef N_A_MSG
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
412 externC void
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
413 cyg_start( void )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
414 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
415 CYG_TEST_INIT();
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
416 CYG_TEST_NA( N_A_MSG );
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
417 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
418 #endif // N_A_MSG
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
419
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
420 // -------------------------------------------------------------------------
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
421 /* EOF kcache1.c */