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 */

Reply via email to