annotate packages/kernel/current/tests/kcache1.c @ 210:d2c90368aeef

Merge from eCos master repository on 2002-05-23-21:39:14-BST
author jlarmour
date Thu, 23 May 2002 22:59:51 +0000
parents e0c0827131d1
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 //==========================================================================
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 151
diff changeset
8 //####ECOSGPLCOPYRIGHTBEGIN####
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 151
diff changeset
9 // -------------------------------------------
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 151
diff changeset
10 // This file is part of eCos, the Embedded Configurable Operating System.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 151
diff changeset
11 // Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 151
diff changeset
12 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 151
diff changeset
13 // eCos is free software; you can redistribute it and/or modify it under
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 151
diff changeset
14 // the terms of the GNU General Public License as published by the Free
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 151
diff changeset
15 // Software Foundation; either version 2 or (at your option) any later version.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 151
diff changeset
16 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 151
diff changeset
17 // eCos is distributed in the hope that it will be useful, but WITHOUT ANY
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 151
diff changeset
18 // WARRANTY; without even the implied warranty of MERCHANTABILITY or
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 151
diff changeset
19 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 151
diff changeset
20 // for more details.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 151
diff changeset
21 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 151
diff changeset
22 // You should have received a copy of the GNU General Public License along
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 151
diff changeset
23 // with eCos; if not, write to the Free Software Foundation, Inc.,
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 151
diff changeset
24 // 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 151
diff changeset
25 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 151
diff changeset
26 // As a special exception, if other files instantiate templates or use macros
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 151
diff changeset
27 // or inline functions from this file, or you compile this file and link it
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 151
diff changeset
28 // with other works to produce a work based on this file, this file does not
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 151
diff changeset
29 // by itself cause the resulting work to be covered by the GNU General Public
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 151
diff changeset
30 // License. However the source code for this file must still be made available
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 151
diff changeset
31 // in accordance with section (3) of the GNU General Public License.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 151
diff changeset
32 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 151
diff changeset
33 // This exception does not invalidate any other reasons why a work based on
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 151
diff changeset
34 // this file might be covered by the GNU General Public License.
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 151
diff changeset
35 //
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 151
diff changeset
36 // Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
210
d2c90368aeef Merge from eCos master repository on 2002-05-23-21:39:14-BST
jlarmour
parents: 208
diff changeset
37 // at http://sources.redhat.com/ecos/ecos-license/
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 151
diff changeset
38 // -------------------------------------------
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 151
diff changeset
39 //####ECOSGPLCOPYRIGHTEND####
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
40 //==========================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
41 //#####DESCRIPTIONBEGIN####
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
42 //
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
43 // Author(s): dsm
44
41bd4f3a90de Merge from eCos master repository on 1999-10-08-07:47:04-BST
jlarmour
parents: 34
diff changeset
44 // Contributors: dsm, nickg
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
45 // Date: 1998-06-18
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
46 //####DESCRIPTIONEND####
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
47 */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
48
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
49 #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
50
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
51 #include <cyg/kernel/kapi.h>
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
52
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
53 #include <cyg/infra/testcase.h>
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
54
84
489eb5632bc3 Merge from eCos master repository on 2000-04-28-18:44:39-BST
jlarmour
parents: 78
diff changeset
55 #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
56
489eb5632bc3 Merge from eCos master repository on 2000-04-28-18:44:39-BST
jlarmour
parents: 78
diff changeset
57 #if defined(HAL_DCACHE_SIZE) || defined(HAL_UCACHE_SIZE)
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
58 #ifdef CYGVAR_KERNEL_COUNTERS_CLOCK
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
59 #ifdef CYGFUN_KERNEL_API_C
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
60
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
61 #include <cyg/infra/diag.h>
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
62 #include <cyg/hal/hal_intr.h>
0
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 // -------------------------------------------------------------------------
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
65 // If the HAL does not supply this, we supply our own version
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
66
44
41bd4f3a90de Merge from eCos master repository on 1999-10-08-07:47:04-BST
jlarmour
parents: 34
diff changeset
67 #ifndef HAL_DCACHE_PURGE_ALL
41bd4f3a90de Merge from eCos master repository on 1999-10-08-07:47:04-BST
jlarmour
parents: 34
diff changeset
68 # ifdef HAL_DCACHE_SYNC
10
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 2
diff changeset
69
44
41bd4f3a90de Merge from eCos master repository on 1999-10-08-07:47:04-BST
jlarmour
parents: 34
diff changeset
70 #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
71
44
41bd4f3a90de Merge from eCos master repository on 1999-10-08-07:47:04-BST
jlarmour
parents: 34
diff changeset
72 # else
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
73
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
74 static cyg_uint8 dca[HAL_DCACHE_SIZE + HAL_DCACHE_LINE_SIZE*2];
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
75
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
76 #define HAL_DCACHE_PURGE_ALL() \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
77 CYG_MACRO_START \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
78 volatile cyg_uint8 *addr = &dca[HAL_DCACHE_LINE_SIZE]; \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
79 volatile cyg_uint8 tmp = 0; \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
80 int i; \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
81 for( i = 0; i < HAL_DCACHE_SIZE; i += HAL_DCACHE_LINE_SIZE ) \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
82 { \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
83 tmp = addr[i]; \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
84 } \
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
85 CYG_MACRO_END
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
86
44
41bd4f3a90de Merge from eCos master repository on 1999-10-08-07:47:04-BST
jlarmour
parents: 34
diff changeset
87 # endif
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
88 #endif
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
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
92 #define NTHREADS 1
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
93 #define STACKSIZE CYGNUM_HAL_STACK_SIZE_TYPICAL
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
94
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
95 static cyg_handle_t thread[NTHREADS];
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
96
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
97 static cyg_thread thread_obj[NTHREADS];
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
98 static char stack[NTHREADS][STACKSIZE];
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
99
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
100 #ifndef MAX_STRIDE
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
101 #define MAX_STRIDE 64
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
102 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
103
46
797268ecc331 Merge from eCos master repository on 1999-10-19-18:55:31-BST
jlarmour
parents: 44
diff changeset
104 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
105
0
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
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
108 static void time0(register cyg_uint32 stride)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
109 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
110 register cyg_uint32 j,k;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
111 cyg_tick_count_t count0, count1;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
112 cyg_ucount32 t;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
113 register char c;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
114
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
115 count0 = cyg_current_time();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
116
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
117 k = 0;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
118 if ( cyg_test_is_simulator )
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
119 k = 3960;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
120
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
121 for(; k<4000;k++) {
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
122 for(j=0; j<(HAL_DCACHE_SIZE/HAL_DCACHE_LINE_SIZE); j++) {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
123 c=m[stride*j];
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
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
127 count1 = cyg_current_time();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
128 t = count1 - count0;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
129 diag_printf("stride=%d, time=%d\n", stride, t);
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
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
134 void time1(void)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
135 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
136 cyg_uint32 i;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
137
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
138 for(i=1; i<=MAX_STRIDE; i+=i) {
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
139 time0(i);
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
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
143 // -------------------------------------------------------------------------
24
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
144 // 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
145 #ifdef HAL_ICACHE_INVALIDATE_ALL
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
146 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
147 {
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
148 register cyg_uint32 j,k;
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
149 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
150 cyg_ucount32 t;
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
151 register char c;
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
152
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
153 count0 = cyg_current_time();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
154
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
155 k = 0;
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
156 if ( cyg_test_is_simulator )
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
157 k = 3960;
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
158
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
159 for(; k<4000;k++) {
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
160 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
161 HAL_ICACHE_INVALIDATE_ALL();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
162 c=m[stride*j];
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
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
166 count1 = cyg_current_time();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
167 t = count1 - count0;
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
168 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
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
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
173 void time1II(void)
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
174 {
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
175 cyg_uint32 i;
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
176
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
177 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
178 time0II(i);
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 }
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
181 #endif
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
182 // -------------------------------------------------------------------------
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
183 // 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
184 // 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
185 // 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
186 #ifdef HAL_DCACHE_INVALIDATE_ALL
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
187 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
188 {
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
189 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
190 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
191 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
192 cyg_ucount32 t;
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
193 register char c;
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 151
diff changeset
194 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
195
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
196 count0 = cyg_current_time();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
197
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 151
diff changeset
198 HAL_DISABLE_INTERRUPTS(oldints);
24
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
199 HAL_DCACHE_SYNC();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
200
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
201 k = 0;
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
202 if ( cyg_test_is_simulator )
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
203 k = 3960;
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
204
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
205 for(; k<4000;k++) {
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
206 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
207 HAL_DCACHE_INVALIDATE_ALL();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
208 c=m[stride*j];
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
209 }
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
210 }
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 151
diff changeset
211 HAL_RESTORE_INTERRUPTS(oldints);
24
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
212
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
213 count1 = cyg_current_time();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
214 t = count1 - count0;
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
215 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
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
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
220 void time1DI(void)
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
221 {
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
222 cyg_uint32 i;
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
223
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
224 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
225 time0DI(i);
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 }
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
228 #endif
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
229 // -------------------------------------------------------------------------
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
230 // This test could be improved by counting number of passes possible
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
231 // in a given number of ticks.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
232
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
233 static void entry0( cyg_addrword_t data )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
234 {
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
235 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
236
10
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 2
diff changeset
237 #ifdef HAL_CACHE_UNIFIED
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 2
diff changeset
238
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 2
diff changeset
239 HAL_DISABLE_INTERRUPTS(oldints);
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 2
diff changeset
240 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
241 HAL_UCACHE_INVALIDATE_ALL();
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 2
diff changeset
242 HAL_UCACHE_DISABLE();
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 2
diff changeset
243 HAL_RESTORE_INTERRUPTS(oldints);
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 2
diff changeset
244 CYG_TEST_INFO("Cache off");
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 2
diff changeset
245 time1();
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 2
diff changeset
246
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 2
diff changeset
247 HAL_DISABLE_INTERRUPTS(oldints);
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 2
diff changeset
248 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
249 HAL_UCACHE_INVALIDATE_ALL();
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 2
diff changeset
250 HAL_UCACHE_ENABLE();
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 2
diff changeset
251 HAL_RESTORE_INTERRUPTS(oldints);
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 2
diff changeset
252 CYG_TEST_INFO("Cache on");
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 2
diff changeset
253 time1();
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 2
diff changeset
254
84
489eb5632bc3 Merge from eCos master repository on 2000-04-28-18:44:39-BST
jlarmour
parents: 78
diff changeset
255 #ifdef HAL_DCACHE_INVALIDATE_ALL
489eb5632bc3 Merge from eCos master repository on 2000-04-28-18:44:39-BST
jlarmour
parents: 78
diff changeset
256 HAL_DISABLE_INTERRUPTS(oldints);
489eb5632bc3 Merge from eCos master repository on 2000-04-28-18:44:39-BST
jlarmour
parents: 78
diff changeset
257 HAL_DCACHE_PURGE_ALL();
489eb5632bc3 Merge from eCos master repository on 2000-04-28-18:44:39-BST
jlarmour
parents: 78
diff changeset
258 HAL_UCACHE_INVALIDATE_ALL();
489eb5632bc3 Merge from eCos master repository on 2000-04-28-18:44:39-BST
jlarmour
parents: 78
diff changeset
259 HAL_UCACHE_ENABLE();
489eb5632bc3 Merge from eCos master repository on 2000-04-28-18:44:39-BST
jlarmour
parents: 78
diff changeset
260 HAL_RESTORE_INTERRUPTS(oldints);
208
e0c0827131d1 Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents: 151
diff changeset
261 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
262 time1DI();
489eb5632bc3 Merge from eCos master repository on 2000-04-28-18:44:39-BST
jlarmour
parents: 78
diff changeset
263 #endif
489eb5632bc3 Merge from eCos master repository on 2000-04-28-18:44:39-BST
jlarmour
parents: 78
diff changeset
264
10
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 2
diff changeset
265 #else // HAL_CACHE_UNIFIED
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 2
diff changeset
266
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
267 HAL_DISABLE_INTERRUPTS(oldints);
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
268 HAL_DCACHE_PURGE_ALL();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
269 HAL_ICACHE_INVALIDATE_ALL();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
270 HAL_DCACHE_INVALIDATE_ALL();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
271 HAL_ICACHE_DISABLE();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
272 HAL_DCACHE_DISABLE();
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
273 HAL_RESTORE_INTERRUPTS(oldints);
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
274 CYG_TEST_INFO("Dcache off Icache off");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
275 time1();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
276
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
277 HAL_DISABLE_INTERRUPTS(oldints);
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
278 HAL_DCACHE_PURGE_ALL();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
279 HAL_ICACHE_INVALIDATE_ALL();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
280 HAL_DCACHE_INVALIDATE_ALL();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
281 HAL_ICACHE_DISABLE();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
282 HAL_DCACHE_ENABLE();
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
283 HAL_RESTORE_INTERRUPTS(oldints);
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
284 CYG_TEST_INFO("Dcache on Icache off");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
285 time1();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
286
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
287 HAL_DISABLE_INTERRUPTS(oldints);
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
288 HAL_DCACHE_PURGE_ALL();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
289 HAL_ICACHE_INVALIDATE_ALL();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
290 HAL_DCACHE_INVALIDATE_ALL();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
291 HAL_ICACHE_ENABLE();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
292 HAL_DCACHE_DISABLE();
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
293 HAL_RESTORE_INTERRUPTS(oldints);
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
294 CYG_TEST_INFO("Dcache off Icache on");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
295 time1();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
296
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
297 HAL_DISABLE_INTERRUPTS(oldints);
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
298 HAL_DCACHE_PURGE_ALL();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
299 HAL_ICACHE_INVALIDATE_ALL();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
300 HAL_DCACHE_INVALIDATE_ALL();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
301 HAL_ICACHE_ENABLE();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
302 HAL_DCACHE_ENABLE();
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
303 HAL_RESTORE_INTERRUPTS(oldints);
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
304 CYG_TEST_INFO("Dcache on Icache on");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
305 time1();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
306
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
307
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
308 HAL_DISABLE_INTERRUPTS(oldints);
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
309 HAL_DCACHE_PURGE_ALL();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
310 HAL_ICACHE_INVALIDATE_ALL();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
311 HAL_DCACHE_INVALIDATE_ALL();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
312 HAL_ICACHE_DISABLE();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
313 HAL_DCACHE_DISABLE();
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
314 HAL_RESTORE_INTERRUPTS(oldints);
24
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
315 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
316 time1();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
317
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
318 #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
319 HAL_DISABLE_INTERRUPTS(oldints);
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
320 HAL_DCACHE_PURGE_ALL();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
321 HAL_ICACHE_INVALIDATE_ALL();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
322 HAL_DCACHE_INVALIDATE_ALL();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
323 HAL_ICACHE_ENABLE();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
324 HAL_DCACHE_ENABLE();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
325 HAL_RESTORE_INTERRUPTS(oldints);
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
326 CYG_TEST_INFO("Dcache on Icache on (again)");
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
327 time1();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
328
34
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 24
diff changeset
329 #if defined(CYGPKG_HAL_MIPS)
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 24
diff changeset
330 // 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
331 // 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
332 // 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
333 // 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
334 // 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
335 // 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
336 // 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
337 // 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
338 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
339 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
340
134
d2f49caf9e38 Merge from eCos master repository on 2000-11-03-09:00:49-GMT
jlarmour
parents: 99
diff changeset
341 #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
342 // 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
343 // 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
344 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
345 #endif
d2f49caf9e38 Merge from eCos master repository on 2000-11-03-09:00:49-GMT
jlarmour
parents: 99
diff changeset
346
34
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 24
diff changeset
347 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
348 #endif
151
25e238959bae Merge from eCos master repository on 2001-02-12-23:44:24-GMT
jlarmour
parents: 134
diff changeset
349
24
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
350 #ifdef HAL_ICACHE_INVALIDATE_ALL
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
351 HAL_DISABLE_INTERRUPTS(oldints);
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
352 HAL_DCACHE_PURGE_ALL();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
353 HAL_ICACHE_INVALIDATE_ALL();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
354 HAL_DCACHE_INVALIDATE_ALL();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
355 HAL_ICACHE_ENABLE();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
356 HAL_DCACHE_ENABLE();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
357 HAL_RESTORE_INTERRUPTS(oldints);
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
358 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
359 time1II();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
360 #endif
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
361 #ifdef HAL_DCACHE_INVALIDATE_ALL
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
362 HAL_DISABLE_INTERRUPTS(oldints);
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
363 HAL_DCACHE_PURGE_ALL();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
364 HAL_ICACHE_INVALIDATE_ALL();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
365 HAL_DCACHE_INVALIDATE_ALL();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
366 HAL_ICACHE_ENABLE();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
367 HAL_DCACHE_ENABLE();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
368 HAL_RESTORE_INTERRUPTS(oldints);
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
369 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
370 time1DI();
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
371 #endif
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
372 #endif // either INVALIDATE_ALL macro
306eee292492 Merge from eCos master repository on 1999-07-16-05:47:06-BST
jlarmour
parents: 10
diff changeset
373
10
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 2
diff changeset
374 #endif // HAL_CACHE_UNIFIED
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 2
diff changeset
375
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
376 CYG_TEST_PASS_FINISH("End of test");
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
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
381 void kcache2_main( void )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
382 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
383 CYG_TEST_INIT();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
384
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
385 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
386 (void *)stack[0], STACKSIZE, &thread[0], &thread_obj[0]);
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
387 cyg_thread_resume(thread[0]);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
388
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
389 cyg_scheduler_start();
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
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
394 externC void
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
395 cyg_start( void )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
396 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
397 kcache2_main();
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
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
402 #else // def CYGFUN_KERNEL_API_C
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
403 #define N_A_MSG "Kernel C API layer disabled"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
404 #endif // def CYGFUN_KERNEL_API_C
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
405 #else // def CYGVAR_KERNEL_COUNTERS_CLOCK
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
406 #define N_A_MSG "Kernel real-time clock disabled"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
407 #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
408 #else // def HAL_DCACHE_SIZE
59d97b6ba612 Merge from eCos master repository on 2000-03-28-19:50:47-BST
jlarmour
parents: 76
diff changeset
409 #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
410 #endif // def HAL_DCACHE_SIZE
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
411
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
412 #ifdef N_A_MSG
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
413 externC void
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
414 cyg_start( void )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
415 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
416 CYG_TEST_INIT();
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
417 CYG_TEST_NA( N_A_MSG );
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
418 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
419 #endif // N_A_MSG
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 // -------------------------------------------------------------------------
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
422 /* EOF kcache1.c */