<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://cpulator.01xz.net/mw/index.php?action=history&amp;feed=atom&amp;title=Msg%2FIntrClobberedRegs</id>
	<title>Msg/IntrClobberedRegs - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://cpulator.01xz.net/mw/index.php?action=history&amp;feed=atom&amp;title=Msg%2FIntrClobberedRegs"/>
	<link rel="alternate" type="text/html" href="https://cpulator.01xz.net/mw/index.php?title=Msg/IntrClobberedRegs&amp;action=history"/>
	<updated>2026-05-13T05:07:23Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://cpulator.01xz.net/mw/index.php?title=Msg/IntrClobberedRegs&amp;diff=58&amp;oldid=prev</id>
		<title>Henry: Created page with &quot;An interrupt handler should not modify any registers that are used outside an interrupt context (e.g., et on Nios II), because interrupts can occur at any time. Clobbering a r...&quot;</title>
		<link rel="alternate" type="text/html" href="https://cpulator.01xz.net/mw/index.php?title=Msg/IntrClobberedRegs&amp;diff=58&amp;oldid=prev"/>
		<updated>2019-03-10T06:22:41Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;An interrupt handler should not modify any registers that are used outside an interrupt context (e.g., et on Nios II), because interrupts can occur at any time. Clobbering a r...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;An interrupt handler should not modify any registers that are used outside an interrupt context (e.g., et on Nios II), because interrupts can occur at any time. Clobbering a register means overwriting its value. This message tells you that there were registers that were changed inside the interrupt handler.&lt;br /&gt;
&lt;br /&gt;
The rules for interrupt handlers are much more stringent than for function calls, because a parent function has the opportunity to prepare for a child function to clobber caller-saved registers, which does not happen for interrupts. From the perspective of the non-interrupt code, any register that is modified by an interrupt handler can have its value lost at any time in the program. &lt;br /&gt;
&lt;br /&gt;
=== Debugging ===&lt;br /&gt;
See [[Msg/ClobberedRegs]], which is a similar warning for functions.&lt;br /&gt;
&lt;br /&gt;
=== Implementation ===&lt;br /&gt;
The simulator identifies interrupts and return-from-interrupt instructions executed at runtime. It records the values of registers at interrupts, and verifies that they haven&amp;#039;t changed when executing the matching interrupt return. This warning is generated at the interrupt return instruction.&lt;br /&gt;
&lt;br /&gt;
{{DisableMsg|Interrupt clobbered a register}}&lt;/div&gt;</summary>
		<author><name>Henry</name></author>
	</entry>
</feed>