OpenCores
URL https://opencores.org/ocsvn/or1k_old/or1k_old/trunk

Subversion Repositories or1k_old

[/] [or1k_old/] [trunk/] [rtems-20020807/] [doc/] [supplements/] [arm/] [intr_NOTIMES.t] - Blame information for rev 1782

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1026 ivang
@c
2
@c  Interrupt Stack Frame Picture
3
@c
4
@c  COPYRIGHT (c) 1988-2002.
5
@c  On-Line Applications Research Corporation (OAR).
6
@c  All rights reserved.
7
@c
8
@c  intr_NOTIMES.t,v 1.1 2002/07/30 21:43:53 joel Exp
9
@c
10
 
11
@chapter Interrupt Processing
12
 
13
@section Introduction
14
 
15
Different types of processors respond to the
16
occurrence of an interrupt in its own unique fashion. In
17
addition, each processor type provides a control mechanism to
18
allow for the proper handling of an interrupt.  The processor
19
dependent response to the interrupt modifies the current
20
execution state and results in a change in the execution stream.
21
Most processors require that an interrupt handler utilize some
22
special control mechanisms to return to the normal processing
23
stream.  Although RTEMS hides many of the processor dependent
24
details of interrupt processing, it is important to understand
25
how the RTEMS interrupt manager is mapped onto the processor's
26
unique architecture. Discussed in this chapter are the XXX's
27
interrupt response and control mechanisms as they pertain to
28
RTEMS.
29
 
30
@section Vectoring of an Interrupt Handler
31
 
32
Depending on whether or not the particular CPU
33
supports a separate interrupt stack, the XXX family has two
34
different interrupt handling models.
35
 
36
@subsection Models Without Separate Interrupt Stacks
37
 
38
Upon receipt of an interrupt the XXX family
39
members without separate interrupt stacks automatically perform
40
the following actions:
41
 
42
@itemize @bullet
43
@item To Be Written
44
@end itemize
45
 
46
@subsection Models With Separate Interrupt Stacks
47
 
48
Upon receipt of an interrupt the XXX family
49
members with separate interrupt stacks automatically perform the
50
following actions:
51
 
52
@itemize @bullet
53
@item saves the current status register (SR),
54
 
55
@item clears the master/interrupt (M) bit of the SR to
56
indicate the switch from master state to interrupt state,
57
 
58
@item sets the privilege mode to supervisor,
59
 
60
@item suppresses tracing,
61
 
62
@item sets the interrupt mask level equal to the level of the
63
interrupt being serviced,
64
 
65
@item pushes an interrupt stack frame (ISF), which includes
66
the program counter (PC), the status register (SR), and the
67
format/exception vector offset (FVO) word, onto the supervisor
68
and interrupt stacks,
69
 
70
@item switches the current stack to the interrupt stack and
71
vectors to an interrupt service routine (ISR).  If the ISR was
72
installed with the interrupt_catch directive, then the RTEMS
73
interrupt handler will begin execution.  The RTEMS interrupt
74
handler saves all registers which are not preserved according to
75
the calling conventions and invokes the application's ISR.
76
@end itemize
77
 
78
A nested interrupt is processed similarly by these
79
CPU models with the exception that only a single ISF is placed
80
on the interrupt stack and the current stack need not be
81
switched.
82
 
83
The FVO word in the Interrupt Stack Frame is examined
84
by RTEMS to determine when an outer most interrupt is being
85
exited. Since the FVO is used by RTEMS for this purpose, the
86
user application code MUST NOT modify this field.
87
 
88
The following shows the Interrupt Stack Frame for
89
XXX CPU models with separate interrupt stacks:
90
 
91
@ifset use-ascii
92
@example
93
@group
94
               +----------------------+
95
               |    Status Register   | 0x0
96
               +----------------------+
97
               | Program Counter High | 0x2
98
               +----------------------+
99
               | Program Counter Low  | 0x4
100
               +----------------------+
101
               | Format/Vector Offset | 0x6
102
               +----------------------+
103
@end group
104
@end example
105
@end ifset
106
 
107
@ifset use-tex
108
@sp 1
109
@tex
110
\centerline{\vbox{\offinterlineskip\halign{
111
\strut\vrule#&
112
\hbox to 2.00in{\enskip\hfil#\hfil}&
113
\vrule#&
114
\hbox to 0.50in{\enskip\hfil#\hfil}
115
\cr
116
\multispan{3}\hrulefill\cr
117
& Status Register && 0x0\cr
118
\multispan{3}\hrulefill\cr
119
& Program Counter High && 0x2\cr
120
\multispan{3}\hrulefill\cr
121
& Program Counter Low && 0x4\cr
122
\multispan{3}\hrulefill\cr
123
& Format/Vector Offset && 0x6\cr
124
\multispan{3}\hrulefill\cr
125
}}\hfil}
126
@end tex
127
@end ifset
128
 
129
@ifset use-html
130
@html
131
132
  
133
Status Register
134
    
0x0
135
Program Counter High
136
    
0x2
137
Program Counter Low
138
    
0x4
139
Format/Vector Offset
140
    
0x6
141
  
142
143
@end html
144
@end ifset
145
 
146
@section Interrupt Levels
147
 
148
Eight levels (0-7) of interrupt priorities are
149
supported by XXX family members with level seven (7) being
150
the highest priority.  Level zero (0) indicates that interrupts
151
are fully enabled.  Interrupt requests for interrupts with
152
priorities less than or equal to the current interrupt mask
153
level are ignored.
154
 
155
Although RTEMS supports 256 interrupt levels, the
156
XXX family only supports eight.  RTEMS interrupt levels 0
157
through 7 directly correspond to XXX interrupt levels.  All
158
other RTEMS interrupt levels are undefined and their behavior is
159
unpredictable.
160
 
161
@section Disabling of Interrupts by RTEMS
162
 
163
During the execution of directive calls, critical
164
sections of code may be executed.  When these sections are
165
encountered, RTEMS disables interrupts to level seven (7) before
166
the execution of this section and restores them to the previous
167
level upon completion of the section.  RTEMS has been optimized
168
to insure that interrupts are disabled for less than
169
RTEMS_MAXIMUM_DISABLE_PERIOD microseconds on a
170
RTEMS_MAXIMUM_DISABLE_PERIOD_MHZ Mhz processor with
171
zero wait states.  These numbers will vary based the
172
number of wait states and processor speed present on the target board.
173
[NOTE:  The maximum period with interrupts disabled is hand calculated.  This
174
calculation was last performed for Release
175
RTEMS_RELEASE_FOR_MAXIMUM_DISABLE_PERIOD.]
176
 
177
Non-maskable interrupts (NMI) cannot be disabled, and
178
ISRs which execute at this level MUST NEVER issue RTEMS system
179
calls.  If a directive is invoked, unpredictable results may
180
occur due to the inability of RTEMS to protect its critical
181
sections.  However, ISRs that make no system calls may safely
182
execute as non-maskable interrupts.
183
 
184
@section Interrupt Stack
185
 
186
RTEMS allocates the interrupt stack from the
187
Workspace Area.  The amount of memory allocated for the
188
interrupt stack is determined by the interrupt_stack_size field
189
in the CPU Configuration Table.  During the initialization
190
process, RTEMS will install its interrupt stack.
191
 
192
The XXX port of RTEMS supports a software managed
193
dedicated interrupt stack on those CPU models which do not
194
support a separate interrupt stack in hardware.
195
 
196
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.