annotate packages/hal/mips/arch/current/src/vectors.S @ 10:d3fbcdfa1b2f ecos-sw-1999-05-29

Merge from eCos master repository on 1999-05-29-00:13:11-BST
author jlarmour
date Fri, 28 May 1999 16:43:09 +0000
parents ece80412419a
children 01ce82f3e11a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
1 ##=============================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
2 ##
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
3 ## vectors.S
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
4 ##
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
5 ## MIPS exception vectors
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
6 ##
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
7 ##=============================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
8 #####COPYRIGHTBEGIN####
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
9 #
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
10 # -------------------------------------------
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
11 # The contents of this file are subject to the Cygnus eCos Public License
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
12 # Version 1.0 (the "License"); you may not use this file except in
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
13 # compliance with the License. You may obtain a copy of the License at
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
14 # http://sourceware.cygnus.com/ecos
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
15 #
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
16 # Software distributed under the License is distributed on an "AS IS"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
17 # basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
18 # License for the specific language governing rights and limitations under
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
19 # the License.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
20 #
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
21 # The Original Code is eCos - Embedded Cygnus Operating System, released
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
22 # September 30, 1998.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
23 #
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
24 # The Initial Developer of the Original Code is Cygnus. Portions created
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
25 # by Cygnus are Copyright (C) 1998,1999 Cygnus Solutions. All Rights Reserved.
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
26 # -------------------------------------------
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
27 #
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
28 #####COPYRIGHTEND####
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
29 ##=============================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
30 #######DESCRIPTIONBEGIN####
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
31 ##
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
32 ## Author(s): nickg
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
33 ## Contributors: nickg
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
34 ## Date: 1998-02-04
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
35 ## Purpose: MIPS exception vectors
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
36 ## Description: This file defines the code placed into the exception
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
37 ## vectors. It also contains the first level default VSRs
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
38 ## that save and restore state for both exceptions and
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
39 ## interrupts.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
40 ##
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
41 ######DESCRIPTIONEND####
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
42 ##
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
43 ##=============================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
44
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
45 #include <pkgconf/system.h>
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
46 #include <pkgconf/hal.h>
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
47
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
48 #ifdef CYGPKG_KERNEL
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
49 # include <pkgconf/kernel.h>
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
50 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
51
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
52 #include <cyg/hal/arch.inc>
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
53
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
54 .extern cyg_instrument
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
55
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
56 ##-----------------------------------------------------------------------------
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
57 ## Hardware supplied vectors
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
58
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
59 .set noreorder
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
60
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
61 .section ".reset_vector","ax"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
62
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
63 # Reset vector at 0xBFC00000
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
64
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
65 FUNC_START(reset_vector)
8
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
66
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
67 lar v0,_start # jump to start
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
68 jr v0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
69 nop # (delay slot)
8
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
70
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
71 FUNC_END(reset_vector)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
72
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
73 .section ".debug_vector","ax"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
74
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
75 # Debug vector at 0xBFC00200
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
76
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
77 FUNC_START(debug_vector)
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
78 la k0,32
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
79 la k1,hal_vsr_table # Get VSR table
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
80 lw k1,32*4(k1) # load debug vector
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
81 jr k1 # go there
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
82 nop # (delay slot)
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
83 FUNC_END(debug_vector)
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
84
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
85 .section ".other_vector","ax"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
86
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
87 # Common vector at 0x80000080 or 0xBFC00180
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
88
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
89 FUNC_START(other_vector)
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
90 mfc0 k0,cause # K0 = exception cause
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
91 nop
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
92 andi k0,k0,0x7F # isolate exception code
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
93 la k1,hal_vsr_table # address of VSR table
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
94 add k1,k1,k0 # offset of VSR entry
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
95 lw k1,0(k1) # k1 = pointer to VSR
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
96 jr k1 # go there
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
97 nop # (delay slot)
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
98 FUNC_END(other_vector)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
99
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
100 .section ".utlb_vector","ax"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
101
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
102 FUNC_START(utlb_vector)
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
103 la k0,33
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
104 la k1,hal_vsr_table # Get VSR table
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
105 lw k1,33*4(k1) # load utlb vector
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
106 jr k1 # go there
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
107 nop # (delay slot)
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
108 FUNC_END(utlb_vector)
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
109
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
110 ##-----------------------------------------------------------------------------
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
111 ## Startup code
8
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
112
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
113 .text
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
114
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
115 FUNC_START(_start)
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
116
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
117 # Initialize hardware
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
118 hal_cpu_init
8
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
119 hal_diag_init
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
120 hal_mmu_init
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
121 hal_fpu_init
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
122 hal_memc_init
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
123 hal_intc_init
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
124 hal_cache_init
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
125 hal_timer_init
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
126
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
127 # Load Global Pointer register.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
128 la gp,_gp
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
129
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
130 # load initial stack pointer
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
131 la a0,__interrupt_stack
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
132 move sp,a0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
133
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
134 hal_mon_init
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
135
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
136 #ifdef CYG_HAL_STARTUP_ROM
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
137 # Copy data from ROM to RAM
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
138
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
139 .extern hal_copy_data
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
140 jal hal_copy_data
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
141 nop
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
142
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
143 #endif
8
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
144
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
145 # Zero BSS
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
146
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
147 .extern hal_zero_bss
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
148 jal hal_zero_bss
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
149 nop
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
150
8
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
151 # Call variant and platform HAL
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
152 # initialization routines.
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
153
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
154 .extern hal_variant_init
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
155 jal hal_variant_init
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
156 nop
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
157
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
158 .extern hal_platform_init
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
159 jal hal_platform_init
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
160 nop
8
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
161
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
162 # Call constructors
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
163 .extern cyg_hal_invoke_constructors
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
164 jal cyg_hal_invoke_constructors
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
165 nop
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
166
10
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 8
diff changeset
167 #if defined(CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS)
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
168 .extern initialize_stub
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
169 jal initialize_stub
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
170 nop
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
171 #endif
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
172
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
173 # Call cyg_start
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
174
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
175 .extern cyg_start
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
176 jal cyg_start
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
177 nop
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
178
8
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
179 9: b 9b # Loop if we return
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
180 nop # (delay slot)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
181
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
182 FUNC_END(_start )
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
183
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
184 ##-----------------------------------------------------------------------------
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
185 ## Default exception VSR.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
186 ## Saves machine state and calls external handling code.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
187
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
188 FUNC_START(__default_exception_vsr)
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
189
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
190 # We enter here with all of the CPU state still
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
191 # in its registers except:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
192 # K0 = vector index
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
193 # K1 = address of this function
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
194
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
195 move k1,sp # K1 = original SP
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
196
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
197 #ifdef CYG_HAL_ROM_MONITOR
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
198 # Switch to interrupt stack to handle exception
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
199 la sp,__interrupt_stack
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
200 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
201
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
202 addi sp,sp,-mips_exception_decrement
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
203 # space for registers + safety margin
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
204
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
205 mfc0 k0,cause
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
206 andi k0,k0,0x7F # isolate exception code
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
207 sw k0,mipsreg_vector(sp) # store vector
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
208
8
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
209 # store GPRs
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
210 .set noat
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
211 sw $0,(mipsreg_regs+0*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
212 sw $1,(mipsreg_regs+1*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
213 sw $2,(mipsreg_regs+2*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
214 sw $3,(mipsreg_regs+3*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
215 sw $4,(mipsreg_regs+4*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
216 sw $5,(mipsreg_regs+5*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
217 sw $6,(mipsreg_regs+6*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
218 sw $7,(mipsreg_regs+7*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
219 sw $8,(mipsreg_regs+8*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
220 sw $9,(mipsreg_regs+9*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
221 sw $10,(mipsreg_regs+10*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
222 sw $11,(mipsreg_regs+11*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
223 sw $12,(mipsreg_regs+12*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
224 sw $13,(mipsreg_regs+13*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
225 sw $14,(mipsreg_regs+14*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
226 sw $15,(mipsreg_regs+15*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
227 sw $16,(mipsreg_regs+16*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
228 sw $17,(mipsreg_regs+17*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
229 sw $18,(mipsreg_regs+18*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
230 sw $19,(mipsreg_regs+19*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
231 sw $20,(mipsreg_regs+20*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
232 sw $21,(mipsreg_regs+21*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
233 sw $22,(mipsreg_regs+22*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
234 sw $23,(mipsreg_regs+23*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
235 sw $24,(mipsreg_regs+24*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
236 sw $25,(mipsreg_regs+25*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
237 # sw $26,(mipsreg_regs+26*4)(sp) # == K0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
238 # sw $27,(mipsreg_regs+27*4)(sp) # == K1
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
239 sw $28,(mipsreg_regs+28*4)(sp) # == GP
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
240 # sw $29,(mipsreg_regs+29*4)(sp) # == SP
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
241 sw $30,(mipsreg_regs+30*4)(sp) # == FP
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
242 sw $31,(mipsreg_regs+31*4)(sp) # == RA
8
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
243 .set at
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
244
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
245 mfhi a0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
246 mflo a1
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
247 sw a0,mipsreg_hi(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
248 sw a1,mipsreg_lo(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
249
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
250 # K1 contains original SP
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
251 sw k1,(mipsreg_regs+29*4)(sp) # store in reg dump
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
252
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
253 # save remaining machine state registers
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
254 mfc0 t0,cause
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
255 mfc0 t1,status
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
256 mfc0 t2,cache
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
257 mfc0 t3,badvr
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
258 mfc0 t4,config
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
259 mfc0 t5,prid
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
260 mfc0 t6,epc
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
261
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
262 sw t0,mipsreg_cause(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
263 sw t1,mipsreg_sr(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
264 sw t2,mipsreg_cache(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
265 sw t3,mipsreg_badvr(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
266 sw t4,mipsreg_config(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
267 sw t5,mipsreg_prid(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
268 sw t6,mipsreg_pc(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
269
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
270 hal_fpu_save sp
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
271
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
272 # The machine state is now all saved on the stack.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
273
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
274 hal_diag_excpt_start
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
275
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
276 # Load Global Pointer register.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
277 la gp,_gp
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
278
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
279 move s0,sp # save pointer to saved state
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
280
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
281 addi sp,sp,-mips_stack_frame_size # make a null frame
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
282
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
283 # Need to set up back pointers etc. ???
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
284
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
285 la ra,restore_state # load return address
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
286
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
287 hal_cpu_except_enable # reenable exceptions
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
288
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
289 .extern exception_handler
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
290 j exception_handler # call C code
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
291 move a0,s0 # arg0 = register dump (delay slot)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
292
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
293 # When the exception handler returns, it will
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
294 # go back to restore_state, below.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
295
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
296 FUNC_END(__default_exception_vsr)
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
297
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
298 ##------------------------------------------------------------------------------
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
299 ## Default interrupt VSR.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
300 ## Saves machine state and calls appropriate ISR. When done, calls
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
301 ## interrupt_end() to finish up and possibly reschedule.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
302
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
303 FUNC_START(__default_interrupt_vsr)
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
304
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
305
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
306 # We enter here with all of the CPU state still
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
307 # in its registers except:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
308 # K0 = vector index
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
309 # K1 = address of this function
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
310
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
311 move k1,sp # K1 = original SP
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
312
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
313 addi sp,sp,-mips_exception_decrement
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
314 # space for registers + safety margin
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
315
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
316 sw k0,mipsreg_vector(sp) # store vector
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
317
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
318 # store GPRs
8
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
319 .set noat
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
320 sw $0,(mipsreg_regs+0*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
321 sw $1,(mipsreg_regs+1*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
322 sw $2,(mipsreg_regs+2*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
323 sw $3,(mipsreg_regs+3*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
324 sw $4,(mipsreg_regs+4*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
325 sw $5,(mipsreg_regs+5*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
326 sw $6,(mipsreg_regs+6*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
327 sw $7,(mipsreg_regs+7*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
328 sw $8,(mipsreg_regs+8*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
329 sw $9,(mipsreg_regs+9*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
330 sw $10,(mipsreg_regs+10*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
331 sw $11,(mipsreg_regs+11*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
332 sw $12,(mipsreg_regs+12*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
333 sw $13,(mipsreg_regs+13*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
334 sw $14,(mipsreg_regs+14*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
335 sw $15,(mipsreg_regs+15*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
336 sw $16,(mipsreg_regs+16*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
337 sw $17,(mipsreg_regs+17*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
338 sw $18,(mipsreg_regs+18*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
339 sw $19,(mipsreg_regs+19*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
340 sw $20,(mipsreg_regs+20*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
341 sw $21,(mipsreg_regs+21*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
342 sw $22,(mipsreg_regs+22*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
343 sw $23,(mipsreg_regs+23*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
344 sw $24,(mipsreg_regs+24*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
345 sw $25,(mipsreg_regs+25*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
346 # sw $26,(mipsreg_regs+26*4)(sp) # == K0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
347 # sw $27,(mipsreg_regs+27*4)(sp) # == K1
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
348 sw $28,(mipsreg_regs+28*4)(sp) # == GP
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
349 # sw $29,(mipsreg_regs+29*4)(sp) # == SP
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
350 sw $30,(mipsreg_regs+30*4)(sp) # == FP
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
351 sw $31,(mipsreg_regs+31*4)(sp) # == RA
8
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
352 .set at
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
353
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
354 mfhi a0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
355 mflo a1
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
356 sw a0,mipsreg_hi(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
357 sw a1,mipsreg_lo(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
358
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
359 # K1 contains original SP
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
360 sw k1,(mipsreg_regs+29*4)(sp) # store in reg dump
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
361
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
362 mfc0 t1,status
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
363 mfc0 t2,cache
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
364 mfc0 t3,epc
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
365
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
366 sw t1,mipsreg_sr(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
367 sw t2,mipsreg_cache(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
368 sw t3,mipsreg_pc(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
369
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
370 hal_fpu_save sp
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
371
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
372 # The machine state is now all saved on the stack.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
373
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
374 # Load Global Pointer register.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
375 la gp,_gp
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
376
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
377 #ifdef CYGFUN_HAL_COMMON_KERNEL_SUPPORT
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
378 .extern cyg_scheduler_sched_lock
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
379 la v0,cyg_scheduler_sched_lock
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
380 lw a0,0(v0)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
381 addi a0,a0,1
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
382 sw a0,0(v0)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
383 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
384
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
385 move s0,sp # save pointer to saved state
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
386
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
387 #ifdef CYGIMP_HAL_COMMON_INTERRUPTS_USE_INTERRUPT_STACK
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
388
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
389 la a0,__interrupt_stack # a0 = stack top
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
390 la a1,__interrupt_stack_base # a1 = stack base
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
391 sub a3,sp,a1 # a3 = sp - base
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
392 bltz a3,1f # if < 0 - not on istack
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
393 nop # delay slot
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
394 sub t0,a0,sp # t0 = top - sp
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
395 bgtz t0,8f # if > 0 - already on istack
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
396 nop # delay slot
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
397 1:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
398 move sp,a0 # switch to istack
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
399 8:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
400 addi sp,sp,-4 # space for old SP
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
401 sw s0,0(sp) # save old SP on stack
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
402
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
403 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
404
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
405 subu sp,sp,mips_stack_frame_size # make a null frame
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
406
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
407 # Need to set up back pointers etc. ???
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
408
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
409 # Decode external interrupt via interrupt controller
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
410
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
411 hal_intc_decode s2
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
412
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
413 #ifdef CYGIMP_HAL_COMMON_INTERRUPTS_CHAIN
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
414 move s1,zero # Just vector zero is supported
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
415 #else
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
416 move s1,s2 # Vector == interrupt number
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
417 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
418
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
419 # Here s1 is the number of the vector to be called and s2 is
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
420 # the number of the interrupt being serviced.
10
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 8
diff changeset
421
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 8
diff changeset
422 hal_diag_intr_start
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 8
diff changeset
423
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
424 #if defined(CYGPKG_KERNEL_INSTRUMENT) && defined(CYGDBG_KERNEL_INSTRUMENT_INTR)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
425
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
426 # Call cyg_instrument to record that this interrupt is being raised.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
427
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
428 li a0,0x0301 # a0 = type = INTR,RAISE
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
429 move a1,s1 # a1 = vector number
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
430 jal cyg_instrument # call instrument function
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
431 xor a2,a2,a2 # arg2 = 0 (delay slot)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
432 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
433
10
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 8
diff changeset
434 #if defined(CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT)
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 8
diff changeset
435 # If we are supporting Ctrl-C interrupts from GDB, we must squirrel
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 8
diff changeset
436 # away a pointer to the save interrupt state here so that we can
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 8
diff changeset
437 # plant a breakpoint at some later time.
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 8
diff changeset
438
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 8
diff changeset
439 .extern hal_saved_interrupt_state
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 8
diff changeset
440 la v0,hal_saved_interrupt_state
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 8
diff changeset
441 sw s0,0(v0)
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 8
diff changeset
442
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 8
diff changeset
443 #endif
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 8
diff changeset
444
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
445 sll s1,s1,2 # s1 = byte offset of vector
10
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 8
diff changeset
446
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 8
diff changeset
447 hal_cpu_except_enable # reenable exceptions
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 8
diff changeset
448
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
449 la t2,hal_interrupt_handlers # handler table
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
450 add t2,t2,s1 # address of ISR ptr
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
451 lw t2,0(t2) # ISR pointer
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
452
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
453 la a1,hal_interrupt_data # data table
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
454 add a1,a1,s1 # address of data ptr
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
455 lw a1,0(a1) # Data pointer
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
456
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
457 move a0,s2 # pass interrupt number
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
458
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
459 jalr t2 # call ISR via t2
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
460 nop # (delay slot)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
461
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
462 #ifdef CYGIMP_HAL_COMMON_INTERRUPTS_USE_INTERRUPT_STACK
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
463
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
464 # If we are returning from the last nested interrupt, move back
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
465 # to the thread stack. interrupt_end() must be called on the
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
466 # thread stack since it potentially causes a context switch.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
467 # Since we have arranged for the top of stack location to
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
468 # contain the sp we need to go back to here, just pop it off
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
469 # and put it in SP.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
470
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
471
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
472 lw sp,mips_stack_frame_size(sp) # sp = *sp
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
473 subu sp,sp,mips_stack_frame_size # make a null frame
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
474 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
475
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
476 #ifdef CYGFUN_HAL_COMMON_KERNEL_SUPPORT
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
477
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
478 # We only need to call _interrupt_end() when there is a kernel
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
479 # present to do any tidying up.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
480
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
481 # On return v0 bit 1 will indicate whether a DSR is
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
482 # to be posted. Pass this together with a pointer to
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
483 # the interrupt object we have just used to the
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
484 # interrupt tidy up routine.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
485
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
486 # Note that s0, s1 and s2 are defined to be preserved across
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
487 # calls by the calling convention, so they still contain
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
488 # the register dump, the vector offset and the interrupt number
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
489 # respectively.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
490
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
491 move a0,v0 # put ISR result in arg0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
492
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
493 la a1,hal_interrupt_objects # interrupt object table
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
494 add a1,a1,s1 # address of object ptr
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
495 lw a1,0(a1) # a1 = object ptr
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
496
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
497 move a2,s0 # arg3 = saved register dump
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
498
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
499 .extern interrupt_end
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
500 jal interrupt_end # call into C to finish off
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
501 nop # (delay slot)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
502
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
503 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
504
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
505 restore_state:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
506
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
507 # All done, restore CPU state and continue
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
508
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
509 addi sp,sp,mips_stack_frame_size # retrieve CPU state ptr
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
510
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
511 # Disable interrupts again while we restore state.
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
512
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
513 hal_diag_restore
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
514
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
515 hal_fpu_load sp
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
516
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
517 lw t0,mipsreg_cache(sp)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
518 lw t1,mipsreg_hi(sp)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
519 lw t2,mipsreg_lo(sp)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
520
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
521 mtc0 t0,cache
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
522 mthi t1
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
523 mtlo t2
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
524
8
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
525 # load GPRs
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
526 .set noat
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
527 # lw $0,(mipsreg_regs+0*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
528 lw $1,(mipsreg_regs+1*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
529 lw $2,(mipsreg_regs+2*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
530 lw $3,(mipsreg_regs+3*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
531 lw $4,(mipsreg_regs+4*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
532 lw $5,(mipsreg_regs+5*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
533 lw $6,(mipsreg_regs+6*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
534 lw $7,(mipsreg_regs+7*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
535 lw $8,(mipsreg_regs+8*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
536 lw $9,(mipsreg_regs+9*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
537 lw $10,(mipsreg_regs+10*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
538 lw $11,(mipsreg_regs+11*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
539 lw $12,(mipsreg_regs+12*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
540 lw $13,(mipsreg_regs+13*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
541 lw $14,(mipsreg_regs+14*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
542 lw $15,(mipsreg_regs+15*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
543 lw $16,(mipsreg_regs+16*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
544 lw $17,(mipsreg_regs+17*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
545 lw $18,(mipsreg_regs+18*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
546 lw $19,(mipsreg_regs+19*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
547 lw $20,(mipsreg_regs+20*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
548 lw $21,(mipsreg_regs+21*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
549 lw $22,(mipsreg_regs+22*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
550 lw $23,(mipsreg_regs+23*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
551 lw $24,(mipsreg_regs+24*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
552 lw $25,(mipsreg_regs+25*4)(sp)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
553 # lw $26,(mipsreg_regs+26*4)(sp) # == K0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
554 # lw $27,(mipsreg_regs+27*4)(sp) # == K1
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
555 lw $28,(mipsreg_regs+28*4)(sp) # == GP
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
556 # lw $29,(mipsreg_regs+29*4)(sp) # == SP
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
557 lw $30,(mipsreg_regs+30*4)(sp) # == FP
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
558 lw $31,(mipsreg_regs+31*4)(sp) # == RA
8
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
559 .set at
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
560
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
561 lw k0,mipsreg_pc(sp) # K0 = return PC
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
562 lw k1,mipsreg_sr(sp) # K1 = saved SR
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
563 lw sp,(mipsreg_regs+29*4)(sp) # load SP
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
564
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
565 # Invoke CPU specific mechanism for returning from this
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
566 # exception
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
567
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
568 hal_cpu_eret k0,k1
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
569
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
570 FUNC_END(__default_interrupt_vsr)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
571
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
572 hal_intc_decode_data
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
573
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
574 ##-----------------------------------------------------------------------------
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
575 ## Execute pending DSRs on the interrupt stack with interrupts enabled.
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
576 ## Note: this can only be called from code running on a thread stack
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
577
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
578 #ifdef CYGIMP_HAL_COMMON_INTERRUPTS_USE_INTERRUPT_STACK
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
579 .extern cyg_interrupt_call_pending_DSRs
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
580
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
581 FUNC_START(hal_interrupt_stack_call_pending_DSRs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
582 mfc0 t0,status # get status register value
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
583 la v0,__interrupt_stack # v0 = interrupt stack
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
584 move v1,sp # v1 = original stack ptr
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
585 move sp,v0 # sp = interrupt stack
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
586 addi sp,sp,-32 # make a null frame
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
587 sw v1,16(sp) # save old sp
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
588 sw ra,20(sp) # save old ra
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
589 sw t0,24(sp) # save old sr
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
590
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
591 hal_cpu_int_enable
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
592
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
593 jal cyg_interrupt_call_pending_DSRs # call back to kernel
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
594 nop
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
595
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
596 lw a0,24(sp) # get status reg
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
597
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
598 hal_cpu_int_merge a0 # merge with current SR
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
599
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
600 lw ra,20(sp) # restore ra
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
601 lw sp,16(sp) # restore sp
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
602
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
603 jr ra # go back
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
604 nop # delay slot
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
605
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
606 FUNC_END(hal_interrupt_stack_call_pending_DSRs)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
607 #endif
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
608
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
609
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
610 // Short circuit in case any code tries to use "__gccmain()"
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
611 FUNC_START(__gccmain)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
612 jr ra
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
613 FUNC_END(__gccmain)
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
614
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
615
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
616 ##-----------------------------------------------------------------------------
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
617 ## Interrupt Stack.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
618 ## Used during intialization and for executing ISRs.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
619
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
620 .bss
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
621
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
622 .balign 16
8
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
623 .global cyg_interrupt_stack_base
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
624 cyg_interrupt_stack_base:
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
625 __interrupt_stack_base:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
626 .rept CYGNUM_HAL_COMMON_INTERRUPTS_STACK_SIZE
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
627 .byte 0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
628 .endr
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
629 .balign 16
8
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
630 .global cyg_interrupt_stack
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
631 cyg_interrupt_stack:
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
632 __interrupt_stack:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
633
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
634 .long 0,0,0,0,0,0,0,0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
635
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
636 ##-----------------------------------------------------------------------------
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
637 ## VSR table.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
638 ## The main interrupt code indirects through here to find the VSR
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
639 ## to execute for each architecture defined interrupt.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
640 ## This is only used for simulated targets, on real targets a fixed location VSR
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
641 ## table is now allocated at 0x80000100.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
642
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
643 #ifndef CYG_HAL_MIPS_VSR_TABLE_DEFINED
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
644
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
645 ## .section ".vsr_table","a"
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
646
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
647 .data
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
648
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
649 .globl hal_vsr_table
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
650
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
651 hal_vsr_table:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
652 .long __default_interrupt_vsr
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
653 .rept 63
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
654 .long __default_exception_vsr
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
655 .endr
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
656
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
657 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
658
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
659 #------------------------------------------------------------------------------
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
660 # Interrupt vector tables.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
661 # These tables contain the isr, data and object pointers used to deliver
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
662 # interrupts to user code.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
663 # hal_interrupt_level contains the interrupt level set by
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
664 # HAL_INTERRUPT_CONFIGURE().
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
665 # This is a default set that provide support only for the 6 external
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
666 # interrupts in the status/cause registers. Platforms or boards are expected
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
667 # to define their own versions of these if they have their own interrupt mappings.
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
668
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
669 #ifndef CYG_HAL_MIPS_ISR_TABLES_DEFINED
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
670
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
671 .extern hal_default_isr
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
672
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
673 .data
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
674
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
675 .globl hal_interrupt_handlers
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
676 hal_interrupt_handlers:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
677 .long hal_default_isr
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
678 .long hal_default_isr
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
679 .long hal_default_isr
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
680 .long hal_default_isr
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
681 .long hal_default_isr
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
682 .long hal_default_isr
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
683
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
684
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
685 .globl hal_interrupt_data
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
686 hal_interrupt_data:
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
687 .rept 6
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
688 .long 0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
689 .endr
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
690
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
691 .globl hal_interrupt_objects
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
692 hal_interrupt_objects:
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
693 .rept 6
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
694 .long 0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
695 .endr
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
696
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
697 #endif
8
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 6
diff changeset
698
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
699 ##-----------------------------------------------------------------------------
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
700 ## end of vectors.S
6
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
701
d376b777e2ce Merge from eCos master repository on 1999-05-14-19:27:43-BST
jlarmour
parents: 2
diff changeset
702