Mercurial > ecos
annotate packages/hal/i386/arch/current/include/hal_arch.h @ 3292:7f8e529b4d82 default tip
Fix FREESCALE_EDMA_NBYTES_MLOFFYES_MLOFF() so it works with negative offsets.
| author | vae |
|---|---|
| date | Wed, 29 Apr 2015 23:31:48 +0000 |
| parents | 74dbf4c3f2e1 |
| children |
| rev | line source |
|---|---|
| 2 | 1 #ifndef CYGONCE_HAL_HAL_ARCH_H |
| 2 #define CYGONCE_HAL_HAL_ARCH_H | |
| 3 | |
| 4 //============================================================================= | |
| 5 // | |
| 6 // hal_arch.h | |
| 7 // | |
| 8 // Architecture specific abstractions | |
| 9 // | |
| 10 //============================================================================= | |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2016
diff
changeset
|
11 // ####ECOSGPLCOPYRIGHTBEGIN#### |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2016
diff
changeset
|
12 // ------------------------------------------- |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2016
diff
changeset
|
13 // This file is part of eCos, the Embedded Configurable Operating System. |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2016
diff
changeset
|
14 // Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
202
diff
changeset
|
15 // |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2016
diff
changeset
|
16 // eCos is free software; you can redistribute it and/or modify it under |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2016
diff
changeset
|
17 // the terms of the GNU General Public License as published by the Free |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2016
diff
changeset
|
18 // Software Foundation; either version 2 or (at your option) any later |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2016
diff
changeset
|
19 // version. |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
202
diff
changeset
|
20 // |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2016
diff
changeset
|
21 // eCos is distributed in the hope that it will be useful, but WITHOUT |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2016
diff
changeset
|
22 // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2016
diff
changeset
|
23 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2016
diff
changeset
|
24 // for more details. |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
202
diff
changeset
|
25 // |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2016
diff
changeset
|
26 // You should have received a copy of the GNU General Public License |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2016
diff
changeset
|
27 // along with eCos; if not, write to the Free Software Foundation, Inc., |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2016
diff
changeset
|
28 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
202
diff
changeset
|
29 // |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2016
diff
changeset
|
30 // As a special exception, if other files instantiate templates or use |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2016
diff
changeset
|
31 // macros or inline functions from this file, or you compile this file |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2016
diff
changeset
|
32 // and link it with other works to produce a work based on this file, |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2016
diff
changeset
|
33 // this file does not by itself cause the resulting work to be covered by |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2016
diff
changeset
|
34 // the GNU General Public License. However the source code for this file |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2016
diff
changeset
|
35 // must still be made available in accordance with section (3) of the GNU |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2016
diff
changeset
|
36 // General Public License v2. |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
202
diff
changeset
|
37 // |
|
2729
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2016
diff
changeset
|
38 // This exception does not invalidate any other reasons why a work based |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2016
diff
changeset
|
39 // on this file might be covered by the GNU General Public License. |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2016
diff
changeset
|
40 // ------------------------------------------- |
|
74dbf4c3f2e1
Update all copyright banners to reflect FSF ownership; fix and improve licence text.
jlarmour
parents:
2016
diff
changeset
|
41 // ####ECOSGPLCOPYRIGHTEND#### |
| 2 | 42 //============================================================================= |
| 43 //#####DESCRIPTIONBEGIN#### | |
| 44 // | |
| 45 // Author(s): proven | |
|
72
da3908c9cd10
Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents:
66
diff
changeset
|
46 // Contributors:proven, pjo, nickg |
| 2 | 47 // Date: 1998-10-05 |
| 48 // Purpose: Define architecture abstractions | |
| 49 // Usage: #include <cyg/hal/hal_arch.h> | |
| 50 // | |
| 51 //####DESCRIPTIONEND#### | |
| 52 // | |
| 53 //============================================================================= | |
| 54 | |
| 55 #include <pkgconf/hal.h> | |
| 56 #include <cyg/infra/cyg_type.h> | |
| 57 | |
|
161
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
58 #include <cyg/hal/var_arch.h> |
|
72
da3908c9cd10
Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents:
66
diff
changeset
|
59 |
| 2 | 60 //----------------------------------------------------------------------------- |
| 61 // Processor saved states. This structure is also defined in i386.inc for | |
| 62 // assembly code. Do not change this without changing that (or vice versa). | |
| 63 | |
|
161
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
64 #ifdef CYGHWR_HAL_I386_FPU |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
65 |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
66 typedef struct |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
67 { |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
68 cyg_uint32 fpstate_valid; |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
69 cyg_uint32 fpstate[108/sizeof(cyg_uint32)]; |
|
191
678094f34118
Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents:
182
diff
changeset
|
70 #ifdef CYGHWR_HAL_I386_PENTIUM_SSE |
|
678094f34118
Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents:
182
diff
changeset
|
71 cyg_uint32 xmm0[4]; |
|
678094f34118
Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents:
182
diff
changeset
|
72 cyg_uint32 xmm1[4]; |
|
678094f34118
Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents:
182
diff
changeset
|
73 cyg_uint32 xmm2[4]; |
|
678094f34118
Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents:
182
diff
changeset
|
74 cyg_uint32 xmm3[4]; |
|
678094f34118
Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents:
182
diff
changeset
|
75 cyg_uint32 xmm4[4]; |
|
678094f34118
Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents:
182
diff
changeset
|
76 cyg_uint32 xmm5[4]; |
|
678094f34118
Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents:
182
diff
changeset
|
77 cyg_uint32 xmm6[4]; |
|
678094f34118
Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents:
182
diff
changeset
|
78 cyg_uint32 xmm7[4]; |
|
678094f34118
Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents:
182
diff
changeset
|
79 cyg_uint32 mxcsr; |
|
678094f34118
Merge from eCos master repository on 2001-10-19-06:43:02-BST
jlarmour
parents:
182
diff
changeset
|
80 #endif |
|
161
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
81 } HAL_FPU_Context; |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
82 |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
83 #endif |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
84 |
| 2 | 85 typedef struct |
| 86 { | |
|
161
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
87 #ifdef CYGHWR_HAL_I386_FPU |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
88 #ifdef CYGHWR_HAL_I386_FPU_SWITCH_LAZY |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
89 HAL_FPU_Context *fpucontext; |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
90 #else |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
91 HAL_FPU_Context fpucontext; |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
92 #endif |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
93 #endif |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
94 cyg_uint32 edi; |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
95 cyg_uint32 esi; |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
96 cyg_uint32 ebp; |
| 2 | 97 cyg_uint32 esp; |
| 98 cyg_uint32 ebx; | |
|
161
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
99 cyg_uint32 edx; |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
100 cyg_uint32 ecx; |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
101 cyg_uint32 eax; |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
102 cyg_uint32 vector; // if saved on interrupt contains intr vector |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
103 cyg_uint32 pc; |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
104 cyg_uint32 cs; |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
105 cyg_uint32 eflags; |
| 2 | 106 } HAL_SavedRegisters; |
| 107 | |
|
161
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
108 |
| 2 | 109 //----------------------------------------------------------------------------- |
| 110 // Exception handling function. | |
| 111 // This function is defined by the kernel according to this prototype. It is | |
| 112 // invoked from the HAL to deal with any CPU exceptions that the HAL does | |
| 113 // not want to deal with itself. It usually invokes the kernel's exception | |
| 114 // delivery mechanism. | |
| 115 externC void cyg_hal_deliver_exception( CYG_WORD code, CYG_ADDRWORD data ); | |
| 116 | |
| 117 //----------------------------------------------------------------------------- | |
| 118 // Bit manipulation routines | |
| 119 | |
|
161
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
120 #define HAL_LSBIT_INDEX(index, mask) \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
121 CYG_MACRO_START \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
122 asm volatile( "bsfl %1,%0\n" \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
123 : "=r" (index) \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
124 : "r" (mask) \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
125 ); \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
126 CYG_MACRO_END |
| 2 | 127 |
|
161
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
128 #define HAL_MSBIT_INDEX(index, mask) \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
129 CYG_MACRO_START \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
130 asm volatile( "bsrl %1,%0\n" \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
131 : "=r" (index) \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
132 : "r" (mask) \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
133 ); \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
134 CYG_MACRO_END |
| 2 | 135 |
| 136 //----------------------------------------------------------------------------- | |
| 137 // Context Initialization | |
| 138 // Initialize the context of a thread. | |
| 139 // Arguments: | |
| 140 // _sp_ name of variable containing current sp, will be written with new sp | |
| 141 // _thread_ thread object address, passed as argument to entry point | |
| 142 // _entry_ entry point address. | |
| 143 // _id_ bit pattern used in initializing registers, for debugging. | |
| 144 | |
|
161
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
145 #ifndef CYG_HAL_DEFAULT_CS |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
146 #define CYG_HAL_DEFAULT_CS 0x0008 |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
147 #endif |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
148 |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
149 #ifdef CYGHWR_HAL_I386_FPU |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
150 # ifdef CYGHWR_HAL_I386_FPU_SWITCH_LAZY |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
151 # define HAL_THREAD_INIT_FPU_CONTEXT_SPACE( __sp, __fpspace ) \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
152 __sp -= sizeof(HAL_FPU_Context); \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
153 __fpspace = __sp; |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
154 # define HAL_THREAD_INIT_FPU_CONTEXT( __regs, __fpspace ) \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
155 CYG_MACRO_START \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
156 cyg_ucount8 __i; \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
157 HAL_FPU_Context *__fpspace_ = (HAL_FPU_Context *)(__fpspace); \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
158 (__regs)->fpucontext = __fpspace_; \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
159 __fpspace_->fpstate_valid = 0; \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
160 for( __i = 0; __i < (sizeof(__fpspace_->fpstate)/sizeof(cyg_uint32)); __i++ ) \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
161 __fpspace_->fpstate[__i] = 0; \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
162 CYG_MACRO_END |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
163 # else |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
164 # define HAL_THREAD_INIT_FPU_CONTEXT_SPACE( __sp, __fpspace ) \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
165 (__fpspace) = (__fpspace); |
|
170
f664e0b5f88b
* include/hal_arch.h (HAL_THREAD_INIT_FPU_CONTEXT): Fix indirection to
jlarmour
parents:
161
diff
changeset
|
166 # define HAL_THREAD_INIT_FPU_CONTEXT( __regs, __fpspace ) \ |
|
f664e0b5f88b
* include/hal_arch.h (HAL_THREAD_INIT_FPU_CONTEXT): Fix indirection to
jlarmour
parents:
161
diff
changeset
|
167 CYG_MACRO_START \ |
|
f664e0b5f88b
* include/hal_arch.h (HAL_THREAD_INIT_FPU_CONTEXT): Fix indirection to
jlarmour
parents:
161
diff
changeset
|
168 cyg_ucount8 __i; \ |
|
f664e0b5f88b
* include/hal_arch.h (HAL_THREAD_INIT_FPU_CONTEXT): Fix indirection to
jlarmour
parents:
161
diff
changeset
|
169 HAL_FPU_Context *__fpspace_ = &((__regs)->fpucontext); \ |
|
f664e0b5f88b
* include/hal_arch.h (HAL_THREAD_INIT_FPU_CONTEXT): Fix indirection to
jlarmour
parents:
161
diff
changeset
|
170 __fpspace_->fpstate_valid = 0; \ |
|
f664e0b5f88b
* include/hal_arch.h (HAL_THREAD_INIT_FPU_CONTEXT): Fix indirection to
jlarmour
parents:
161
diff
changeset
|
171 for( __i = 0; __i < (sizeof(__fpspace_->fpstate)/sizeof(cyg_uint32)); __i++ ) \ |
|
f664e0b5f88b
* include/hal_arch.h (HAL_THREAD_INIT_FPU_CONTEXT): Fix indirection to
jlarmour
parents:
161
diff
changeset
|
172 __fpspace_->fpstate[__i] = 0; \ |
|
161
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
173 CYG_MACRO_END |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
174 # endif |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
175 #else |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
176 # define HAL_THREAD_INIT_FPU_CONTEXT_SPACE( __sp, __fpspace ) \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
177 (__fpspace) = (__fpspace); |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
178 # define HAL_THREAD_INIT_FPU_CONTEXT( __regs, __fpspace ) |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
179 #endif |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
180 |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
181 |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
182 #define HAL_THREAD_INIT_CONTEXT( _sparg_, _thread_, _entry_, _id_ ) \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
183 CYG_MACRO_START \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
184 register CYG_WORD* _sp_ = ((CYG_WORD*)((_sparg_) &~15)); \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
185 register CYG_WORD *_fpspace_ = NULL; \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
186 register HAL_SavedRegisters *_regs_; \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
187 \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
188 HAL_THREAD_INIT_FPU_CONTEXT_SPACE( _sp_, _fpspace_ ); \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
189 *(--_sp_) = (CYG_WORD)(0); \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
190 *(--_sp_) = (CYG_WORD)(0); \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
191 *(--_sp_) = (CYG_WORD)(_thread_); \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
192 *(--_sp_) = (CYG_WORD)(0); \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
193 \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
194 _regs_ = (HAL_SavedRegisters *) \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
195 ((unsigned long)_sp_ - sizeof(HAL_SavedRegisters)); \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
196 HAL_THREAD_INIT_FPU_CONTEXT( _regs_, _fpspace_ ); \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
197 _regs_->eflags = (CYG_WORD)(0x00000200); \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
198 _regs_->cs = (CYG_WORD)(CYG_HAL_DEFAULT_CS); \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
199 _regs_->pc = (CYG_WORD)(_entry_); \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
200 _regs_->vector = (CYG_WORD)(_id_); \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
201 _regs_->esp = (CYG_WORD) _sp_-4; \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
202 _regs_->ebp = (CYG_WORD)(_id_); \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
203 _regs_->esi = (CYG_WORD)(_id_); \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
204 _regs_->edi = (CYG_WORD)(_id_); \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
205 _regs_->eax = (CYG_WORD)(_id_); \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
206 _regs_->ebx = (CYG_WORD)(_id_); \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
207 _regs_->ecx = (CYG_WORD)(_id_); \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
208 _regs_->edx = (CYG_WORD)(_id_); \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
209 (_sparg_) = (CYG_ADDRESS) _regs_; \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
210 CYG_MACRO_END |
| 2 | 211 |
| 212 //----------------------------------------------------------------------------- | |
| 213 // Context switch macros. | |
| 214 // The arguments are pointers to locations where the stack pointer | |
| 215 // of the current thread is to be stored, and from where the sp of the | |
| 216 // next thread is to be fetched. | |
| 217 | |
| 218 externC void hal_thread_switch_context( CYG_ADDRESS to, CYG_ADDRESS from ); | |
| 219 externC void hal_thread_load_context( CYG_ADDRESS to ) | |
| 220 __attribute__ ((noreturn)); | |
| 221 | |
| 222 #define HAL_THREAD_SWITCH_CONTEXT(_fspptr_,_tspptr_) \ | |
| 223 hal_thread_switch_context((CYG_ADDRESS)_tspptr_,(CYG_ADDRESS)_fspptr_); | |
| 224 | |
| 225 #define HAL_THREAD_LOAD_CONTEXT(_tspptr_) \ | |
| 226 hal_thread_load_context( (CYG_ADDRESS)_tspptr_ ); | |
| 227 | |
| 228 //----------------------------------------------------------------------------- | |
| 229 // Execution reorder barrier. | |
| 230 // When optimizing the compiler can reorder code. In multithreaded systems | |
| 231 // where the order of actions is vital, this can sometimes cause problems. | |
| 232 // This macro may be inserted into places where reordering should not happen. | |
| 233 | |
| 234 #define HAL_REORDER_BARRIER() asm volatile ( "" : : : "memory" ) | |
| 235 | |
| 236 //----------------------------------------------------------------------------- | |
| 237 // Breakpoint support | |
| 238 // HAL_BREAKPOINT() is a code sequence that will cause a breakpoint to happen | |
| 239 // if executed. | |
| 240 // HAL_BREAKINST is the value of the breakpoint instruction and | |
| 241 // HAL_BREAKINST_SIZE is its size in bytes. | |
| 242 | |
|
72
da3908c9cd10
Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents:
66
diff
changeset
|
243 #define HAL_BREAKPOINT(_label_) \ |
|
da3908c9cd10
Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents:
66
diff
changeset
|
244 CYG_MACRO_START \ |
|
da3908c9cd10
Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents:
66
diff
changeset
|
245 asm volatile (" .globl " #_label_ ";" \ |
|
da3908c9cd10
Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents:
66
diff
changeset
|
246 #_label_":" \ |
|
da3908c9cd10
Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents:
66
diff
changeset
|
247 "int $3" \ |
|
da3908c9cd10
Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents:
66
diff
changeset
|
248 ); \ |
|
da3908c9cd10
Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents:
66
diff
changeset
|
249 CYG_MACRO_END |
| 2 | 250 |
|
72
da3908c9cd10
Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents:
66
diff
changeset
|
251 #define HAL_BREAKINST 0xCC |
|
da3908c9cd10
Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents:
66
diff
changeset
|
252 #define HAL_BREAKINST_SIZE 1 |
| 2 | 253 |
| 254 //----------------------------------------------------------------------------- | |
| 255 // Thread register state manipulation for GDB support. | |
| 256 | |
| 257 // Translate a stack pointer as saved by the thread context macros above into | |
| 258 // a pointer to a HAL_SavedRegisters structure. | |
| 259 #define HAL_THREAD_GET_SAVED_REGISTERS( _sp_, _regs_ ) \ | |
| 260 (_regs_) = (HAL_SavedRegisters *)(_sp_) | |
| 261 | |
| 262 // Copy a set of registers from a HAL_SavedRegisters structure into a | |
| 263 // GDB ordered array. | |
|
72
da3908c9cd10
Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents:
66
diff
changeset
|
264 |
|
161
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
265 externC void hal_get_gdb_registers(CYG_ADDRWORD *, HAL_SavedRegisters *); |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
266 externC void hal_set_gdb_registers(HAL_SavedRegisters *, CYG_ADDRWORD *); |
|
72
da3908c9cd10
Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents:
66
diff
changeset
|
267 |
|
da3908c9cd10
Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents:
66
diff
changeset
|
268 #define HAL_GET_GDB_REGISTERS( _aregval_, _regs_ ) \ |
|
161
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
269 hal_get_gdb_registers((CYG_ADDRWORD *)(_aregval_), (_regs_)) |
| 2 | 270 |
| 271 // Copy a GDB ordered array into a HAL_SavedRegisters structure. | |
|
72
da3908c9cd10
Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents:
66
diff
changeset
|
272 #define HAL_SET_GDB_REGISTERS( _regs_ , _aregval_ ) \ |
|
161
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
273 hal_set_gdb_registers((_regs_), (CYG_ADDRWORD *)(_aregval_)) |
| 2 | 274 |
| 275 //----------------------------------------------------------------------------- | |
| 276 // HAL setjmp | |
| 277 | |
| 278 #define CYGARC_JMP_BUF_SP 0 | |
| 279 #define CYGARC_JMP_BUF_EBP 1 | |
| 280 #define CYGARC_JMP_BUF_EBX 2 | |
| 281 #define CYGARC_JMP_BUF_ESI 3 | |
| 282 #define CYGARC_JMP_BUF_EDI 4 | |
| 283 #define CYGARC_JMP_BUF_PC 5 | |
| 284 | |
| 285 #define CYGARC_JMP_BUF_SIZE 6 | |
| 286 | |
| 287 typedef cyg_uint32 hal_jmp_buf[CYGARC_JMP_BUF_SIZE]; | |
| 288 | |
| 289 externC int hal_setjmp(hal_jmp_buf env); | |
| 290 externC void hal_longjmp(hal_jmp_buf env, int val); | |
| 291 | |
| 292 //----------------------------------------------------------------------------- | |
| 293 // Idle thread code. | |
| 294 // This macro is called in the idle thread loop, and gives the HAL the | |
| 295 // chance to insert code. Typical idle thread behaviour might be to halt the | |
| 296 // processor. | |
| 297 | |
|
42
94fd8fbfe8fe
Merge from eCos master repository on 1999-10-05-12:38:44-BST
jlarmour
parents:
6
diff
changeset
|
298 externC void hal_idle_thread_action(cyg_uint32 loop_count); |
| 2 | 299 |
|
42
94fd8fbfe8fe
Merge from eCos master repository on 1999-10-05-12:38:44-BST
jlarmour
parents:
6
diff
changeset
|
300 #define HAL_IDLE_THREAD_ACTION(_count_) hal_idle_thread_action(_count_) |
| 2 | 301 |
| 302 //----------------------------------------------------------------------------- | |
| 303 // Minimal and sensible stack sizes: the intention is that applications | |
| 304 // will use these to provide a stack size in the first instance prior to | |
| 305 // proper analysis. Idle thread stack should be this big. | |
| 306 | |
| 307 // THESE ARE NOT INTENDED TO BE MICROMETRICALLY ACCURATE FIGURES. | |
| 308 // THEY ARE HOWEVER ENOUGH TO START PROGRAMMING. | |
| 309 // YOU MUST MAKE YOUR STACKS LARGER IF YOU HAVE LARGE "AUTO" VARIABLES! | |
| 310 | |
| 311 // This is not a config option because it should not be adjusted except | |
| 312 // under "enough rope" sort of disclaimers. | |
| 313 | |
|
182
f62680ef1804
Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents:
170
diff
changeset
|
314 // Stack frame overhead per call. Four arguments, 3 local registers |
|
f62680ef1804
Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents:
170
diff
changeset
|
315 // (edi, esi, ebx), four local variables and return address. |
|
f62680ef1804
Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents:
170
diff
changeset
|
316 #define CYGNUM_HAL_STACK_FRAME_SIZE (12 * 4) |
| 2 | 317 |
|
182
f62680ef1804
Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents:
170
diff
changeset
|
318 // Stack needed for a context switch ( sizeof(HAL_SavedRegisters) ). |
|
f62680ef1804
Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents:
170
diff
changeset
|
319 #ifdef CYGHWR_HAL_I386_FPU |
|
202
353a011b23b8
Merge from eCos master repository on 2002-01-11-06:43:03-GMT
jlarmour
parents:
191
diff
changeset
|
320 # define CYGNUM_HAL_STACK_CONTEXT_SIZE ((4 * 12) + 108) |
|
182
f62680ef1804
Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents:
170
diff
changeset
|
321 #else |
|
f62680ef1804
Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents:
170
diff
changeset
|
322 # define CYGNUM_HAL_STACK_CONTEXT_SIZE (4 * 12) |
|
f62680ef1804
Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents:
170
diff
changeset
|
323 #endif |
| 2 | 324 |
| 325 // Interrupt + call to ISR, interrupt_end() and the DSR | |
| 326 #define CYGNUM_HAL_STACK_INTERRUPT_SIZE \ | |
|
182
f62680ef1804
Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents:
170
diff
changeset
|
327 ((4*CYGNUM_HAL_STACK_CONTEXT_SIZE) + 4 * CYGNUM_HAL_STACK_FRAME_SIZE) |
| 2 | 328 |
| 329 // We define a minimum stack size as the minimum any thread could ever | |
| 330 // legitimately get away with. We can throw asserts if users ask for less | |
| 331 // than this. Allow enough for three interrupt sources - clock, serial and | |
| 332 // one other | |
| 333 | |
|
182
f62680ef1804
Merge from eCos master repository on 2001-09-07-06:43:02-BST
jlarmour
parents:
170
diff
changeset
|
334 #if defined(CYGIMP_HAL_COMMON_INTERRUPTS_USE_INTERRUPT_STACK) |
| 2 | 335 |
| 336 // An interrupt stack which is large enough for all possible interrupt | |
| 337 // conditions (and only used for that purpose) exists. "User" stacks | |
| 338 // can therefore be much smaller | |
| 339 | |
| 340 # define CYGNUM_HAL_STACK_SIZE_MINIMUM \ | |
| 341 (2*CYGNUM_HAL_STACK_FRAME_SIZE + 2*CYGNUM_HAL_STACK_INTERRUPT_SIZE) | |
| 342 | |
| 343 #else | |
| 344 | |
| 345 // No separate interrupt stack exists. Make sure all threads contain | |
| 346 // a stack sufficiently large | |
|
72
da3908c9cd10
Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents:
66
diff
changeset
|
347 |
| 2 | 348 # define CYGNUM_HAL_STACK_SIZE_MINIMUM \ |
|
72
da3908c9cd10
Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents:
66
diff
changeset
|
349 (((2+3+10)*CYGNUM_HAL_STACK_INTERRUPT_SIZE) + \ |
| 2 | 350 (2*CYGNUM_HAL_STACK_FRAME_SIZE)) |
|
72
da3908c9cd10
Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents:
66
diff
changeset
|
351 |
| 2 | 352 #endif |
| 353 | |
| 354 // Now make a reasonable choice for a typical thread size. Pluck figures | |
| 355 // from thin air and say 15 call frames with an average of 16 words of | |
| 356 // automatic variables per call frame | |
|
72
da3908c9cd10
Merge from eCos master repository on 2000-02-17-18:56:14-GMT
jlarmour
parents:
66
diff
changeset
|
357 |
| 2 | 358 #define CYGNUM_HAL_STACK_SIZE_TYPICAL \ |
| 359 (CYGNUM_HAL_STACK_SIZE_MINIMUM + \ | |
| 360 15 * (CYGNUM_HAL_STACK_FRAME_SIZE+(16*4))) | |
| 361 | |
| 362 //-------------------------------------------------------------------------- | |
|
161
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
363 // Memory access macros |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
364 |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
365 #define CYGARC_CACHED_ADDRESS(x) (x) |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
366 #define CYGARC_UNCACHED_ADDRESS(x) (x) |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
367 #define CYGARC_PHYSICAL_ADDRESS(x) (x) |
| 2016 | 368 #define CYGARC_VIRTUAL_ADDRESS(x) (x) |
|
161
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
369 |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
370 //-------------------------------------------------------------------------- |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
371 // Region size finder |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
372 |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
373 #if CYGINT_HAL_I386_MEM_REAL_REGION_TOP |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
374 |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
375 externC cyg_uint8 *hal_i386_mem_real_region_top( cyg_uint8 *_regionend_ ); |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
376 |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
377 # define HAL_MEM_REAL_REGION_TOP( _regionend_ ) \ |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
378 hal_i386_mem_real_region_top( _regionend_ ) |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
379 #endif |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
380 |
|
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
381 //-------------------------------------------------------------------------- |
|
101
c37d3a9e1b28
Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
72
diff
changeset
|
382 // Macros for switching context between two eCos instances (jump from |
|
c37d3a9e1b28
Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
72
diff
changeset
|
383 // code in ROM to code in RAM or vice versa). |
|
161
ac086aa3217e
Merge from eCos master repository on 2001-06-08-21:11:51-BST
jlarmour
parents:
101
diff
changeset
|
384 |
|
101
c37d3a9e1b28
Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
72
diff
changeset
|
385 #define CYGARC_HAL_SAVE_GP() |
|
c37d3a9e1b28
Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
72
diff
changeset
|
386 #define CYGARC_HAL_RESTORE_GP() |
|
c37d3a9e1b28
Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
72
diff
changeset
|
387 |
|
c37d3a9e1b28
Merge from eCos master repository on 2000-06-16-07:47:03-BST
jlarmour
parents:
72
diff
changeset
|
388 //-------------------------------------------------------------------------- |
| 2 | 389 #endif // CYGONCE_HAL_HAL_ARCH_H |
| 390 // End of hal_arch.h |
