annotate packages/hal/mn10300/arch/current/src/vectors.S @ 64:c38311975d4f ecos-sw-2000-01-28

Merge from eCos master repository on 2000-01-28-04:28:11-GMT
author jlarmour
date Fri, 28 Jan 2000 04:59:39 +0000
parents 641b639be825
children bf00f99aec69
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 ## MN10300 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####
64
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 30
diff changeset
9 #
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 30
diff changeset
10 # -------------------------------------------
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 30
diff changeset
11 # The contents of this file are subject to the Red Hat eCos Public License
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 30
diff changeset
12 # Version 1.0 (the "License"); you may not use this file except in
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 30
diff changeset
13 # compliance with the License. You may obtain a copy of the License at
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 30
diff changeset
14 # http://sourceware.cygnus.com/ecos
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 30
diff changeset
15 #
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 30
diff changeset
16 # Software distributed under the License is distributed on an
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 30
diff changeset
17 # basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 30
diff changeset
18 # License for the specific language governing rights and limitations under
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 30
diff changeset
19 # the License.
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 30
diff changeset
20 #
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 30
diff changeset
21 # The Original Code is eCos - Embedded Configurable Operating System,
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 30
diff changeset
22 # released September 30, 1998.
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 30
diff changeset
23 #
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 30
diff changeset
24 # The Initial Developer of the Original Code is Red Hat.
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 30
diff changeset
25 # Portions created by Red Hat are
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 30
diff changeset
26 # Copyright (C) 1998, 1999, 2000 Red Hat, Inc.
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 30
diff changeset
27 # All Rights Reserved.
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 30
diff changeset
28 # -------------------------------------------
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 30
diff changeset
29 #
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
30 #####COPYRIGHTEND####
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 #######DESCRIPTIONBEGIN####
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
33 ##
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
34 ## Author(s): nickg
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
35 ## Contributors: nickg
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
36 ## Date: 1997-10-16
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
37 ## Purpose: MN10300 exception vectors
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
38 ## Description: This file defines the code placed into the exception
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
39 ## vectors. It also contains the first level default VSRs
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
40 ## that save and restore state for both exceptions and
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
41 ## interrupts.
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 ######DESCRIPTIONEND####
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 ##=============================================================================
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
46
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
47 #include <pkgconf/hal.h>
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
48
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
49 #ifdef CYGPKG_KERNEL
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
50
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
51 #include <pkgconf/kernel.h>
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
52
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
53 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
54
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
55 #include <cyg/hal/arch.inc>
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
56
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
57
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
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
60 .file "vectors.S"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
61
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
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
64 .section ".vectors","ax"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
65
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
66 .globl reset_vector
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
67
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
68 reset_vector:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
69 # Reset vector
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
70 jmp _start
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
71
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
72 .p2align 3
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
73
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
74 # NMI vector
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
75 jmp __nmi
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
76
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
77 .p2align 3
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
78
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
79 # Trap vector
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
80 jmp __trap
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
81
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
82 ##-----------------------------------------------------------------------------
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
83 ## NMI vector
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 .globl __nmi
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
86 __nmi:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
87 add -4,sp # space for SP
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
88 hal_cpu_save_all # push all registers
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
89 mov (_hal_vsr_table+28),a0
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
90 jmp (a0)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
91
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
92 ##-----------------------------------------------------------------------------
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
93 ## Trap vector
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
94
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
95 .globl __trap
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
96 __trap:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
97 add -8,sp # space for SP and PSW
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
98 hal_cpu_save_all # push all registers
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
99 mov (_hal_vsr_table+32),a0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
100 jmp (a0)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
101
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
102 ##-----------------------------------------------------------------------------
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
103 ## Macro to define a hardware VSR
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
104
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
105 .macro hardware_vector name
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
106 .globl __hardware_vector_\name
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
107 __hardware_vector_\name:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
108 add -4,sp # space for SP
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
109 hal_cpu_save_all
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
110 mov \name,d0 # d0 = vector id
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
111 mov d0,(0,sp) # save in dummy stack loc
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
112 mov _hal_vsr_table,a0 # a0 = vsr table
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
113 add \name<<2,a0 # a0 = &required vsr
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
114 mov (a0),a0 # a0 = required vsr
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
115 jmp (a0) # go there
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
116 .endm
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
117
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
118 ##-----------------------------------------------------------------------------
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
119 ## Hardware Vectors. These are pointed to by the registers in
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
120 ## mn10300_interrupt_vectors and must be in the range 0x4000XXXX.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
121
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
122 hardware_vector 0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
123 hardware_vector 1
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
124 hardware_vector 2
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
125 hardware_vector 3
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
126 hardware_vector 4
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
127 hardware_vector 5
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
128 hardware_vector 6
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 ##-----------------------------------------------------------------------------
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
131 ## Startup code
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
132
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
133 .text
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
134
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
135 .globl _start
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
136 _start:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
137
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
138 # set up stack
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
139
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
140 mov __interrupt_stack,a0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
141 sub 8,a0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
142 mov a0,sp
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
143
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
144 # Initialize hardware
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
145 hal_cpu_init
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
146 hal_mmu_init
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
147 hal_memc_init
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
148 hal_diag_init
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
149 hal_intc_init
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
150 hal_cache_init
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
151 hal_timer_init
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
152 hal_mon_init
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
153
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
154 #ifdef CYG_HAL_STARTUP_ROM
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
155
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
156 # Copy data from ROM to RAM
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
157
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
158 mov __rom_data_start,a0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
159 mov __ram_data_end,a1
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
160 mov __ram_data_start,a2
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
161
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
162 cmp a2,a1
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
163 beq 8f
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
164 1:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
165 movbu (a0),d0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
166 movbu d0,(a2)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
167 inc a0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
168 inc a2
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
169 cmp a2,a1
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
170 bne 1b
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
171 8:
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 #endif
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 # Clear BSS
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
176 mov __bss_start,a0
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
177 mov __bss_end,a1
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
178
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
179 cmp a0,a1
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
180 beq 8f
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
181 clr d0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
182 1:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
183 movbu d0,(a0)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
184 inc a0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
185 cmp a0,a1
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
186 bne 1b
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
187 8:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
188
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
189 # Call variant and platform HAL
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
190 # initialization routines.
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
191
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
192 .extern _hal_variant_init
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
193 call _hal_variant_init,[],0
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
194
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
195 .extern _hal_platform_init
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
196 call _hal_platform_init,[],0
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
197
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
198 # Call constructors
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
199
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
200 .extern _cyg_hal_invoke_constructors
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
201 call _cyg_hal_invoke_constructors,[],0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
202
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
203 #ifdef CYGDBG_HAL_DEBUG_GDB_INCLUDE_STUBS
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
204 .extern _initialize_stub
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
205 call _initialize_stub,[],0
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
206 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
207
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
208 # Call cyg_start
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
209 clr d0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
210 mov d0,(4,sp)
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
211
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
212 .extern _cyg_start
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
213 call _cyg_start,[],0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
214
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
215 9:
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
216 bra 9b # Loop if we return
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
217
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
218 ##-----------------------------------------------------------------------------
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
219 ## The following macros are defined depending on whether the HAL is configured
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
220 ## to support the kernel or not.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
221
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
222 #ifdef CYGFUN_HAL_COMMON_KERNEL_SUPPORT
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
223
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
224 .extern cyg_scheduler_sched_lock
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
225
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
226 # Increment the scheduler lock
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
227
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
228 .macro increment_sched_lock reg=d0
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
229 mov (cyg_scheduler_sched_lock),\reg
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
230 inc \reg
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
231 mov \reg,(cyg_scheduler_sched_lock)
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
232 .endm
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
233
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
234 #else
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
235
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
236 .macro increment_sched_lock reg=d0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
237 .endm
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
238
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
239 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
240
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
241 ##-----------------------------------------------------------------------------
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
242 ## Default interrupt VSR
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
243
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
244 .text
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
245 .globl __default_interrupt_vsr
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
246 __default_interrupt_vsr:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
247
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
248 # We come here with all the registers pushed
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
249 # onto the stack.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
250
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
251 hal_diag_intr_start
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
252
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
253 increment_sched_lock
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
254
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
255 #ifdef CYGIMP_HAL_COMMON_INTERRUPTS_USE_INTERRUPT_STACK
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
256 # Increment interrupt nesting counter
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
257 mov __interrupt_stack,a0 # A0 = interrupt stack top
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
258 mov sp,a2 # A2 = SP
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
259 cmp __interrupt_stack_base,a2 # compare with base of stack
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
260 blt 1f # if lt switch to int stack
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
261 cmp a0,a2 # compare sp with stack top
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
262 ble 8f # if le already on istack
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
263 1:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
264 mov a0,sp # switch to new SP
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
265 8:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
266 movm [a2],(sp) # save old SP
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
267
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
268 #else
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
269 mov sp,a2 # A2 = saved thread state
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
270 #endif
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 # Here A2 -> saved thread state on the threads own
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
273 # stack. We will be executing either on the same stack
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
274 # or on the interrupt stack, depending on config options.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
275
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
276 hal_intc_decode d3,a3,d0
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
277
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
278 # Here D3 contains the table byte offset of the vector to
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
279 # call.
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
280
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
281 #if defined(CYGPKG_KERNEL_INSTRUMENT) && defined(CYGDBG_KERNEL_INSTRUMENT_INTR)
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 # Call cyg_instrument to record that this interrupt is being raised.
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
284
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
285 .extern _cyg_instrument
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
286 add -16,sp # make space for return link + args
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
287 mov 0x0301,d0 # d0 = type = INTR,RAISE
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
288 mov (0,a2),d1 # d1 = arg1 = vector
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
289 mov d3,(12,sp) # (12,sp) = arg2 = table offset
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
290 calls _cyg_instrument # call instrumentation
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
291 add 16,sp # pop space
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 #endif
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
294
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
295 #ifdef CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
296 .extern _cyg_hal_gdb_isr
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
297 add -16,sp # make space for return link + args
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
298 mov (0,a2),d0 # d0 = vector
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
299 mov (56,a2),d1 # d1 = pc
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
300 calls _cyg_hal_gdb_isr # call GDB isr function
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
301 cmp 0x00,d0 # Call ISR proper?
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
302 beq 2f # (d0 is 0 when skipping
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
303 # to avoid DSR call)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
304 add 16,sp # pop space
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
305 #endif
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
306
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
307 #ifdef CYGSEM_HAL_COMMON_INTERRUPTS_ALLOW_NESTING
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
308
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
309 # To allow nested interrupts, we set the IE bit. We do
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
310 # not touch the IPL bits, so only higher priority interrupts
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
311 # will be nested on top of us. Also, new interrupts will not
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
312 # be delivered until the ISR calls
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
313 # Cyg_Interrupt::acknowledge_interrupt(). At some future point
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
314 # we may want to do the ack stuff here to allow immediate nesting.
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 or 0x0800,psw
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
317
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
318 #endif
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
319 #if defined(CYGDBG_HAL_DEBUG_GDB_CTRLC_SUPPORT)
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
320
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
321 # If we have Ctrl-C support enabled, save a pointer to the
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
322 # saved CPU state here so we can plant a breakpoint there if
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
323 # this is a ^C.
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
324
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
325 .extern _hal_saved_interrupt_state
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
326 mov a2,(_hal_saved_interrupt_state)
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
327
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
328 #endif
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
329
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
330 mov _hal_interrupt_handlers,a0 # a0 = isr table
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
331 mov (d3,a0),a0 # a0 = isr
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
332
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
333 mov _hal_interrupt_data,a1 # a1 = data table
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
334 mov (d3,a1),d1 # d1 = isr data
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
335
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
336 mov (0,a2),d0 # d0 = vector. (d3 is...
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
337 # ...adjusted for table reads)
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
338
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
339 add -16,sp # make space for return link
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
340
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
341 calls (a0) # call isr
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
342
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
343 # on return d0 bit 1 will indicate whether a DSR is
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
344 # to be posted. Pass this together with a pointer to
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
345 # the interrupt object we have just used to the
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
346 # interrupt tidy up routine.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
347
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
348 # D3 is defined to be saved across procedure calls, and
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
349 # should still contain the vector byte index. Similarly,
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
350 # A2 should still point to the saved machine state.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
351
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
352 #ifdef CYGDBG_HAL_DEBUG_GDB_BREAK_SUPPORT
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
353 # If interrupt was caused by GDB, the ISR call above
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
354 # is skipped by jumping here.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
355 2:
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
356 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
357
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
358 #ifdef CYGIMP_HAL_COMMON_INTERRUPTS_USE_INTERRUPT_STACK
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
359
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
360 # If we are returning from the last nested interrupt, move back
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
361 # to the thread stack. interrupt_end() must be called on the
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
362 # thread stack since it potentially causes a context switch.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
363
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
364 add 16,sp # pop call frame from int stack
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
365 movm (sp),[a3] # pop old sp
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
366 mov a3,sp # put in SP
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
367
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
368 add -16,sp # make call frame for call
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
369
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
370 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
371
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
372 #ifdef CYGFUN_HAL_COMMON_KERNEL_SUPPORT
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 # We only need to call _interrupt_end() when there is a kernel
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
375 # present to do any tidying up.
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 # Using the vector offset in D3, get the interrupt object pointer
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
378 # into D1.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
379 mov _hal_interrupt_objects,a0 # a0 = object table
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
380 mov (d3,a0),d1 # d1 = object
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
381
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
382 # Even when this is not the last nested interrupt, we must call
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
383 # _interrupt_end() to post the DSR and decrement the scheduler
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
384 # lock.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
385
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
386 mov a2,(12,sp) # arg3 = saved state.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
387
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
388 calls _interrupt_end # call interrupt end fn
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
389 #endif
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
390
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
391 add 16,sp # pop return link
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
392
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
393 # show_interrupts
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
394
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
395 hal_diag_restore
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
396
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
397 hal_cpu_load_all
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
398 add 4,sp
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
399 rti # and return
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
400
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
401 ##-----------------------------------------------------------------------------
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
402 ## Execute pending DSRs on the interrupt stack with interrupts enabled.
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
403 ## Note: this can only be called from code running on a thread stack
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
404
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
405 #ifdef CYGIMP_HAL_COMMON_INTERRUPTS_USE_INTERRUPT_STACK
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
406 .extern _cyg_interrupt_call_pending_DSRs
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
407 .global _hal_interrupt_stack_call_pending_DSRs
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
408
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
409 _hal_interrupt_stack_call_pending_DSRs:
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
410 movm [d2,a2],(sp) # save some work regs
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
411 mov __interrupt_stack,a0 # interrupt stack pointer
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
412 mov sp,a2 # save current SP
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
413 mov a0,sp # set SP to interrupt stack
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
414 hal_cpu_get_psw d2 # save PSW
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
415 hal_cpu_int_enable # enable interrupts
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
416
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
417 # Call kernel code to invoke DSRs.
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
418 calls _cyg_interrupt_call_pending_DSRs
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
419
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
420 # On return the old SP in a2 and the old PSW in d2 will
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
421 # have been preserved by the calling conventions.
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
422
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
423 hal_cpu_int_merge d2 # Restore previous PSW
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
424 mov a2,sp # restore old SP
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
425 movm (sp),[d2,a2] # Retrieve old work regs
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
426 ret [],0 # and return
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
427
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
428 #endif
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
429
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
430 ##-----------------------------------------------------------------------------
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
431 ## Default NMI VSR
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
432
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
433 .globl _cyg_hal_exception_handler
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
434
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
435 .text
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
436 .globl __default_nmi_vsr
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
437 __default_nmi_vsr:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
438
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
439 # We come here with all the registers saved
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
440 # on the stack.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
441
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
442 hal_diag_excpt_start
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
443
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
444 # Decode the cause of the NMI and cancel all the bits in all
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
445 # the registers. We need to clear any bits set in the ISR and
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
446 # then clear any bits set in the NMICR. Note that we can only
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
447 # access the ISR if the DCR:DE bit is set.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
448
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
449 movhu (NMICR),d0 # D0 = NMI Control register
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
450
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
451 movhu (DCR),d1 # D1 = Debug Control Register
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
452 mov d1,d2 # D2 = copy of DCR
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
453 movhu (ISR),d3 # D3 = Interrupt Status Register
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
454
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
455 or DCR_DE,d1 # Set DE bit
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
456 movhu d1,(DCR)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
457
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
458 movhu d3,(ISR) # clear ISR bits
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
459
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
460 movhu d2,(DCR) # restore DCR to original value
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
461
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
462 movhu d0,(NMICR) # clear NMI bits
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
463 and 0x7,d0 # LS 3 bits only
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
464
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
465 mov hal_lsbit_table,a0
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
466 movbu (d0,a0),d1 # D1 = NMI code
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
467 ## 0 = NMI
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
468 ## 1 = Watchdog
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
469 ## 2 = System Error
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
470
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
471 add 9,d1 # offset into exception number space
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
472
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
473 hal_cpu_clear_nmid
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
474
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
475 mov sp,a1 # a1 = saved state
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
476 mov a1,d0 # d0 = arg1 = saved state
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 add -16,sp # return link + args
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
479 mov d1,(16,sp) # save initial vector in spare save slot
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
480 mov d3,d1 # d1 = arg2 = ISR value
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
481
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
482 calls _cyg_hal_exception_handler # call C code
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
483
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
484 add 16,sp # pop args
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
485
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
486 hal_cpu_load_all
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
487
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
488 add 4,sp
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
489 rti
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
490
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
491 .globl hal_lsbit_table
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
492 hal_lsbit_table:
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
493 .byte 0, 0, 1, 0
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
494 .byte 2, 0, 1, 0
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
495 .byte 3, 0, 1, 0
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
496 .byte 2, 0, 1, 0
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
497
0
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 ## Default TRAP VSR
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
500
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
501 .text
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
502 .globl __default_trap_vsr
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
503 __default_trap_vsr:
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 # We come here with all the registers saved
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
506 # on the stack.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
507
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
508 add -8,sp # return link + arg
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
509 mov 3,d1 # 3 == TRAP trap
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
510 mov d1,(0,sp) # save in spare save slot
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
511 calls _cyg_hal_exception_handler # call C code
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
512 add 8,sp # pop args
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
513 hal_cpu_load_all
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
514 add 4,sp
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
515 rets
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
516
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
517 ##-----------------------------------------------------------------------------
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
518 ## VSR table. The VSRs pointed to by this table are called from the stubs
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
519 ## connected to the hardware.
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
520
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
521 #ifndef CYG_HAL_MN10300_VSR_TABLE_DEFINED
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
522
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
523 .data
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
524
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
525 .globl _hal_vsr_table
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
526 _hal_vsr_table:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
527 .long __default_interrupt_vsr
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
528 .long __default_interrupt_vsr
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
529 .long __default_interrupt_vsr
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
530 .long __default_interrupt_vsr
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
531 .long __default_interrupt_vsr
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
532 .long __default_interrupt_vsr
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
533 .long __default_interrupt_vsr
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
534 .long __default_nmi_vsr
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
535 .long __default_trap_vsr
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
536
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
537 .long __default_nmi_vsr
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
538 .long __default_nmi_vsr
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
539 .long __default_nmi_vsr
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
540
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
541 .long __default_nmi_vsr
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
542 .long __default_nmi_vsr
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
543 .long __default_nmi_vsr
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
544 .long __default_nmi_vsr
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
545 .long __default_nmi_vsr
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
546 .long __default_nmi_vsr
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
547 .long __default_nmi_vsr
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
548 .long __default_nmi_vsr
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
549 .long __default_nmi_vsr
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
550 .long __default_nmi_vsr
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
551 .long __default_nmi_vsr
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
552 .long __default_nmi_vsr
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
553 .long __default_nmi_vsr
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
554 .long __default_nmi_vsr
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
555 .long __default_nmi_vsr
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
556 .long __default_nmi_vsr
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
557 #endif
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
558
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
559 ##-----------------------------------------------------------------------------
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
560 ## Interrupt tables
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
561
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
562 .data
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
563
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
564 .extern _hal_default_isr
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
565
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
566 .globl _hal_interrupt_handlers
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
567 _hal_interrupt_handlers:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
568 .rept CYG_ISR_TABLE_SIZE
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
569 .long _hal_default_isr
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
570 .endr
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
571
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
572 .globl _hal_interrupt_data
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
573 _hal_interrupt_data:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
574 .rept CYG_ISR_TABLE_SIZE
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
575 .long 0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
576 .endr
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
577
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
578 .globl _hal_interrupt_objects
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
579 _hal_interrupt_objects:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
580 .rept CYG_ISR_TABLE_SIZE
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
581 .long 0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
582 .endr
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
583
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
584
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
585 ##-----------------------------------------------------------------------------
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
586 ## Temporary interrupt stack
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
587
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
588 .section ".bss"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
589
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
590 .balign 16
8
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 2
diff changeset
591 .global _cyg_interrupt_stack_base
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 2
diff changeset
592 _cyg_interrupt_stack_base:
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
593 __interrupt_stack_base:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
594 .rept CYGNUM_HAL_COMMON_INTERRUPTS_STACK_SIZE
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
595 .byte 0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
596 .endr
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
597 .balign 16
8
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 2
diff changeset
598 .global _cyg_interrupt_stack
ece80412419a Merge from eCos master repository on 1999-05-21-22:05:54-BST
jlarmour
parents: 2
diff changeset
599 _cyg_interrupt_stack:
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
600 __interrupt_stack:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
601
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
602 .long 0,0,0,0,0,0,0,0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
603
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
604 ##-----------------------------------------------------------------------------
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
605
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
606 .data
30
641b639be825 Merge from eCos master repository on 1999-08-16-22:01:37-BST
jlarmour
parents: 8
diff changeset
607 hal_diag_data
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
608
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
609 ##-----------------------------------------------------------------------------
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
610 ## end of vectors.S
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
611