annotate packages/hal/arm/cl7211/current/include/hal_platform_setup.h @ 32:5af43b635655 ecos-sw-1999-08-18

Merge from eCos master repository on 1999-08-18-15:20:01-BST
author jlarmour
date Wed, 18 Aug 1999 15:33:44 +0000
parents
children e97d78785e2d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
32
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
1 #ifndef CYGONCE_HAL_PLATFORM_SETUP_H
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
2 #define CYGONCE_HAL_PLATFORM_SETUP_H
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
3
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
4 /*=============================================================================
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
5 //
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
6 // hal_platform_setup.h
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
7 //
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
8 // Platform specific support for HAL (assembly code)
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
9 //
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
10 //=============================================================================
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
11 //####COPYRIGHTBEGIN####
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
12 //
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
13 // -------------------------------------------
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
14 // The contents of this file are subject to the Cygnus eCos Public License
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
15 // Version 1.0 (the "License"); you may not use this file except in
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
16 // compliance with the License. You may obtain a copy of the License at
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
17 // http://sourceware.cygnus.com/ecos
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
18 //
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
19 // Software distributed under the License is distributed on an "AS IS"
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
20 // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
21 // License for the specific language governing rights and limitations under
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
22 // the License.
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
23 //
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
24 // The Original Code is eCos - Embedded Cygnus Operating System, released
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
25 // September 30, 1998.
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
26 //
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
27 // The Initial Developer of the Original Code is Cygnus. Portions created
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
28 // by Cygnus are Copyright (C) 1998,1999 Cygnus Solutions. All Rights Reserved.
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
29 // -------------------------------------------
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
30 //
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
31 //####COPYRIGHTEND####
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
32 //=============================================================================
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
33 //#####DESCRIPTIONBEGIN####
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
34 //
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
35 // Author(s): gthomas
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
36 // Contributors: gthomas
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
37 // Date: 1999-04-21
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
38 // Purpose: Cirrus CL7211 platform specific support routines
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
39 // Description:
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
40 // Usage: #include <cyg/hal/hal_platform_setup.h>
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
41 //
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
42 //####DESCRIPTIONEND####
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
43 //
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
44 //===========================================================================*/
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
45
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
46 #include <pkgconf/system.h> // System-wide configuration info
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
47 #include CYGBLD_HAL_PLATFORM_H // Platform specific configuration
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
48 #include <cyg/hal/hal_cl7211.h> // Platform specific hardware definitions
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
49 #include <cyg/hal/hal_mmu.h> // MMU definitions
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
50
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
51 #define CYGHWR_HAL_ARM_HAS_MMU // This processor has an MMU
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
52
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
53 #if defined(CYG_HAL_STARTUP_ROM) || defined(CYG_HAL_STARTUP_STUBS)
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
54
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
55 //
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
56 // Memory map - set up by ROM (GDB stubs)
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
57 //
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
58 // Region Logical Address Physical Address
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
59 // DRAM 0x00000000..0x00xFFFFF 0xC00x0000 (see below)
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
60 // Expansion 2 0x20000000 0x20000000
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
61 // Expansion 3 0x30000000 0x30000000
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
62 // PCMCIA 0 0x40000000 0x40000000
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
63 // PCMCIA 1 0x50000000 0x50000000
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
64 // SRAM 0x60000000..0x600007FF 0x60000000
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
65 // I/O 0x80000000 0x80000000
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
66 // MMU Tables 0xC00y0000
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
67 // LCD buffer 0xC0000000..0xC001FFFF 0xC0000000
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
68 // ROM 0xE0000000..0xEFFFFFFF 0x00000000
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
69 // ROM 0xF0000000..0xFFFFFFFF 0x10000000
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
70
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
71 #ifdef CYGHWR_HAL_ARM_CL7211_LCD_INSTALLED
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
72 #define MMU_BASE 0xC0020000
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
73 #define PTE_BASE 0xC0024000
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
74 #define LCD_BUFFER_SIZE 0x00020000
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
75 #else
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
76 #define MMU_BASE 0xC0000000
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
77 #define PTE_BASE 0xC0004000
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
78 #define LCD_BUFFER_SIZE 0x00000000
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
79 #endif
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
80 #if (CYGHWR_HAL_ARM_CL7211_DRAM_SIZE == 2)
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
81 #define MMU_TABLES_SIZE 0x4000+0x1000+0x1000 // RAM used for PTE entries
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
82 #define DRAM_LA_END 0x00200000-MMU_TABLES_SIZE
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
83 #elif (CYGHWR_HAL_ARM_CL7211_DRAM_SIZE == 16)
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
84 #define MMU_TABLES_SIZE 0x4000+0x4000+0x1000 // RAM used for PTE entries
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
85 #define DRAM_LA_END 0x01000000-MMU_TABLES_SIZE
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
86 #endif
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
87 #define DRAM_LA_START 0x00000000
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
88 #define DRAM_PA MMU_BASE+MMU_TABLES_SIZE
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
89 #define LCD_LA_START 0xC0000000
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
90 #define LCD_LA_END 0xC0020000
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
91 #define LCD_PA 0xC0000000
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
92 #define ROM0_LA_START 0xE0000000
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
93 #define ROM0_PA 0x00000000
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
94 #define ROM1_LA_START 0xF0000000
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
95 #define ROM1_LA_END 0x00000000
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
96 #define ROM1_PA 0x10000000
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
97 #define EXPANSION2_LA_START 0x20000000
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
98 #define EXPANSION2_PA 0x20000000
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
99 #define EXPANSION3_LA_START 0x30000000
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
100 #define EXPANSION3_PA 0x30000000
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
101 #define PCMCIA0_LA_START 0x40000000
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
102 #define PCMCIA0_PA 0x40000000
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
103 #define PCMCIA1_LA_START 0x50000000
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
104 #define PCMCIA1_PA 0x50000000
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
105 #define SRAM_LA_START 0x60000000
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
106 #define SRAM_LA_END 0x60001000
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
107 #define SRAM_PA 0x60000000
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
108 #define IO_LA_START 0x80000000
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
109 #define IO_LA_END 0x80003000
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
110 #define IO_PA 0x80000000
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
111
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
112 #if (CYGHWR_HAL_ARM_CL7211_DRAM_SIZE == 2)
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
113 // Note: The DRAM on this board is very irregular in that every
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
114 // other 256K piece is missing. E.g. only these [physical]
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
115 // addresses are valid:
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
116 // 0xC0000000..0xC003FFFF
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
117 // 0xC0080000..0xC00BFFFF
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
118 // 0xC0200000..0xC023FFFF Note the additional GAP!
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
119 // etc.
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
120 // 0xC0800000..0xC083FFFF Note the additional GAP!
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
121 // 0xC0880000..0xC08CFFFF
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
122 // 0xC0A00000..0xC0A3FFFF
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
123 // etc.
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
124 // The MMU mapping code takes this into consideration and creates
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
125 // a continuous logical map for the DRAM.
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
126 #define MAP_DRAM \
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
127 /* Map DRAM */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
128 ldr r3,=DRAM_LA_START ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
129 ldr r4,=DRAM_LA_END ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
130 ldr r5,=DRAM_PA ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
131 /* 0x00000000..0x000FFFFF */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
132 mov r6,r2 /* Set up page table descriptor */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
133 ldr r7,=MMU_L1_TYPE_Page ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
134 orr r6,r6,r7 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
135 str r6,[r1],#4 /* Store PTE, update pointer */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
136 10: mov r6,r5 /* Build page table entry */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
137 ldr r7,=MMU_L2_TYPE_Small|MMU_AP_Any|MMU_Bufferable|MMU_Cacheable ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
138 orr r6,r6,r7 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
139 ldr r7,=MMU_PAGE_SIZE ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
140 str r6,[r2],#4 /* Next page */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
141 add r3,r3,r7 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
142 add r5,r5,r7 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
143 ldr r8,=DRAM_LA_START+MMU_SECTION_SIZE ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
144 cmp r3,r8 /* Done with first 1M? */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
145 beq 20f ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
146 ldr r7,=0x40000 /* Special check for 256K boundary */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
147 and r7,r7,r5 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
148 cmp r7,#0 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
149 beq 10b ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
150 add r5,r5,r7 /* Skip 256K hole */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
151 ldr r7,=0x100000 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
152 and r7,r5,r7 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
153 beq 10b ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
154 add r5,r5,r7 /* Nothing at 0xC0100000 */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
155 ldr r7,=0x400000 /* Also nothing at 0xC0400000 */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
156 and r7,r5,r7 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
157 beq 10b ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
158 add r5,r5,r7 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
159 b 10b ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
160 20: ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
161 /* 0x00100000..0x001FFFFF */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
162 mov r6,r2 /* Set up page table descriptor */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
163 ldr r7,=MMU_L1_TYPE_Page ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
164 orr r6,r6,r7 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
165 str r6,[r1],#4 /* Store PTE, update pointer */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
166 10: mov r6,r5 /* Build page table entry */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
167 ldr r7,=MMU_L2_TYPE_Small|MMU_AP_Any|MMU_Bufferable|MMU_Cacheable ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
168 orr r6,r6,r7 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
169 ldr r7,=MMU_PAGE_SIZE ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
170 str r6,[r2],#4 /* Next page */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
171 add r3,r3,r7 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
172 cmp r3,r4 /* Done with first DRAM? */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
173 beq 20f ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
174 add r5,r5,r7 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
175 ldr r7,=0x40000 /* Special check for 256K boundary */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
176 and r7,r7,r5 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
177 cmp r7,#0 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
178 beq 10b ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
179 add r5,r5,r7 /* Skip 256K hole */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
180 ldr r7,=0x100000 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
181 and r7,r5,r7 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
182 beq 10b ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
183 add r5,r5,r7 /* Nothing at 0xC0300000 */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
184 ldr r7,=0x400000 /* Also nothing at 0xC0400000 */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
185 and r7,r5,r7 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
186 beq 10b ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
187 add r5,r5,r7 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
188 b 10b ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
189 20: ;
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
190 #elif (CYGHWR_HAL_ARM_CL7211_DRAM_SIZE == 16)
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
191 // The 16M board is arranged as:
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
192 // 0xC0000000..0xC07FFFFF
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
193 // 0xC1000000..0xC17FFFFF
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
194 #define MAP_DRAM \
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
195 /* Map DRAM */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
196 ldr r3,=DRAM_LA_START ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
197 ldr r4,=DRAM_LA_END ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
198 ldr r5,=DRAM_PA ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
199 /* 0xXXX00000..0xXXXFFFFF */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
200 10: mov r6,r2 /* Set up page table descriptor */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
201 ldr r7,=MMU_L1_TYPE_Page ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
202 orr r6,r6,r7 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
203 str r6,[r1],#4 /* Store PTE, update pointer */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
204 ldr r8,=MMU_SECTION_SIZE/MMU_PAGE_SIZE ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
205 ldr r6,=DRAM_PA+0x00800000 /* Need to skip at 8M boundary */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
206 cmp r5,r6 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
207 bne 15f ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
208 ldr r5,=DRAM_PA+0x01000000 /* Next chunk of DRAM */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
209 15: mov r6,r5 /* Build page table entry */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
210 ldr r7,=MMU_L2_TYPE_Small|MMU_AP_Any|MMU_Bufferable|MMU_Cacheable ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
211 orr r6,r6,r7 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
212 ldr r7,=MMU_PAGE_SIZE ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
213 str r6,[r2],#4 /* Next page */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
214 add r3,r3,r7 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
215 add r5,r5,r7 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
216 cmp r3,r4 /* End of DRAM? */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
217 beq 20f ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
218 sub r8,r8,#1 /* End of 1M section? */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
219 cmp r8,#0 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
220 bne 15b /* Next page */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
221 b 10b /* Next section */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
222 20:
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
223 #else
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
224 #err Invalid DRAM size selected
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
225 #endif
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
226
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
227 #ifdef CYG_HAL_ARM_CL7111 // CL7111, 710 processor
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
228 #define MMU_INITIALIZE \
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
229 ldr r1,=MMU_Control_Init ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
230 mcr MMU_CP,0,r1,MMU_Control,c0 /* MMU off */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
231 ldr r1,=MMU_BASE ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
232 mcr MMU_CP,0,r1,MMU_Base,c0 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
233 mcr MMU_CP,0,r1,MMU_FlushTLB,c0,0 /* Invalidate TLB */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
234 mcr MMU_CP,0,r1,MMU_FlushIDC,c0,0 /* Invalidate Caches */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
235 ldr r1,=0xFFFFFFFF ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
236 mcr MMU_CP,0,r1,MMU_DomainAccess,c0 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
237 ldr r2,=10f ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
238 ldr r1,=MMU_Control_Init|MMU_Control_M ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
239 mcr MMU_CP,0,r1,MMU_Control,c0 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
240 mov pc,r2 /* Change address spaces */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
241 nop ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
242 nop ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
243 nop ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
244 10:
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
245 #else // EP7211, 720T processor
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
246 #define MMU_INITIALIZE \
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
247 ldr r1,=MMU_Control_Init ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
248 mcr MMU_CP,0,r1,MMU_Control,c0 /* MMU off */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
249 ldr r1,=MMU_BASE ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
250 mcr MMU_CP,0,r1,MMU_Base,c0 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
251 mcr MMU_CP,0,r1,MMU_TLB,c7,0 /* Invalidate TLB - 720 style */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
252 mcr MMU_CP,0,r1,MMU_FlushIDC,c0,0 /* Invalidate Caches */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
253 ldr r1,=0xFFFFFFFF ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
254 mcr MMU_CP,0,r1,MMU_DomainAccess,c0 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
255 ldr r2,=10f ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
256 ldr r1,=MMU_Control_Init|MMU_Control_M ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
257 mcr MMU_CP,0,r1,MMU_Control,c0 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
258 mov pc,r2 /* Change address spaces */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
259 nop ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
260 nop ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
261 nop ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
262 10:
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
263 #endif
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
264
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
265 #define PLATFORM_SETUP1 \
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
266 /* Initialize memory configuration */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
267 ldr r1,=MEMCFG1 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
268 ldr r2,=0x8200A080 /* FIXME - what is this? */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
269 str r2,[r1] ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
270 ldr r1,=MEMCFG2 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
271 ldr r2,=0xFEFC0000 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
272 str r2,[r1] ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
273 ldr r1,=DRFPR ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
274 ldr r2,=0x81 /* DRAM refresh = 64KHz */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
275 strb r2,[r1] ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
276 /* Initialize MMU to create new memory map */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
277 ldr r1,=MMU_BASE ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
278 ldr r2,=PTE_BASE ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
279 MAP_DRAM ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
280 /* Nothing until PCMCIA0 */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
281 ldr r3,=0x3FF /* Page tables need 2K boundary */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
282 add r2,r2,r3 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
283 ldr r3,=~0x3FF ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
284 and r2,r2,r3 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
285 ldr r3,=(DRAM_LA_END+0x000FFFFF)&0xFFF00000 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
286 ldr r4,=EXPANSION2_LA_START ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
287 ldr r5,=MMU_L1_TYPE_Fault ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
288 ldr r7,=MMU_SECTION_SIZE ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
289 10: str r5,[r1],#4 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
290 add r3,r3,r7 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
291 cmp r3,r4 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
292 bne 10b ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
293 /* EXPANSION2, EXNAPSION3, PCMCIA0, PCMCIA1 */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
294 ldr r3,=EXPANSION2_LA_START ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
295 ldr r4,=SRAM_LA_START ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
296 ldr r5,=EXPANSION2_PA ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
297 ldr r6,=MMU_L1_TYPE_Section|MMU_AP_Any ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
298 ldr r7,=MMU_SECTION_SIZE ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
299 10: orr r0,r5,r6 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
300 str r0,[r1],#4 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
301 add r5,r5,r7 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
302 add r3,r3,r7 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
303 cmp r3,r4 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
304 bne 10b ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
305 /* SRAM */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
306 ldr r3,=SRAM_LA_START ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
307 ldr r4,=MMU_L1_TYPE_Page|MMU_DOMAIN(0) ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
308 orr r4,r4,r2 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
309 str r4,[r1],#4 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
310 ldr r4,=MMU_L2_TYPE_Small|MMU_AP_Any|MMU_Bufferable|MMU_Cacheable ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
311 orr r4,r3,r4 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
312 str r4,[r2],#4 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
313 ldr r3,=SRAM_LA_START+MMU_PAGE_SIZE ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
314 ldr r4,=SRAM_LA_START+MMU_SECTION_SIZE ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
315 ldr r5,=MMU_L2_TYPE_Fault ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
316 ldr r7,=MMU_PAGE_SIZE ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
317 10: str r5,[r2],#4 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
318 add r3,r3,r7 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
319 cmp r3,r4 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
320 bne 10b ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
321 ldr r4,=IO_LA_START ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
322 ldr r5,=MMU_L1_TYPE_Fault ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
323 ldr r7,=MMU_SECTION_SIZE ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
324 20: str r5,[r1],#4 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
325 add r3,r3,r7 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
326 cmp r3,r4 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
327 bne 20b ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
328 /* I/O */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
329 ldr r3,=0x3FF /* Page tables need 2K boundary */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
330 add r2,r2,r3 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
331 ldr r3,=~0x3FF ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
332 and r2,r2,r3 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
333 ldr r4,=MMU_L1_TYPE_Page|MMU_DOMAIN(0) ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
334 orr r4,r4,r2 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
335 str r4,[r1],#4 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
336 ldr r3,=IO_LA_START ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
337 ldr r4,=IO_LA_END ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
338 ldr r7,=MMU_PAGE_SIZE ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
339 ldr r5,=IO_PA|MMU_L2_TYPE_Small|MMU_AP_All ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
340 10: str r5,[r2],#4 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
341 add r5,r5,r7 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
342 add r3,r3,r7 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
343 cmp r3,r4 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
344 bne 10b ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
345 ldr r4,=IO_LA_START+MMU_SECTION_SIZE ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
346 ldr r5,=MMU_L2_TYPE_Fault ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
347 ldr r7,=MMU_PAGE_SIZE ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
348 10: str r5,[r2],#4 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
349 add r3,r3,r7 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
350 cmp r3,r4 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
351 bne 10b ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
352 ldr r4,=LCD_LA_START ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
353 ldr r5,=MMU_L1_TYPE_Fault ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
354 ldr r7,=MMU_SECTION_SIZE ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
355 20: str r5,[r1],#4 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
356 add r3,r3,r7 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
357 cmp r3,r4 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
358 bne 20b ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
359 /* LCD Buffer & Unmapped DRAM (holes and all) */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
360 ldr r3,=LCD_LA_START ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
361 ldr r4,=ROM0_LA_START ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
362 ldr r5,=LCD_PA ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
363 ldr r6,=MMU_L1_TYPE_Section|MMU_AP_Any|MMU_Bufferable|MMU_Cacheable ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
364 ldr r7,=MMU_SECTION_SIZE ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
365 10: orr r0,r5,r6 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
366 str r0,[r1],#4 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
367 add r5,r5,r7 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
368 add r3,r3,r7 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
369 cmp r3,r4 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
370 bne 10b ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
371 /* ROM0, ROM1 */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
372 ldr r3,=ROM0_LA_START ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
373 ldr r4,=ROM1_LA_END ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
374 ldr r5,=ROM0_PA ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
375 ldr r6,=MMU_L1_TYPE_Section|MMU_AP_Any|MMU_Cacheable ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
376 ldr r7,=MMU_SECTION_SIZE ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
377 10: orr r0,r5,r6 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
378 str r0,[r1],#4 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
379 add r5,r5,r7 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
380 add r3,r3,r7 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
381 cmp r3,r4 ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
382 bne 10b ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
383 /* Now initialize the MMU to use this new page table */ ;\
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
384 MMU_INITIALIZE
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
385
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
386 #else
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
387
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
388 #define PLATFORM_SETUP1
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
389 #endif
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
390
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
391
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
392 /*---------------------------------------------------------------------------*/
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
393 /* end of hal_platform_setup.h */
5af43b635655 Merge from eCos master repository on 1999-08-18-15:20:01-BST
jlarmour
parents:
diff changeset
394 #endif /* CYGONCE_HAL_PLATFORM_SETUP_H */