https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121432

--- Comment #30 from Gopi Kumar Bulusu <gopi at sankhya dot com> ---
With respect to irq.o

Here is how a workaround checks out to be working using the following process

1. Build a working version of kernel (use gcc 14.x)
kernel boots

2. Copy over the irq.o built using gcc 15
kernel hangs

3. Update irq.o with the workaround
Kernel boots ok

4. Kernel built with gcc 15 and irq.o updated with fix/workaround
kernel hangs. It appears that there are additional issues with kernel for
arch/microblaze

Here is the description of workaround:

To ensure a function f() called from entry.S (or some other .S) without setting
up args space works - use the following method

* rename f() to say f_cabi()
* Mark f_cabi() as inline

... noinline f_real ()

(If noinline does not work __attribute__((__noinline__)) may be used)

* from f() call f_real() with necessary arguments

Note: This workaround works with the default compiler flags (-O2) used for
building the objects under arch/microblaze/kernel; however if optimizations are
turned out the work around does not work.

Reply via email to