https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121432
--- Comment #21 from Gopi Kumar Bulusu <gopi at sankhya dot com> ---
Here is a patch outline (not yet built or tested);
Note: 1) There can be other ways to fix the issue that can be explored (change
do_IRQ function type) 2) There may be other places where there are similar
issues ; This may not be a fix for every similar problem.
arch/microblaze/kernel>diff entry.S.prev entry.S
732d731
< irq_call:rtbd r0, do_IRQ;
733a733,735
> irq_call:rtbd r0, do_IRQ;
> addik r1, r1, -8; /* Allocate space for args and link register */
> addik r1, r1, 8; /* Free space for args and link register */
alma153~kernel>diff -U3 entry.S.prev entry.S
--- entry.S.prev 2026-03-18 13:24:16.380001878 +0530
+++ entry.S 2026-03-18 13:23:41.319001313 +0530
@@ -729,8 +729,10 @@
lwi CURRENT_TASK, r0, TOPHYS(PER_CPU(CURRENT_SAVE));
tovirt(r1,r1)
addik r15, r0, irq_call;
-irq_call:rtbd r0, do_IRQ;
addik r5, r1, 0;
+irq_call:rtbd r0, do_IRQ;
+ addik r1, r1, -8; /* Allocate space for args and link register */
+ addik r1, r1, 8; /* Free space for args and link register */
/* MS: we are in virtual mode */