Hi guys,
I've been discussing this with Jon Beniston -- it seems the fix for the
Internal Compiler Error when building the Linux kernel is to comment out
or delete the macro GO_IF_MODE_DEPENDENT_ADDRESS in
gcc/config/lm32/lm32.h and then rebuild GCC.
This fixes the ICE, and gets the kernel to (almost) completely build
as-is. Unfortunately GCC gets stuck when kernel/time/timer_list.o is
compiled. That is, gcc seems to get stuck in an infinite loop.
Commenting out either the entire SEQ_printf macro, or the SEQ_printf
call on line 69 is enough to get the code to compile, and build a
kernel. I haven't got a working Qemu build yet, so I can't say whether
this kernel actually works...
In fact, if you want a fix with (marginally) less risk of collateral
damage, replacing the 5th parameter from that macro call with a number
is enough to fix the lockup:
(long long)(ktime_to_ns(hrtimer_get_softexpires(timer)) - now),
Splitting the printf in two is also enough to fix it:
/* SEQ_printf(m, " # expires at %Lu-%Lu nsecs [in %Ld to %Ld nsecs]\n",
(unsigned long long)ktime_to_ns(hrtimer_get_softexpires(timer)),
(unsigned long long)ktime_to_ns(hrtimer_get_expires(timer)),
(long long)(ktime_to_ns(hrtimer_get_softexpires(timer)) - now),
(long long)(ktime_to_ns(hrtimer_get_expires(timer)) - now));*/
>
SEQ_printf(m, " # expires at %Lu-%Lu nsecs ",
(unsigned long long)ktime_to_ns(hrtimer_get_softexpires(timer)),
(unsigned long long)ktime_to_ns(hrtimer_get_expires(timer)));
SEQ_printf(m, "[in %Ld to %Ld nsecs]\n",
(long long)(ktime_to_ns(hrtimer_get_softexpires(timer)) - now),
(long long)(ktime_to_ns(hrtimer_get_expires(timer)) - now));
Hummm...
--
Phil.
[email protected]
http://www.philpem.me.uk/
_______________________________________________
http://lists.milkymist.org/listinfo.cgi/devel-milkymist.org
IRC: #milkym...@freenode
Webchat: www.milkymist.org/irc.html
Wiki: www.milkymist.org/wiki