Mercurial > ecos
annotate packages/hal/arm/sa11x0/assabet/current/src/assabet_misc.c @ 208:e0c0827131d1 ecos
Merge from eCos master repository on 2002-05-20-20:11:54-BST
| author | jlarmour |
|---|---|
| date | Mon, 20 May 2002 22:19:26 +0000 |
| parents | 2e9a636d9de9 |
| children | d2c90368aeef |
| rev | line source |
|---|---|
|
108
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
1 //========================================================================== |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
2 // |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
3 // assabet_misc.c |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
4 // |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
5 // HAL misc board support code for StrongARM SA1110/Assabet |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
6 // |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
7 //========================================================================== |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
145
diff
changeset
|
8 //####ECOSGPLCOPYRIGHTBEGIN#### |
|
108
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
9 // ------------------------------------------- |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
145
diff
changeset
|
10 // This file is part of eCos, the Embedded Configurable Operating System. |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
145
diff
changeset
|
11 // Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
145
diff
changeset
|
12 // |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
145
diff
changeset
|
13 // eCos is free software; you can redistribute it and/or modify it under |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
145
diff
changeset
|
14 // the terms of the GNU General Public License as published by the Free |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
145
diff
changeset
|
15 // Software Foundation; either version 2 or (at your option) any later version. |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
145
diff
changeset
|
16 // |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
145
diff
changeset
|
17 // eCos is distributed in the hope that it will be useful, but WITHOUT ANY |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
145
diff
changeset
|
18 // WARRANTY; without even the implied warranty of MERCHANTABILITY or |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
145
diff
changeset
|
19 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
145
diff
changeset
|
20 // for more details. |
|
108
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
21 // |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
145
diff
changeset
|
22 // You should have received a copy of the GNU General Public License along |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
145
diff
changeset
|
23 // with eCos; if not, write to the Free Software Foundation, Inc., |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
145
diff
changeset
|
24 // 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. |
|
108
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
25 // |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
145
diff
changeset
|
26 // As a special exception, if other files instantiate templates or use macros |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
145
diff
changeset
|
27 // or inline functions from this file, or you compile this file and link it |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
145
diff
changeset
|
28 // with other works to produce a work based on this file, this file does not |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
145
diff
changeset
|
29 // by itself cause the resulting work to be covered by the GNU General Public |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
145
diff
changeset
|
30 // License. However the source code for this file must still be made available |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
145
diff
changeset
|
31 // in accordance with section (3) of the GNU General Public License. |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
145
diff
changeset
|
32 // |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
145
diff
changeset
|
33 // This exception does not invalidate any other reasons why a work based on |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
145
diff
changeset
|
34 // this file might be covered by the GNU General Public License. |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
145
diff
changeset
|
35 // |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
145
diff
changeset
|
36 // Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
145
diff
changeset
|
37 // at http://sources.redhat.com/ecos/ecos-license |
|
108
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
38 // ------------------------------------------- |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
145
diff
changeset
|
39 //####ECOSGPLCOPYRIGHTEND#### |
|
108
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
40 //========================================================================== |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
41 //#####DESCRIPTIONBEGIN#### |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
42 // |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
43 // Author(s): gthomas |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
44 // Contributors: hmt |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
45 // Travis C. Furrer <furrer@mit.edu> |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
46 // Date: 2000-05-21 |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
47 // Purpose: HAL board support |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
48 // Description: Implementations of HAL board interfaces |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
49 // |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
50 //####DESCRIPTIONEND#### |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
51 // |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
52 //========================================================================*/ |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
53 |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
54 #include <pkgconf/hal.h> |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
55 #include <pkgconf/system.h> |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
56 #include CYGBLD_HAL_PLATFORM_H |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
57 |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
58 #include <cyg/infra/cyg_type.h> // base types |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
59 #include <cyg/infra/cyg_trac.h> // tracing macros |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
60 #include <cyg/infra/cyg_ass.h> // assertion macros |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
61 |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
62 #include <cyg/hal/hal_io.h> // IO macros |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
63 #include <cyg/hal/hal_arch.h> // Register state info |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
64 #include <cyg/hal/hal_diag.h> |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
65 #include <cyg/hal/hal_intr.h> // Interrupt names |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
66 #include <cyg/hal/hal_cache.h> |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
67 #include <cyg/hal/hal_sa11x0.h> // Hardware definitions |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
68 #include <cyg/hal/assabet.h> // Platform specifics |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
69 |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
70 #include <cyg/infra/diag.h> // diag_printf |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
71 |
|
145
2e9a636d9de9
Merge from eCos master repository on 2000-12-21-14:18:40-GMT
jlarmour
parents:
143
diff
changeset
|
72 // All the MM table layout is here: |
|
2e9a636d9de9
Merge from eCos master repository on 2000-12-21-14:18:40-GMT
jlarmour
parents:
143
diff
changeset
|
73 #include <cyg/hal/hal_mm.h> |
|
108
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
74 |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
145
diff
changeset
|
75 externC void* memset(void *, int, size_t); |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
145
diff
changeset
|
76 |
|
108
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
77 void |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
78 hal_mmu_init(void) |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
79 { |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
80 unsigned long ttb_base = SA11X0_RAM_BANK0_BASE + 0x4000; |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
81 unsigned long i; |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
82 |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
83 /* |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
84 * Set the TTB register |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
85 */ |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
86 asm volatile ("mcr p15,0,%0,c2,c0,0" : : "r"(ttb_base) /*:*/); |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
87 |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
88 /* |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
89 * Set the Domain Access Control Register |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
90 */ |
|
145
2e9a636d9de9
Merge from eCos master repository on 2000-12-21-14:18:40-GMT
jlarmour
parents:
143
diff
changeset
|
91 i = ARM_ACCESS_DACR_DEFAULT; |
|
108
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
92 asm volatile ("mcr p15,0,%0,c3,c0,0" : : "r"(i) /*:*/); |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
93 |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
94 /* |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
95 * First clear all TT entries - ie Set them to Faulting |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
96 */ |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
97 memset((void *)ttb_base, 0, ARM_FIRST_LEVEL_PAGE_TABLE_SIZE); |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
98 |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
99 /* Actual Virtual Size Attributes Function */ |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
100 /* Base Base MB cached? buffered? access permissions */ |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
101 /* xxx00000 xxx00000 */ |
|
117
bd1a71e3e476
Merge from eCos master repository on 2000-08-25-19:22:58-BST
jlarmour
parents:
108
diff
changeset
|
102 X_ARM_MMU_SECTION(0x000, 0x500, 32, ARM_CACHEABLE, ARM_BUFFERABLE, ARM_ACCESS_PERM_RW_RW); /* Boot flash ROMspace */ |
|
108
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
103 X_ARM_MMU_SECTION(0x080, 0x080, 4, ARM_CACHEABLE, ARM_BUFFERABLE, ARM_ACCESS_PERM_RW_RW); /* Application flash ROM */ |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
104 X_ARM_MMU_SECTION(0x100, 0x100, 128, ARM_UNCACHEABLE, ARM_UNBUFFERABLE, ARM_ACCESS_PERM_RW_RW); /* SA-1101 Development Board Registers */ |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
105 X_ARM_MMU_SECTION(0x180, 0x180, 128, ARM_UNCACHEABLE, ARM_UNBUFFERABLE, ARM_ACCESS_PERM_RW_RW); /* Ethernet Adaptor */ |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
106 X_ARM_MMU_SECTION(0x184, 0x184, 1, ARM_UNCACHEABLE, ARM_UNBUFFERABLE, ARM_ACCESS_PERM_RW_RW); /* XBusReg */ |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
107 X_ARM_MMU_SECTION(0x188, 0x188, 1, ARM_UNCACHEABLE, ARM_UNBUFFERABLE, ARM_ACCESS_PERM_RW_RW); /* SysRegA */ |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
108 X_ARM_MMU_SECTION(0x18C, 0x18C, 1, ARM_UNCACHEABLE, ARM_UNBUFFERABLE, ARM_ACCESS_PERM_RW_RW); /* SysRegB */ |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
109 X_ARM_MMU_SECTION(0x190, 0x190, 4, ARM_UNCACHEABLE, ARM_UNBUFFERABLE, ARM_ACCESS_PERM_RW_RW); /* CPLD A */ |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
110 X_ARM_MMU_SECTION(0x194, 0x194, 4, ARM_UNCACHEABLE, ARM_UNBUFFERABLE, ARM_ACCESS_PERM_RW_RW); /* CPLD B */ |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
111 X_ARM_MMU_SECTION(0x200, 0x200, 512, ARM_UNCACHEABLE, ARM_UNBUFFERABLE, ARM_ACCESS_PERM_RW_RW); /* PCMCIA Socket A */ |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
112 X_ARM_MMU_SECTION(0x300, 0x300, 512, ARM_UNCACHEABLE, ARM_UNBUFFERABLE, ARM_ACCESS_PERM_RW_RW); /* PCMCIA Sockets B */ |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
113 X_ARM_MMU_SECTION(0x400, 0x400, 128, ARM_UNCACHEABLE, ARM_UNBUFFERABLE, ARM_ACCESS_PERM_RW_RW); /* SA1111 Daughter card */ |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
114 X_ARM_MMU_SECTION(0x480, 0x480, 128, ARM_UNCACHEABLE, ARM_UNBUFFERABLE, ARM_ACCESS_PERM_RW_RW); /* Video Controller Daughter card */ |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
115 X_ARM_MMU_SECTION(0x800, 0x800, 0x400, ARM_UNCACHEABLE, ARM_UNBUFFERABLE, ARM_ACCESS_PERM_RW_RW); /* StrongARM(R) Registers */ |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
116 X_ARM_MMU_SECTION(0xC00, 0, 32, ARM_CACHEABLE, ARM_BUFFERABLE, ARM_ACCESS_PERM_RW_RW); /* DRAM Bank 0 */ |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
117 X_ARM_MMU_SECTION(0xC00, 0xC00, 32, ARM_UNCACHEABLE, ARM_BUFFERABLE, ARM_ACCESS_PERM_RW_RW); /* DRAM Bank 0 */ |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
118 X_ARM_MMU_SECTION(0xE00, 0xE00, 128, ARM_CACHEABLE, ARM_BUFFERABLE, ARM_ACCESS_PERM_RW_RW); /* Zeros (Cache Clean) Bank */ |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
119 |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
120 } |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
121 |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
122 // |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
123 // Board control register support |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
124 // Update the board control register (write only). Only the bits |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
125 // specified by 'mask' are changed to 'value'. |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
126 // |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
127 |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
128 void |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
129 assabet_BCR(unsigned long mask, unsigned long value) |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
130 { |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
131 _assabet_BCR = (_assabet_BCR & ~mask) | (mask & value); |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
132 *SA1110_BOARD_CONTROL = _assabet_BCR; |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
133 } |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
134 |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
135 // |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
136 // Platform specific initialization |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
137 // |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
138 |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
139 void |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
140 plf_hardware_init(void) |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
141 { |
|
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
142 // Force "alternate" use of GPIO pins used for LCD screen |
|
126
518f42066aba
Merge from eCos master repository on 2000-09-19-06:25:26-BST
jlarmour
parents:
117
diff
changeset
|
143 *SA11X0_GPIO_ALTERNATE_FUNCTION |= 0x000003FC; // Bits 2..9 |
|
518f42066aba
Merge from eCos master repository on 2000-09-19-06:25:26-BST
jlarmour
parents:
117
diff
changeset
|
144 *SA11X0_GPIO_PIN_DIRECTION |= 0x000003FC; // Bits 2..9 |
|
518f42066aba
Merge from eCos master repository on 2000-09-19-06:25:26-BST
jlarmour
parents:
117
diff
changeset
|
145 *SA11X0_GPIO_PIN_OUTPUT_CLEAR = 0x000003FC; // Bits 2..9 |
|
108
ff3f181b64bd
Merge from eCos master repository on 2000-07-04-20:42:44-BST
jlarmour
parents:
diff
changeset
|
146 } |
|
143
6b5f480c6929
Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents:
126
diff
changeset
|
147 |
|
6b5f480c6929
Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents:
126
diff
changeset
|
148 #include CYGHWR_MEMORY_LAYOUT_H |
|
6b5f480c6929
Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents:
126
diff
changeset
|
149 typedef void code_fun(void); |
|
6b5f480c6929
Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents:
126
diff
changeset
|
150 void assabet_program_new_stack(void *func) |
|
6b5f480c6929
Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents:
126
diff
changeset
|
151 { |
|
6b5f480c6929
Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents:
126
diff
changeset
|
152 register CYG_ADDRESS stack_ptr asm("sp"); |
|
6b5f480c6929
Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents:
126
diff
changeset
|
153 register CYG_ADDRESS old_stack asm("r4"); |
|
6b5f480c6929
Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents:
126
diff
changeset
|
154 register code_fun *new_func asm("r0"); |
|
6b5f480c6929
Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents:
126
diff
changeset
|
155 old_stack = stack_ptr; |
|
6b5f480c6929
Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents:
126
diff
changeset
|
156 stack_ptr = CYGMEM_REGION_ram + CYGMEM_REGION_ram_SIZE - sizeof(CYG_ADDRESS); |
|
6b5f480c6929
Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents:
126
diff
changeset
|
157 new_func = (code_fun*)func; |
|
6b5f480c6929
Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents:
126
diff
changeset
|
158 new_func(); |
|
6b5f480c6929
Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents:
126
diff
changeset
|
159 stack_ptr = old_stack; |
|
6b5f480c6929
Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents:
126
diff
changeset
|
160 return; |
|
6b5f480c6929
Merge from eCos master repository on 2000-12-08-02:09:36-GMT
jlarmour
parents:
126
diff
changeset
|
161 } |
|
145
2e9a636d9de9
Merge from eCos master repository on 2000-12-21-14:18:40-GMT
jlarmour
parents:
143
diff
changeset
|
162 |
|
2e9a636d9de9
Merge from eCos master repository on 2000-12-21-14:18:40-GMT
jlarmour
parents:
143
diff
changeset
|
163 // ------------------------------------------------------------------------ |
|
2e9a636d9de9
Merge from eCos master repository on 2000-12-21-14:18:40-GMT
jlarmour
parents:
143
diff
changeset
|
164 // EOF assabet_misc.c |
