Mercurial > flash_v2
annotate packages/hal/powerpc/mpc8xx/current/include/var_cache.h @ 419:047f0d36832a
Add cache control for writethru/copyback modes
| author | gthomas |
|---|---|
| date | Wed, 13 Nov 2002 21:05:25 +0000 |
| parents | d2c90368aeef |
| children | 8e23fe1ac05e |
| rev | line source |
|---|---|
|
70
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
1 #ifndef CYGONCE_VAR_CACHE_H |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
2 #define CYGONCE_VAR_CACHE_H |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
3 //============================================================================= |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
4 // |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
5 // var_cache.h |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
6 // |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
7 // Variant HAL cache control API |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
8 // |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
9 //============================================================================= |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
70
diff
changeset
|
10 //####ECOSGPLCOPYRIGHTBEGIN#### |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
70
diff
changeset
|
11 // ------------------------------------------- |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
70
diff
changeset
|
12 // 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:
70
diff
changeset
|
13 // 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:
70
diff
changeset
|
14 // |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
70
diff
changeset
|
15 // 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:
70
diff
changeset
|
16 // 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:
70
diff
changeset
|
17 // 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:
70
diff
changeset
|
18 // |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
70
diff
changeset
|
19 // 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:
70
diff
changeset
|
20 // 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:
70
diff
changeset
|
21 // 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:
70
diff
changeset
|
22 // for more details. |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
70
diff
changeset
|
23 // |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
70
diff
changeset
|
24 // 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:
70
diff
changeset
|
25 // 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:
70
diff
changeset
|
26 // 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:
70
diff
changeset
|
27 // |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
70
diff
changeset
|
28 // 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:
70
diff
changeset
|
29 // 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:
70
diff
changeset
|
30 // 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:
70
diff
changeset
|
31 // 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:
70
diff
changeset
|
32 // 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:
70
diff
changeset
|
33 // 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:
70
diff
changeset
|
34 // |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
70
diff
changeset
|
35 // 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:
70
diff
changeset
|
36 // 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:
70
diff
changeset
|
37 // |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
70
diff
changeset
|
38 // 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
|
39 // 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:
70
diff
changeset
|
40 // ------------------------------------------- |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
70
diff
changeset
|
41 //####ECOSGPLCOPYRIGHTEND#### |
|
70
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
42 //============================================================================= |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
43 //#####DESCRIPTIONBEGIN#### |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
44 // |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
45 // Author(s): nickg |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
46 // Contributors:nickg, jskov |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
47 // Date: 2000-04-02 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
48 // Purpose: Variant cache control API |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
49 // Description: The macros defined here provide the HAL APIs for handling |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
50 // cache control operations on the MPC8xx variant CPUs. |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
51 // Usage: Is included via the architecture cache header: |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
52 // #include <cyg/hal/hal_cache.h> |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
53 // ... |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
54 // |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
55 //####DESCRIPTIONEND#### |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
56 // |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
57 //============================================================================= |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
58 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
59 #include <pkgconf/hal.h> |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
60 #include <cyg/infra/cyg_type.h> |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
61 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
62 #include <cyg/hal/ppc_regs.h> |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
63 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
64 #include <cyg/hal/plf_cache.h> |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
65 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
66 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
67 //----------------------------------------------------------------------------- |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
68 // Cache dimensions - these vary between the 8xx sub-models |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
69 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
70 #if defined(CYGPKG_HAL_POWERPC_MPC860) |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
71 // Data cache |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
72 #define HAL_DCACHE_SIZE 4096 // Size of data cache in bytes |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
73 #define HAL_DCACHE_LINE_SIZE 16 // Size of a data cache line |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
74 #define HAL_DCACHE_WAYS 2 // Associativity of the cache |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
75 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
76 // Instruction cache |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
77 #define HAL_ICACHE_SIZE 4096 // Size of cache in bytes |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
78 #define HAL_ICACHE_LINE_SIZE 16 // Size of a cache line |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
79 #define HAL_ICACHE_WAYS 2 // Associativity of the cache |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
80 #endif // defined(CYGPKG_HAL_POWERPC_MPC860) |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
81 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
82 #if defined(CYGPKG_HAL_POWERPC_MPC823) || defined(CYGPKG_HAL_POWERPC_MPC850) |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
83 // Data cache |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
84 #define HAL_DCACHE_SIZE 1024 // Size of data cache in bytes |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
85 #define HAL_DCACHE_LINE_SIZE 16 // Size of a data cache line |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
86 #define HAL_DCACHE_WAYS 2 // Associativity of the cache |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
87 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
88 // Instruction cache |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
89 #define HAL_ICACHE_SIZE 2048 // Size of cache in bytes |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
90 #define HAL_ICACHE_LINE_SIZE 16 // Size of a cache line |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
91 #define HAL_ICACHE_WAYS 2 // Associativity of the cache |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
92 #endif // defined(CYGPKG_HAL_POWERPC_MPC823) || defined(CYGPKG_HAL_POWERPC_MPC850) |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
93 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
94 #define HAL_DCACHE_SETS (HAL_DCACHE_SIZE/(HAL_DCACHE_LINE_SIZE*HAL_DCACHE_WAYS)) |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
95 #define HAL_ICACHE_SETS (HAL_ICACHE_SIZE/(HAL_ICACHE_LINE_SIZE*HAL_ICACHE_WAYS)) |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
96 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
97 //----------------------------------------------------------------------------- |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
98 // Global control of data cache |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
99 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
100 // Enable the data cache |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
101 #define HAL_DCACHE_ENABLE() \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
102 asm volatile ("sync;" \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
103 "mtspr %0, %1;" \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
104 : : "I" (CYGARC_REG_DC_CST), "r" (CYGARC_REG_DC_CMD_CE)) |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
105 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
106 // Disable the data cache |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
107 #define HAL_DCACHE_DISABLE() \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
108 asm volatile ("sync;" \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
109 "mtspr %0, %1;" \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
110 : : "I" (CYGARC_REG_DC_CST), "r" (CYGARC_REG_DC_CMD_CD)) |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
111 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
112 // Invalidate the entire cache |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
113 // Note: Any locked lines will not be invalidated. |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
114 #define HAL_DCACHE_INVALIDATE_ALL() \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
115 asm volatile ("sync;" \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
116 "mtspr %0, %1;" \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
117 : : "I" (CYGARC_REG_DC_CST), \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
118 "r" (CYGARC_REG_DC_CMD_IA)) |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
119 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
120 // Synchronize the contents of the cache with memory. |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
121 #define HAL_DCACHE_SYNC() \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
122 CYG_MACRO_START \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
123 cyg_int32 i; \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
124 for (i = 0; i < HAL_DCACHE_SETS; i++){ \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
125 asm volatile ("sync;" \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
126 "mtspr %0, %2;" \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
127 "mtspr %1, %4;" \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
128 "mtspr %0, %3;" \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
129 "mtspr %1, %4;" \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
130 : /* no output */ \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
131 : /* %0 */ "I" (CYGARC_REG_DC_ADR), \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
132 /* %1 */ "I" (CYGARC_REG_DC_CST), \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
133 /* %2 */ "r" (CYGARC_REG_DC_ADR_WAY0 \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
134 |(i << CYGARC_REG_DC_ADR_SETID_SHIFT)), \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
135 /* %3 */ "r" (CYGARC_REG_DC_ADR_WAY1 \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
136 |(i << CYGARC_REG_DC_ADR_SETID_SHIFT)), \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
137 /* %4 */ "r" (CYGARC_REG_DC_CMD_FL)); \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
138 } \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
139 CYG_MACRO_END |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
140 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
141 // Query the state of the data cache |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
142 #define HAL_DCACHE_IS_ENABLED(_state_) \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
143 asm volatile ("mfspr %0, %1;" \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
144 "rlwinm %0,%0,1,31,31;" \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
145 : "=r" (_state_) : "I" (CYGARC_REG_DC_CST)) |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
146 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
147 // Set the data cache refill burst size |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
148 //#define HAL_DCACHE_BURST_SIZE(_size_) |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
149 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
150 // Set the data cache write mode |
| 419 | 151 #define HAL_DCACHE_WRITE_MODE( _mode_ ) \ |
| 152 CYG_MACRO_START \ | |
| 153 if (_mode_ == HAL_DCACHE_WRITETHRU_MODE) { \ | |
| 154 asm volatile ("sync;" \ | |
| 155 "mtspr %0, %1;" \ | |
| 156 : : "I" (CYGARC_REG_DC_CST), \ | |
| 157 "r" (CYGARC_REG_DC_CMD_SW)); \ | |
| 158 } \ | |
| 159 if (_mode_ == HAL_DCACHE_WRITEBACK_MODE) { \ | |
| 160 asm volatile ("sync;" \ | |
| 161 "mtspr %0, %1;" \ | |
| 162 : : "I" (CYGARC_REG_DC_CST), \ | |
| 163 "r" (CYGARC_REG_DC_CMD_CW)); \ | |
| 164 } \ | |
| 165 CYG_MACRO_END | |
|
70
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
166 |
| 419 | 167 #define HAL_DCACHE_WRITETHRU_MODE 0 |
| 168 #define HAL_DCACHE_WRITEBACK_MODE 1 | |
|
70
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
169 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
170 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
171 // Load the contents of the given address range into the data cache |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
172 // and then lock the cache so that it stays there. |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
173 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
174 // Restrictions: This implementation only allows a single area to be |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
175 // locked at any one time. This area must be 2kB or less in size. |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
176 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
177 // Implementation: Flush entire cache, then invalidate it. This |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
178 // ensures that the fetched data go into way0. |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
179 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
180 #define HAL_DCACHE_LOCK(_base_, _size_) \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
181 CYG_MACRO_START \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
182 cyg_int32 __scratch; \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
183 cyg_uint32 __base = (cyg_uint32)(_base_); \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
184 cyg_int32 __l = ((__base / HAL_DCACHE_LINE_SIZE) % HAL_DCACHE_SETS); \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
185 cyg_int32 __count = ((_size_) / HAL_DCACHE_LINE_SIZE); \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
186 HAL_DCACHE_DISABLE(); \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
187 HAL_DCACHE_SYNC (); \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
188 HAL_DCACHE_INVALIDATE_ALL (); \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
189 HAL_DCACHE_ENABLE(); \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
190 do { \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
191 asm volatile ("lbz %0,0(%1);" \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
192 "sync;" \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
193 "mtspr %2, %4;" \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
194 "mtspr %3, %5;" \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
195 : /* %0 */ "=&r" (__scratch) \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
196 : /* %1 */ "b" (__base), \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
197 /* %2 */ "I" (CYGARC_REG_DC_ADR), \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
198 /* %3 */ "I" (CYGARC_REG_DC_CST), \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
199 /* %4 */ "r" (CYGARC_REG_DC_ADR_WAY0 \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
200 |(__l<<CYGARC_REG_DC_ADR_SETID_SHIFT)), \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
201 /* %5 */ "r" (CYGARC_REG_DC_CMD_LL)); \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
202 __l++; \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
203 __base += HAL_DCACHE_LINE_SIZE; \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
204 } while (__count--); \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
205 CYG_MACRO_END |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
206 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
207 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
208 // Undo a previous lock operation |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
209 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
210 // Implementation: Unlocks entire cache. |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
211 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
212 #define HAL_DCACHE_UNLOCK(_base_, _size_) \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
213 HAL_DCACHE_UNLOCK_ALL() |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
214 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
215 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
216 // Unlock entire cache |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
217 #define HAL_DCACHE_UNLOCK_ALL() \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
218 CYG_MACRO_START \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
219 asm volatile ("sync;" \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
220 "mtspr %0, %1;" \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
221 : : "I" (CYGARC_REG_DC_CST), \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
222 "r" (CYGARC_REG_DC_CMD_UA)); \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
223 CYG_MACRO_END |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
224 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
225 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
226 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
227 //----------------------------------------------------------------------------- |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
228 // Data cache line control |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
229 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
230 // Allocate cache lines for the given address range without reading its |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
231 // contents from memory. |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
232 //#define HAL_DCACHE_ALLOCATE( _base_ , _size_ ) |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
233 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
234 // Write dirty cache lines to memory and invalidate the cache entries |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
235 // for the given address range. |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
236 #define HAL_DCACHE_FLUSH( _base_ , _size_ ) \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
237 CYG_MACRO_START \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
238 cyg_uint32 __base = (cyg_uint32) (_base_); \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
239 cyg_int32 __size = (cyg_int32) (_size_); \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
240 while (__size > 0) { \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
241 asm volatile ("dcbf 0,%0;sync;" : : "r" (__base)); \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
242 __base += HAL_DCACHE_LINE_SIZE; \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
243 __size -= HAL_DCACHE_LINE_SIZE; \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
244 } \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
245 CYG_MACRO_END |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
246 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
247 // Invalidate cache lines in the given range without writing to memory. |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
248 #define HAL_DCACHE_INVALIDATE( _base_ , _size_ ) \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
249 CYG_MACRO_START \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
250 cyg_uint32 __base = (cyg_uint32) (_base_); \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
251 cyg_int32 __size = (cyg_int32) (_size_); \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
252 while (__size > 0) { \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
253 asm volatile ("dcbi 0,%0;sync;" : : "r" (__base)); \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
254 __base += HAL_DCACHE_LINE_SIZE; \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
255 __size -= HAL_DCACHE_LINE_SIZE; \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
256 } \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
257 CYG_MACRO_END |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
258 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
259 // Write dirty cache lines to memory for the given address range. |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
260 #define HAL_DCACHE_STORE( _base_ , _size_ ) \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
261 CYG_MACRO_START \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
262 cyg_uint32 __base = (cyg_uint32) (_base_); \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
263 cyg_int32 __size = (cyg_int32) (_size_); \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
264 while (__size > 0) { \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
265 asm volatile ("dcbst 0,%0;sync;" : : "r" (__base)); \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
266 __base += HAL_DCACHE_LINE_SIZE; \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
267 __size -= HAL_DCACHE_LINE_SIZE; \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
268 } \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
269 CYG_MACRO_END |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
270 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
271 // Preread the given range into the cache with the intention of reading |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
272 // from it later. |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
273 #define HAL_DCACHE_READ_HINT( _base_ , _size_ ) \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
274 CYG_MACRO_START \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
275 cyg_uint32 __base = (cyg_uint32) (_base_); \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
276 cyg_int32 __size = (cyg_int32) (_size_); \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
277 while (__size > 0) { \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
278 asm volatile ("dcbt 0,%0;" : : "r" (__base)); \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
279 __base += HAL_DCACHE_LINE_SIZE; \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
280 __size -= HAL_DCACHE_LINE_SIZE; \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
281 } \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
282 CYG_MACRO_END |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
283 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
284 // Preread the given range into the cache with the intention of writing |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
285 // to it later. |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
286 #define HAL_DCACHE_WRITE_HINT( _base_ , _size_ ) \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
287 CYG_MACRO_START \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
288 cyg_uint32 __base = (cyg_uint32) (_base_); \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
289 cyg_int32 __size = (cyg_int32) (_size_); \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
290 while (__size > 0) { \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
291 asm volatile ("dcbtst 0,%0;" : : "r" (__base)); \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
292 __base += HAL_DCACHE_LINE_SIZE; \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
293 __size -= HAL_DCACHE_LINE_SIZE; \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
294 } \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
295 CYG_MACRO_END |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
296 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
297 // Allocate and zero the cache lines associated with the given range. |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
298 #define HAL_DCACHE_ZERO( _base_ , _size_ ) \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
299 CYG_MACRO_START \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
300 cyg_uint32 __base = (cyg_uint32) (_base_); \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
301 cyg_int32 __size = (cyg_int32) (_size_); \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
302 while (__size > 0) { \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
303 asm volatile ("dcbz 0,%0;" : : "r" (__base)); \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
304 __base += HAL_DCACHE_LINE_SIZE; \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
305 __size -= HAL_DCACHE_LINE_SIZE; \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
306 } \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
307 CYG_MACRO_END |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
308 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
309 //----------------------------------------------------------------------------- |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
310 // Global control of Instruction cache |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
311 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
312 // Enable the instruction cache |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
313 #define HAL_ICACHE_ENABLE() \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
314 asm volatile ("isync;" \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
315 "mtspr %0, %1;" \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
316 "isync" \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
317 : : "I" (CYGARC_REG_IC_CST), "r" (CYGARC_REG_IC_CMD_CE)) |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
318 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
319 // Disable the instruction cache |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
320 #define HAL_ICACHE_DISABLE() \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
321 asm volatile ("isync;" \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
322 "mtspr %0, %1;" \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
323 "isync" \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
324 : : "I" (CYGARC_REG_IC_CST), "r" (CYGARC_REG_IC_CMD_CD)) |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
325 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
326 // Invalidate the entire cache |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
327 #define HAL_ICACHE_INVALIDATE_ALL() \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
328 asm volatile ("isync;" \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
329 "mtspr %0, %1;" \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
330 "isync" \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
331 : : "I" (CYGARC_REG_IC_CST), \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
332 "r" (CYGARC_REG_IC_CMD_IA)) |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
333 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
334 // Synchronize the contents of the cache with memory. |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
335 #define HAL_ICACHE_SYNC() \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
336 HAL_ICACHE_INVALIDATE_ALL() |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
337 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
338 // Query the state of the instruction cache |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
339 #define HAL_ICACHE_IS_ENABLED(_state_) \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
340 asm volatile ("mfspr %0, %1;" \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
341 "rlwinm %0,%0,1,31,31;" \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
342 : "=r" (_state_) : "I" (CYGARC_REG_IC_CST)) |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
343 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
344 // Set the instruction cache refill burst size |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
345 //#define HAL_ICACHE_BURST_SIZE(_size_) |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
346 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
347 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
348 // Load the contents of the given address range into the instruction cache |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
349 // and then lock the cache so that it stays there. |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
350 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
351 // Restrictions: This implementation only allows a single area to be |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
352 // locked at any one time. This area must be 2kB or less in size. |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
353 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
354 // Implementation: Flush entire cache, then invalidate it. This |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
355 // ensures that the fetched data go into way0. |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
356 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
357 #define HAL_ICACHE_LOCK(_base_, _size_) \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
358 CYG_MACRO_START \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
359 unsigned long __base = \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
360 ((unsigned long) (_base_)) & ~(HAL_ICACHE_LINE_SIZE-1); \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
361 int __count = ((_size_) / HAL_ICACHE_LINE_SIZE); \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
362 do { \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
363 asm volatile ("mtspr %0, %2;" \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
364 "mtspr %1, %3;" \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
365 "isync;" \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
366 : /* no output */ \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
367 : /* %0 */ "I" (CYGARC_REG_IC_ADR), \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
368 /* %1 */ "I" (CYGARC_REG_IC_CST), \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
369 /* %2 */ "r" (__base), \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
370 /* %3 */ "r" (CYGARC_REG_IC_CMD_LL)); \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
371 __base += HAL_ICACHE_LINE_SIZE; \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
372 } while (__count--); \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
373 CYG_MACRO_END |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
374 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
375 // Undo a previous lock operation |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
376 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
377 // Implementation: Unlocks entire cache. |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
378 #define HAL_ICACHE_UNLOCK(_base_, _size_) \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
379 HAL_ICACHE_UNLOCK_ALL() |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
380 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
381 // Unlock entire cache |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
382 #define HAL_ICACHE_UNLOCK_ALL() \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
383 CYG_MACRO_START \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
384 asm volatile ("sync;" \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
385 "mtspr %0, %1;" \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
386 : : "I" (CYGARC_REG_IC_CST), \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
387 "r" (CYGARC_REG_IC_CMD_UA)); \ |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
388 CYG_MACRO_END |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
389 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
390 //----------------------------------------------------------------------------- |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
391 // Instruction cache line control |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
392 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
393 // Invalidate cache lines in the given range without writing to memory. |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
394 //#define HAL_ICACHE_INVALIDATE( _base_ , _size_ ) |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
395 |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
396 //----------------------------------------------------------------------------- |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
397 #endif // ifndef CYGONCE_VAR_CACHE_H |
|
c5536bad4c24
Merge from eCos master repository on 2000-02-11-15:46:40-GMT
jlarmour
parents:
diff
changeset
|
398 // End of var_cache.h |
