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.
