annotate packages/kernel/current/tests/kintr0.c @ 86:6512add4f5d6 ecos-sw-2000-05-05

Merge from eCos master repository on 2000-05-05-07:47:05-BST
author jlarmour
date Fri, 05 May 2000 17:31:08 +0000
parents bf00f99aec69
children ac086aa3217e
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 // kintr0.c
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 // Kernel C API Intr test 0
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: 34
diff changeset
9 //
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 34
diff changeset
10 // -------------------------------------------
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 34
diff changeset
11 // The contents of this file are subject to the Red Hat eCos Public License
66
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
12 // Version 1.1 (the "License"); you may not use this file except in
64
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 34
diff changeset
13 // compliance with the License. You may obtain a copy of the License at
66
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
14 // http://www.redhat.com/
64
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 34
diff changeset
15 //
66
bf00f99aec69 Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents: 64
diff changeset
16 // Software distributed under the License is distributed on an "AS IS"
64
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 34
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: 34
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: 34
diff changeset
19 // the License.
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 34
diff changeset
20 //
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 34
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: 34
diff changeset
22 // released September 30, 1998.
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 34
diff changeset
23 //
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 34
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: 34
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: 34
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: 34
diff changeset
27 // All Rights Reserved.
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 34
diff changeset
28 // -------------------------------------------
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 34
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): dsm
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
35 // Contributors: dsm, jlarmour
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
36 // Date: 1999-02-16
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
37 // Description: Very basic test of interrupt objects
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
38 // Options:
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
39 // CYGIMP_KERNEL_INTERRUPTS_DSRS_TABLE
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
40 // CYGIMP_KERNEL_INTERRUPTS_DSRS_TABLE_MAX
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
41 // CYGIMP_KERNEL_INTERRUPTS_DSRS_LIST
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
42 //####DESCRIPTIONEND####
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 <cyg/kernel/kapi.h>
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
46 #include <cyg/hal/hal_intr.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 #include <cyg/infra/testcase.h>
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
49
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
50 #ifdef CYGFUN_KERNEL_API_C
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
51
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
52 #include "testaux.h"
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
53
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
54 static cyg_interrupt intr_obj[2];
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
55
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
56 static cyg_handle_t intr0, intr1;
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 static cyg_ISR_t isr0, isr1;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
60 static cyg_DSR_t dsr0, dsr1;
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 static cyg_uint32 isr0(cyg_vector_t vector, cyg_addrword_t data)
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 CYG_UNUSED_PARAM(cyg_addrword_t, data);
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 cyg_interrupt_acknowledge(vector);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
67 return 0;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
68 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
69
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
70 static void dsr0(cyg_vector_t vector, cyg_ucount32 count, cyg_addrword_t data)
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 CYG_UNUSED_PARAM(cyg_vector_t, vector);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
73 CYG_UNUSED_PARAM(cyg_ucount32, count);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
74 CYG_UNUSED_PARAM(cyg_addrword_t, data);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
75 }
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 static cyg_uint32 isr1(cyg_vector_t vector, cyg_addrword_t data)
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 CYG_UNUSED_PARAM(cyg_vector_t, vector);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
80 CYG_UNUSED_PARAM(cyg_addrword_t, data);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
81 return 0;
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
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
84 static void dsr1(cyg_vector_t vector, cyg_ucount32 count, cyg_addrword_t data)
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
85 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
86 CYG_UNUSED_PARAM(cyg_vector_t, vector);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
87 CYG_UNUSED_PARAM(cyg_ucount32, count);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
88 CYG_UNUSED_PARAM(cyg_addrword_t, data);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
89 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
90
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
91 static bool flash( void )
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 cyg_handle_t handle;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
94 cyg_interrupt intr;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
95
86
6512add4f5d6 Merge from eCos master repository on 2000-05-05-07:47:05-BST
jlarmour
parents: 66
diff changeset
96 cyg_interrupt_create(CYGNUM_HAL_ISR_MIN, 0, (cyg_addrword_t)333,
6512add4f5d6 Merge from eCos master repository on 2000-05-05-07:47:05-BST
jlarmour
parents: 66
diff changeset
97 isr0, dsr0, &handle, &intr );
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
98 cyg_interrupt_delete(handle);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
99
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
100 return true;
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
34
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 10
diff changeset
103 /* IMPORTANT: The calling convention for VSRs is target dependent. It is
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 10
diff changeset
104 * unlikely that a plain C or C++ routine would function correctly on any
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 10
diff changeset
105 * particular platform, even if it could correctly access the system
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 10
diff changeset
106 * resources necessary to handle the event that caused it to be called.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 10
diff changeset
107 * VSRs usually must be written in assembly language.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 10
diff changeset
108 *
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 10
diff changeset
109 * This is just a test program. The routine vsr0() below is defined simply
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 10
diff changeset
110 * to define an address that will be in executable memory. If an event
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 10
diff changeset
111 * causes this VSR to be called, all bets are off. If it is accidentally
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 10
diff changeset
112 * installed in the vector for the realtime clock, the system will likely
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 10
diff changeset
113 * freeze.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 10
diff changeset
114 */
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 10
diff changeset
115
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
116 static cyg_VSR_t vsr0;
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 static void vsr0()
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
119 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
120 }
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 void kintr0_main( void )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
123 {
86
6512add4f5d6 Merge from eCos master repository on 2000-05-05-07:47:05-BST
jlarmour
parents: 66
diff changeset
124 cyg_vector_t v = (CYGNUM_HAL_VSR_MIN + 11) % CYGNUM_HAL_VSR_COUNT;
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
125 cyg_vector_t v1;
86
6512add4f5d6 Merge from eCos master repository on 2000-05-05-07:47:05-BST
jlarmour
parents: 66
diff changeset
126 cyg_vector_t lvl1 = (CYGNUM_HAL_ISR_MIN + 1) % (CYGNUM_HAL_ISR_COUNT);
6512add4f5d6 Merge from eCos master repository on 2000-05-05-07:47:05-BST
jlarmour
parents: 66
diff changeset
127 cyg_vector_t lvl2 = (CYGNUM_HAL_ISR_MIN + 15) % (CYGNUM_HAL_ISR_COUNT);
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
128 int in_use;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
129
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
130 cyg_VSR_t *old_vsr, *new_vsr;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
131
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
132 CYG_TEST_INIT();
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
133
10
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 2
diff changeset
134 #ifdef CYGPKG_HAL_MIPS_TX39
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
135 // This can be removed when PR 17831 is fixed
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
136 if ( cyg_test_is_simulator )
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
137 v1 = 12 % CYGNUM_HAL_ISR_COUNT;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
138 else /* NOTE TRAILING ELSE... */
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
139 #endif
86
6512add4f5d6 Merge from eCos master repository on 2000-05-05-07:47:05-BST
jlarmour
parents: 66
diff changeset
140 v1 = (CYGNUM_HAL_ISR_MIN + 6) % CYGNUM_HAL_ISR_COUNT;
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
141
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
142 CHECK(flash());
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
143 CHECK(flash());
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
144
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
145 // Make sure the chosen levels are not already in use.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
146 HAL_INTERRUPT_IN_USE( lvl1, in_use );
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
147 intr0 = 0;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
148 if (!in_use)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
149 cyg_interrupt_create(lvl1, 1, (cyg_addrword_t)777, isr0, dsr0,
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
150 &intr0, &intr_obj[0]);
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
151
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
152 HAL_INTERRUPT_IN_USE( lvl2, in_use );
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
153 intr1 = 0;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
154 if (!in_use && lvl1 != lvl2)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
155 cyg_interrupt_create(lvl2, 1, 888, isr1, dsr1, &intr1, &intr_obj[1]);
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
156
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
157 // Check these functions at least exist
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
158
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
159 cyg_interrupt_enable();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
160 cyg_interrupt_disable();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
161
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
162 if (intr0)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
163 cyg_interrupt_attach(intr0);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
164 if (intr1)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
165 cyg_interrupt_attach(intr1);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
166 if (intr0)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
167 cyg_interrupt_detach(intr0);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
168 if (intr1)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
169 cyg_interrupt_detach(intr1);
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
170
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
171 // If this attaching interrupt replaces the previous interrupt
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
172 // instead of adding to it we could be in a big mess if the
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
173 // vector is being used by something important.
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
174
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
175 cyg_interrupt_get_vsr( v, &old_vsr );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
176 cyg_interrupt_set_vsr( v, vsr0 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
177 cyg_interrupt_get_vsr( v, &new_vsr );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
178 CHECK( vsr0 == new_vsr );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
179
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
180 new_vsr = NULL;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
181 cyg_interrupt_get_vsr( v, &new_vsr );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
182 cyg_interrupt_set_vsr( v, old_vsr );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
183 CHECK( new_vsr == vsr0 );
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 cyg_interrupt_set_vsr( v, new_vsr );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
186 new_vsr = NULL;
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
187 cyg_interrupt_get_vsr( v, &new_vsr );
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
188 CHECK( vsr0 == new_vsr );
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 cyg_interrupt_set_vsr( v, old_vsr );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
191 CHECK( vsr0 == new_vsr );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
192 new_vsr = NULL;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
193 cyg_interrupt_get_vsr( v, &new_vsr );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
194 CHECK( old_vsr == new_vsr );
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
195
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
196 CHECK( NULL != vsr0 );
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 cyg_interrupt_mask(v1);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
199 cyg_interrupt_unmask(v1);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
200
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
201 cyg_interrupt_configure(v1, true, true);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
202
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
203 CYG_TEST_PASS_FINISH("Kernel C API Intr 0 OK");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
204 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
205
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
206 externC void
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
207 cyg_start( void )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
208 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
209 kintr0_main();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
210 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
211
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
212 #else /* def CYGFUN_KERNEL_API_C */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
213 externC void
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
214 cyg_start( void )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
215 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
216 CYG_TEST_INIT();
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
217 CYG_TEST_NA("Kernel C API layer disabled");
0
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 #endif /* def CYGFUN_KERNEL_API_C */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
220
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
221 /* EOF kintr0.c */