annotate packages/hal/sparclite/arch/current/src/context.S @ 2:443894e2e912 ecos-v1_2_1-release

Block commit of eCos version 1.2.1
author jlarmour
date Tue, 11 May 1999 12:24:34 +0000
parents
children ece80412419a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
1 /*=============================================================================
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
2 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
3 // context.S
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
4 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
5 // SPARClite context switch code
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
6 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
7 //=============================================================================
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
8 //####COPYRIGHTBEGIN####
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
9 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
10 // -------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
11 // The contents of this file are subject to the Cygnus eCos Public License
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
12 // Version 1.0 (the "License"); you may not use this file except in
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
13 // compliance with the License. You may obtain a copy of the License at
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
14 // http://sourceware.cygnus.com/ecos
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
15 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
16 // Software distributed under the License is distributed on an "AS IS"
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
17 // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
18 // License for the specific language governing rights and limitations under
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
19 // the License.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
20 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
21 // The Original Code is eCos - Embedded Cygnus Operating System, released
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
22 // September 30, 1998.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
23 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
24 // The Initial Developer of the Original Code is Cygnus. Portions created
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
25 // by Cygnus are Copyright (C) 1998,1999 Cygnus Solutions. All Rights Reserved.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
26 // -------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
27 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
28 //###COPYRIGHTEND####
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
29 //=============================================================================
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
30 //#####DESCRIPTIONBEGIN####
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
31 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
32 // Author(s): nickg, gthomas, hmt
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
33 // Contributors: nickg, gthomas, hmt
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
34 // Date: 1998-12-15
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
35 // Purpose: SPARClite context switch code
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
36 // Description: This file contains implementations of the thread context
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
37 // switch routines. It also contains the longjmp() and setjmp()
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
38 // routines.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
39 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
40 //####DESCRIPTIONEND####
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
41 //
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
42 //===========================================================================*/
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
43
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
44 #include <pkgconf/hal.h>
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
45
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
46 #include <cyg/hal/vectors.h>
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
47
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
48 #define DELAYS_AFTER_WRPSR_SAME_WINDOW
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
49 #define DELAYS_AFTER_WRWIM
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
50
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
51 .text
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
52
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
53 ! ------------------------------------------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
54 ! hal_thread_switch_context
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
55 ! Switch thread contexts
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
56 ! %o0 = address of sp of next thread to execute
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
57 ! %o1 = address of sp save location of current thread
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
58
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
59 .global hal_thread_switch_context
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
60 hal_thread_switch_context:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
61
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
62 ! First take the stack down to make room for the saved register
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
63 ! state, including a window save area at the base. Leave the
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
64 ! current window save area undisturbed. It is unused within the
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
65 ! save but will become current again when we continue in this
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
66 ! context. This lets us do this whole piece of work without
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
67 ! diabling interrupts for too long, since, for example, we can
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
68 ! lower the stack atomically with one instruction:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
69 sub %sp, SAVE_REGS_SIZE, %sp
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
70 st %sp, [ %o1 ] ! return SP for this thread
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
71
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
72 std %l0, [%sp + 0 * 4] ! save L & I registers
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
73 std %l2, [%sp + 2 * 4]
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
74 std %l4, [%sp + 4 * 4]
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
75 std %l6, [%sp + 6 * 4]
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
76
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
77 std %i0, [%sp + 8 * 4]
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
78 std %i2, [%sp + 10 * 4]
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
79 std %i4, [%sp + 12 * 4]
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
80 std %i6, [%sp + 14 * 4]
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
81
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
82 #ifdef CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
83 st %o7, [%sp + 31 * 4] ! save only the return address
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
84 ! and no need to preserve %o0 even though it is restored
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
85 #else // save a maximal context
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
86 st %g1, [%sp + 17 * 4] ! save G & O registers
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
87 std %g2, [%sp + 18 * 4]
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
88 std %g4, [%sp + 20 * 4]
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
89 std %g6, [%sp + 22 * 4]
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
90
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
91 std %o0, [%sp + 24 * 4]
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
92 std %o2, [%sp + 26 * 4]
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
93 std %o4, [%sp + 28 * 4]
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
94 std %o6, [%sp + 30 * 4]
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
95 #endif // !CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
96 ! and save the CWP in %g0 save place
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
97 rd %psr, %g7
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
98 st %g7, [%sp + 16 * 4]
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
99
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
100 ! Now load the destination thread by dropping through
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
101 ! to hal_thread_load_context
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
102
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
103 ! ------------------------------------------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
104 ! hal_thread_load_context
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
105 ! Load thread context
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
106 ! %o0 = address of sp of next thread to execute
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
107 ! Note that this function is also the second half of hal_thread_switch_context
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
108 ! and is simply dropped into from it.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
109
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
110 .global hal_thread_load_context
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
111 hal_thread_load_context:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
112
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
113 ! Here, we are a leaf routine but with slightly odd properties.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
114 ! The stack is still the callers at this point but the register
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
115 ! set is up for grabs. So we can use globals:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
116
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
117 ld [ %o0 ], %g7 ! Get the next saved SP
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
118
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
119 ! DISABLE INTERRUPTS *ONLY* NOT TRAPS
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
120 rd %psr, %g6
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
121 or %g6, 0xfe0, %g5 ! PIL up to 15 leave traps enabled
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
122 wr %g5, %psr
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
123
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
124 ! force out all our callers register sets onto the stack
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
125 ! if necessary: the system will handily take care of this for
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
126 ! us as follows:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
127 save %sp, -16 * 4, %sp ! need all these to preserve
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
128 save %sp, -16 * 4, %sp ! the linked list property...
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
129 save %sp, -16 * 4, %sp
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
130 save %sp, -16 * 4, %sp
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
131 save %sp, -16 * 4, %sp
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
132 save %sp, -16 * 4, %sp
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
133 ! six of these is correct; a seventh would force out the current
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
134 ! set that was already saved manually above. Note that minimal
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
135 ! space is allowed on stack for locals and ins in case this
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
136 ! sequence itself gets interrupted and recurses too deep.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
137
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
138 ! now select the new window with traps disabled...
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
139 ! preserve ET, clear CWP
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
140 andn %g6, __WINBITS_MAXIMAL, %g6
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
141 andn %g6, 0x20, %g5 ! clear ET also into %g5
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
142
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
143 ! get new CWP from %g0 save place...
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
144 ld [%g7 + 16 * 4], %g4 ! %g7 holds the new stack pointer
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
145 and %g4, __WINBITS, %g4 ! preserve CWP bits
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
146
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
147 ! calculate a new WIM...
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
148 add %g4, 1, %g3 ! required invalid window number
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
149 and %g3, __WINBITS, %g3 ! modulo 8
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
150 mov 1, %g2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
151 sll %g2, %g3, %g2 ! converted to a mask for the WIM
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
152
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
153 ! DISABLE INTERRUPTS
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
154 wr %g5, %g4, %psr ! set CWP to new window, disable traps
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
155 wr %g2, %wim ! and WIM to new value
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
156 nop
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
157 nop
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
158 nop
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
159
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
160 ! Must do this atomically so that the registers match the stack.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
161 ! After locals and ins are loaded, we are conformant to the PCS
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
162 ! so can re-enable interrupts.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
163 mov %g7, %sp ! target sp in situ (%sp = %o6)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
164
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
165 ldd [%sp + 0 * 4], %l0 ! restore L & I registers
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
166 ldd [%sp + 2 * 4], %l2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
167 ldd [%sp + 4 * 4], %l4
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
168 ldd [%sp + 6 * 4], %l6
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
169
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
170 ldd [%sp + 8 * 4], %i0
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
171 ldd [%sp + 10 * 4], %i2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
172 ldd [%sp + 12 * 4], %i4
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
173 ldd [%sp + 14 * 4], %i6
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
174
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
175 ! ENABLE INTERRUPTS
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
176 wr %g6, %g4, %psr ! set new CWP and old ET
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
177 nop
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
178 nop
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
179 nop
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
180
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
181 ! now load the rest of the context; we can be interrupted here, but
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
182 ! that is OK, other state will be preserved in that case...
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
183
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
184 #ifdef CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
185 ld [%sp + 24 * 4], %o0 ! must load the initial argument
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
186 #else // restore a maximal context
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
187 ld [%sp + 17 * 4], %g1
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
188 ldd [%sp + 18 * 4], %g2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
189 ldd [%sp + 20 * 4], %g4
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
190 ldd [%sp + 22 * 4], %g6
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
191
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
192 ldd [%sp + 24 * 4], %o0
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
193 ldd [%sp + 26 * 4], %o2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
194 ldd [%sp + 28 * 4], %o4
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
195 #endif // !CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
196 ! %o6 = %sp, already set up
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
197 ld [%sp + 31 * 4], %o7 ! "return" address
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
198
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
199 retl
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
200 add %sp, SAVE_REGS_SIZE, %sp ! and set the stack back
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
201 ! to its entrant value
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
202
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
203 ! ------------------------------------------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
204 ! HAL longjmp, setjmp implementations
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
205
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
206 !FUNC_START(hal_setjmp)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
207 .global hal_setjmp
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
208 hal_setjmp:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
209 ! Treat this as a leaf routine, may as well.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
210 ! %o0 is the address of the buffer.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
211
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
212 std %l0, [%o0 + 0 * 4] ! save L & I registers
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
213 std %l2, [%o0 + 2 * 4]
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
214 std %l4, [%o0 + 4 * 4]
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
215 std %l6, [%o0 + 6 * 4]
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
216
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
217 std %i0, [%o0 + 8 * 4]
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
218 std %i2, [%o0 + 10 * 4]
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
219 std %i4, [%o0 + 12 * 4]
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
220 std %i6, [%o0 + 14 * 4]
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
221
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
222 #ifdef CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
223 std %o6, [%o0 + 30 * 4] ! just save %sp and return address
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
224 #else // save a maximal context
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
225 st %g1, [%o0 + 17 * 4] ! save G & O registers
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
226 std %g2, [%o0 + 18 * 4]
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
227 std %g4, [%o0 + 20 * 4]
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
228 std %g6, [%o0 + 22 * 4]
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
229
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
230 std %o0, [%o0 + 24 * 4]
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
231 std %o2, [%o0 + 26 * 4]
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
232 std %o4, [%o0 + 28 * 4]
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
233 std %o6, [%o0 + 30 * 4]
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
234 #endif // !CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
235
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
236 ! and save the CWP in %g0 save place
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
237 rd %psr, %g7
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
238 st %g7, [%o0 + 16 * 4]
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
239
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
240 ! DISABLE INTERRUPTS *ONLY* NOT TRAPS
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
241 or %g7, 0xfe0, %g6 ! PIL up to 15 leave traps enabled
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
242 wr %g6, %psr
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
243
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
244 ! force out all our callers register sets onto the stack
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
245 ! if necessary: the system will handily take care of this for
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
246 ! us as follows:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
247 save %sp, -16 * 4, %sp ! need all these to preserve
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
248 save %sp, -16 * 4, %sp ! the linked list property...
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
249 save %sp, -16 * 4, %sp
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
250 save %sp, -16 * 4, %sp
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
251 save %sp, -16 * 4, %sp
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
252 save %sp, -16 * 4, %sp
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
253 ! six of these is correct; a seventh would force out the current
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
254 ! set that was already saved manually above. Note that minimal
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
255 ! space is allowed on stack for locals and ins in case this
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
256 ! sequence itself gets interrupted and recurses too deep.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
257
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
258 ! (after all, we are about to call deeper not shallower, otherwise
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
259 ! using setjmp is inappropriate)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
260
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
261 ! ENABLE INTERRUPTS
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
262 wr %g7, %psr ! set CWP back to as-was
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
263 nop
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
264 nop
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
265 nop
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
266
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
267 #ifndef CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
268 ldd [%o0 + 22 * 4], %g6 ! preserve %g7 and %g6
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
269 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
270
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
271 retl ! ret and return zero to indicate
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
272 mov 0, %o0 ! not longjumped-to
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
273
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
274 ! hal_longjmp loads state from arg0 and returns arg1
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
275 !FUNC_START(hal_longjmp)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
276 .global hal_longjmp
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
277 hal_longjmp:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
278 ! This is kind of a leaf routine, it returns elsewhere
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
279 ! %o0 is the address of the buffer.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
280 ! %o1 is the value to return in %o0 (since we are a leaf)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
281
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
282 mov %o0, %g7 ! keep the pointer handy
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
283 mov %o1, %g1 ! and the return value
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
284 ! now select the new window with traps disabled...
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
285 rd %psr, %g6
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
286 ! preserve ET, clear CWP
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
287 andn %g6, __WINBITS_MAXIMAL, %g6
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
288 andn %g6, 0x20, %g5 ! clear ET also into %g5
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
289
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
290 ! get new CWP from %g0 save place...
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
291 ld [%g7 + 16 * 4], %g4 ! %g7 holds the new stack pointer
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
292 and %g4, __WINBITS, %g4 ! preserve CWP bits
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
293
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
294 ! calculate a new WIM...
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
295 add %g4, 1, %g3 ! required invalid window number
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
296 and %g3, __WINBITS, %g3 ! modulo 8
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
297 mov 1, %g2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
298 sll %g2, %g3, %g2 ! converted to a mask for the WIM
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
299
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
300 ! DISABLE INTERRUPTS
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
301 wr %g5, %g4, %psr ! set CWP to new window, disable traps
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
302 wr %g2, %wim ! and WIM to new value
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
303 nop
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
304 nop
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
305 nop
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
306
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
307 ! Must do this atomically so that the registers match the stack.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
308 ! After locals and ins are loaded, we are conformant to the PCS
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
309 ! so can re-enable interrupts.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
310
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
311 ldd [%g7 + 0 * 4], %l0 ! restore L & I registers
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
312 ldd [%g7 + 2 * 4], %l2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
313 ldd [%g7 + 4 * 4], %l4
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
314 ldd [%g7 + 6 * 4], %l6
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
315
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
316 ldd [%g7 + 8 * 4], %i0
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
317 ldd [%g7 + 10 * 4], %i2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
318 ldd [%g7 + 12 * 4], %i4
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
319 ldd [%g7 + 14 * 4], %i6
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
320
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
321 ld [%g7 + 30 * 4], %sp ! %o6 = %sp, set up now so as to conform
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
322 ! to PCS and so be interruptible
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
323 ! ENABLE INTERRUPTS
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
324 wr %g6, %g4, %psr ! set new CWP and old ET
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
325 nop
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
326 nop
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
327 nop
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
328
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
329 ! now load the rest of the context; we can be interrupted here, but
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
330 ! that is OK, other state will be preserved in that case...
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
331 #ifdef CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
332 ! we are not preserving globals...
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
333 ! %o6 = %sp, already set up
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
334 ld [%g7 + 31 * 4], %o7 ! "return" address
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
335 retl ! %g1 still holds the return value
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
336 mov %g1, %o0
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
337
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
338 #else // load a maximal context
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
339 mov %g7, %o0 ! original pointer was in %o0 anyway
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
340
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
341 ldd [%o0 + 18 * 4], %g2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
342 ldd [%o0 + 20 * 4], %g4
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
343 ldd [%o0 + 22 * 4], %g6
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
344
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
345 ld [%o0 + 25 * 4], %o1 ! %o0 = original pointer
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
346 ldd [%o0 + 26 * 4], %o2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
347 ldd [%o0 + 28 * 4], %o4
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
348 ! %o6 = %sp, already set up
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
349 ld [%o0 + 31 * 4], %o7 ! "return" address
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
350
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
351 ! %g1 still holds the return value; want to get this into %o0
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
352 ! and restore %g1 from the saved state; %o0 is the state pointer:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
353 ! g1 = R, o0 = P
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
354 xor %o0, %g1, %g1 ! g1 = R^P, o0 = P
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
355 xor %o0, %g1, %o0 ! g1 = R^P, o0 = R
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
356 xor %o0, %g1, %g1 ! g1 = P, o0 = R all done
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
357
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
358 retl
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
359 ld [%g1 + 17 * 4], %g1 ! and finally restore %g1
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
360 #endif // !CYGDBG_HAL_COMMON_CONTEXT_SAVE_MINIMUM
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
361
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
362 ! ------------------------------------------------------------------------------
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
363 ! end of context.S
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
364
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
365
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents:
diff changeset
366