annotate packages/kernel/current/tests/kintr0.c @ 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 29bc183297e1
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 // 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
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 34
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: 34
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: 34
diff changeset
14 // http://sourceware.cygnus.com/ecos
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 34
diff changeset
15 //
c38311975d4f Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents: 34
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: 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
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
96 cyg_interrupt_create(0, 0, (cyg_addrword_t)333, isr0, dsr0, &handle, &intr );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
97 cyg_interrupt_delete(handle);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
98
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
99 return true;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
100 }
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
101
34
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 10
diff changeset
102 /* 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
103 * 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
104 * 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
105 * 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
106 * 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
107 *
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 10
diff changeset
108 * 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
109 * 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
110 * 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
111 * 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
112 * freeze.
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 10
diff changeset
113 */
29bc183297e1 Merge from eCos master repository on 1999-09-02-16:26:10-BST
jlarmour
parents: 10
diff changeset
114
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
115 static cyg_VSR_t vsr0;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
116
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
117 static void vsr0()
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 }
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 void kintr0_main( void )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
122 {
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
123 cyg_vector_t v = 11 % CYGNUM_HAL_VSR_COUNT;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
124 cyg_vector_t v1;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
125 cyg_vector_t lvl1 = 1 % (CYGNUM_HAL_ISR_COUNT);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
126 cyg_vector_t lvl2 = 15 % (CYGNUM_HAL_ISR_COUNT);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
127 int in_use;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
128
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
129 cyg_VSR_t *old_vsr, *new_vsr;
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 CYG_TEST_INIT();
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
132
10
d3fbcdfa1b2f Merge from eCos master repository on 1999-05-29-00:13:11-BST
jlarmour
parents: 2
diff changeset
133 #ifdef CYGPKG_HAL_MIPS_TX39
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
134 // This can be removed when PR 17831 is fixed
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
135 if ( cyg_test_is_simulator )
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
136 v1 = 12 % CYGNUM_HAL_ISR_COUNT;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
137 else /* NOTE TRAILING ELSE... */
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
138 #endif
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
139 v1 = 6 % CYGNUM_HAL_ISR_COUNT;
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
140
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
141 CHECK(flash());
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
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
144 // Make sure the chosen levels are not already in use.
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
145 HAL_INTERRUPT_IN_USE( lvl1, in_use );
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
146 intr0 = 0;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
147 if (!in_use)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
148 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
149 &intr0, &intr_obj[0]);
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
150
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
151 HAL_INTERRUPT_IN_USE( lvl2, in_use );
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
152 intr1 = 0;
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
153 if (!in_use && lvl1 != lvl2)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
154 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
155
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
156 // Check these functions at least exist
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 cyg_interrupt_enable();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
159 cyg_interrupt_disable();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
160
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
161 if (intr0)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
162 cyg_interrupt_attach(intr0);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
163 if (intr1)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
164 cyg_interrupt_attach(intr1);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
165 if (intr0)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
166 cyg_interrupt_detach(intr0);
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
167 if (intr1)
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
168 cyg_interrupt_detach(intr1);
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
169
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
170 // If this attaching interrupt replaces the previous interrupt
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
171 // 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
172 // vector is being used by something important.
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
173
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
174 cyg_interrupt_get_vsr( v, &old_vsr );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
175 cyg_interrupt_set_vsr( v, vsr0 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
176 cyg_interrupt_get_vsr( v, &new_vsr );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
177 CHECK( vsr0 == new_vsr );
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 new_vsr = NULL;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
180 cyg_interrupt_get_vsr( v, &new_vsr );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
181 cyg_interrupt_set_vsr( v, old_vsr );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
182 CHECK( new_vsr == vsr0 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
183
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
184 cyg_interrupt_set_vsr( v, new_vsr );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
185 new_vsr = NULL;
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
186 cyg_interrupt_get_vsr( v, &new_vsr );
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
187 CHECK( vsr0 == new_vsr );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
188
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
189 cyg_interrupt_set_vsr( v, old_vsr );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
190 CHECK( vsr0 == new_vsr );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
191 new_vsr = NULL;
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
192 cyg_interrupt_get_vsr( v, &new_vsr );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
193 CHECK( old_vsr == new_vsr );
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
194
0
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
195 CHECK( NULL != vsr0 );
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
196
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
197 cyg_interrupt_mask(v1);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
198 cyg_interrupt_unmask(v1);
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 cyg_interrupt_configure(v1, true, true);
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
201
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
202 CYG_TEST_PASS_FINISH("Kernel C API Intr 0 OK");
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
203 }
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 externC void
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
206 cyg_start( void )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
207 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
208 kintr0_main();
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
209 }
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 #else /* def CYGFUN_KERNEL_API_C */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
212 externC void
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
213 cyg_start( void )
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
214 {
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
215 CYG_TEST_INIT();
2
443894e2e912 Block commit of eCos version 1.2.1
jlarmour
parents: 0
diff changeset
216 CYG_TEST_NA("Kernel C API layer disabled");
0
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 #endif /* def CYGFUN_KERNEL_API_C */
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
219
3111d98ba7b3 Initial commit of eCos version 1.1
jlarmour
parents:
diff changeset
220 /* EOF kintr0.c */