Arm Community
Site
Search
User
Site
Search
User
Groups
Arm Research
DesignStart
Education Hub
Graphics and Gaming
High Performance Computing
Innovation
Multimedia
Open Source Software and Platforms
Physical
Processors
Security
System
Software Tools
TrustZone for Armv8-M
中文社区
Blog
Announcements
Artificial Intelligence
Automotive
Healthcare
HPC
Infrastructure
Innovation
Internet of Things
Machine Learning
Mobile
Smart Homes
Wearables
Forums
All developer forums
IP Product forums
Tool & Software forums
Pelion IoT Platform
Support
Open a support case
Documentation
Downloads
Training
Arm Approved program
Arm Design Reviews
Community Help
More
Cancel
Developer Community
IP Products
Processors
Jump...
Cancel
Processors
Classic processors forum
Testing for interrupt
Blogs
Forums
Videos & Files
Help
Jump...
Cancel
New
State
Accepted Answer
+1
person also asked this
people also asked this
Replies
3 replies
Subscribers
2 subscribers
Views
2733 views
Users
0 members are here
Interrupts
Arm7tdmi
RM7
Related
Testing for interrupt
Offline
Upp3r Upp3r
over 7 years ago
Note: This was originally posted on 19th November 2008 at
http://forums.arm.com
Im looking for a way to test if there is an interrupt currently processing on my ARM7. I can see that the interrupt disable bits are set to disable the FIQ and IRQ interrupts, but are they set when an interrupt is triggered? In my "TMS470R1x User's Guide" in the section on Exceptions, it gives a run down when an exception occurs and it says it "may also set interrupt disable flags" but nothing decisive.
My question is: Do the CPSR I and F bits signify there is an interrupt in progress, i.e, when an interrupt occurs, is the disable flag set? If not, how could I determine if there is an interrupt in progress?
Top replies
Offline
Jacob Bramley
over 7 years ago
+1
verified
Note: This was originally posted on 20th November 2008 at http://forums.arm.com The CPSR I and F bits do not indicate that an interrupt is in progress. They do nothing other than enable or disable interrupts...
0
Offline
Ojin Choi
over 7 years ago
Note: This was originally posted on 20th November 2008 at
http://forums.arm.com
When the interrupt occurs (nIRQ and nFIQ), the flags of the CPSR was set (disable).
So you don't worry about it.
Cancel
Up
0
Down
Reply
Accept answer
Cancel
+1
Offline
Jacob Bramley
over 7 years ago
Note: This was originally posted on 20th November 2008 at
http://forums.arm.com
The CPSR I and F bits do not indicate that an interrupt is in progress. They do nothing other than enable or disable interrupts. However, a side effect of an interrupt being triggered is that the respective CPSR bit will be set* in order to prevent the same interrupt to occur again. If this didn't happen, the LR could be corrupted before it can be stacked and it would be practically impossible to build a robust system. Nested interrupts are possible, but you need to fiddle about somewhat in order to make them work as expected.
* In addition, an FIQ will cause IRQs to be disabled as FIQs are intended to be high-priority fast interrupts for time-critical events.
Note, however, that each mode has its own SPSR, and it is usual to copy this SPSR to the CPSR before returning from the interrupt. Doing this will restore the I and F bits (along with the processor mode) to whatever they were before the interrupt was triggered.
Also, check that you know what you mean when you say "an interrupt currently processing". It is rare that the code itself needs to check if it's running in interrupt context as the program flow automatically branches to the exception handler. It's more likely that you'd need to check this from a debugger, but even then the interrupt code is almost always different from the main program code. Why do you need to determine if there is an interrupt in progress, and from what context do you need to perform this check?
Cancel
Up
+1
Down
Reply
Reject answer
Cancel
0
Offline
Jacob Bramley
over 7 years ago
Note: This was originally posted on 20th November 2008 at
http://forums.arm.com
In addition, you may find this page useful: [url="
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0210c/CIHEHHJJ.html
"]
http://infocenter.arm.com/help/index.jsp?t...c/CIHEHHJJ.html[/url]
Cancel
Up
0
Down
Reply
Accept answer
Cancel
More questions in this forum
By title
By date
By reply count
By view count
By most asked
By votes
By quality
Descending
Ascending
All recent questions
Unread questions
Questions you've participated in
Questions you've asked
Unanswered questions
Answered questions
Questions with suggested answers
Questions with no replies
Not Answered
Platform Security Architecture (PSA) and Azure Sphere
0
Platform Security Architecture (PSA)
azure
Internet of Things (IoT)
757
views
0
replies
Started
8 months ago
by
techguyz
Answered
Provision to get out of BKPT instruction
+1
4663
views
5
replies
Latest
8 months ago
by
LULIA
Answered
How to specify virtual Address for pl011 uart in linux kernel
0
APB Peripherals
Arm11
PrimeCell UART (PL011)
Interrupt
12426
views
10
replies
Latest
10 months ago
by
Brayden
Not Answered
Needs explanation of an assembly snippet
0
1584
views
1
reply
Latest
over 1 year ago
by
42Bastian Schick
Not Answered
2515 CAN controller with rpi3
0
1665
views
0
replies
Started
over 1 year ago
by
Tejadeep
<
>
View all questions in Classic processors forum