I am attempting to cross-compile a 2.4 kernel for a PowerPC arch on an
Intel machine, of which I have Debian 2.2 installed. I have successfully
compiled a 2.4test9 kernel, but I got the following error message the first
time I compiled (it failed due to this):
powerpc-unknown-linux-gnu-ld -T arch/ppc/mm/mm.o <blah blah blah on same
command for about 11 lines>
drivers/input/inputdrv.o: In function 'keybdev_event':
drivers/input/inputdrv.o(.text+0x16bc): undefined reference to 'emulate_raw'
drivers/input/inputdrv.o(.text+0x16bc): relocation truncated to fit:
R_PPC_REL24 emulate_raw
make: *** [vmlinux] Error 1
Quoting Martin Costabel <[email protected]>:
<snip>
The function emulate_raw is used without any ifs, but its definition
some lines earlier is enclosed in either
#if defined(CONFIG_X86) || defined(CONFIG_IA64) || defined(__alpha__) ||
defined(__mips__)
or
#elif defined(CONFIG_ADB_KEYBOARD)
So in your case you would need to put CONFIG_ADB_KEYBOARD=y into your
.config file. Or change these weird #ifs.
The bitkeeper version of the file is somewhat better in that it uses only
one set of conditionals,
#if defined(CONFIG_X86) || defined(CONFIG_IA64) || defined(__alpha__) ||
defined (__mips__) || defined(CONFIG_PPC)
but the function is still used without any condition.
</snip>
From what he tells me, this remains an issue in the test10 release. I
disabled the entire feature from within xconfig, recompiled, and it
succeeded. If you need any more info, let me know and I'll see what I can do.
----------
Eric Reischer "You can't depend on your eyes
[email protected] if your imagination is out
of focus."
[email protected] -- Mark Twain
----------
> I am attempting to cross-compile a 2.4 kernel for a PowerPC arch on an
> Intel machine, of which I have Debian 2.2 installed. I have successfully
> compiled a 2.4test9 kernel, but I got the following error message the first
> time I compiled (it failed due to this):
>
> powerpc-unknown-linux-gnu-ld -T arch/ppc/mm/mm.o <blah blah blah on same
> command for about 11 lines>
> drivers/input/inputdrv.o: In function 'keybdev_event':
> drivers/input/inputdrv.o(.text+0x16bc): undefined reference to 'emulate_raw'
> drivers/input/inputdrv.o(.text+0x16bc): relocation truncated to fit:
> R_PPC_REL24 emulate_raw
> make: *** [vmlinux] Error 1
Would this patch help?
--- drivers/input/keybdev.c.org Thu Nov 2 10:13:39 2000
+++ drivers/input/keybdev.c Thu Nov 2 10:19:43 2000
@@ -36,7 +36,7 @@
#include <linux/module.h>
#include <linux/kbd_kern.h>
-#if defined(CONFIG_X86) || defined(CONFIG_IA64) || defined(__alpha__) || defined(__mips__)
+#if defined(CONFIG_X86) || defined(CONFIG_IA64) || defined(__alpha__) || defined(__mips__) || defined(CONFIG_MAC_HID)
static int x86_sysrq_alt = 0;
@@ -133,8 +133,10 @@
{
if (type != EV_KEY) return;
+#if defined(CONFIG_X86) || defined(CONFIG_IA64) || defined(__alpha__) || defined(__mips__) || defined(CONFIG_MAC_HID) || defined(CONFIG_ADB_KEYBOARD)
if (emulate_raw(code, down))
printk(KERN_WARNING "keyboard.c: can't emulate rawmode for keycode %d\n", code);
+#endif
tasklet_schedule(&keyboard_tasklet);
}
Untested, of course.
Michael
Michael Schmitz wrote:
>
> Would this patch help?
>
> --- drivers/input/keybdev.c.org Thu Nov 2 10:13:39 2000
> +++ drivers/input/keybdev.c Thu Nov 2 10:19:43 2000
> @@ -36,7 +36,7 @@
> #include <linux/module.h>
> #include <linux/kbd_kern.h>
>
> -#if defined(CONFIG_X86) || defined(CONFIG_IA64) || defined(__alpha__) || defined(__mips__)
> +#if defined(CONFIG_X86) || defined(CONFIG_IA64) || defined(__alpha__) || defined(__mips__) || defined(CONFIG_MAC_HID)
>
I've tried this on my PowerBook and it doesn't work. The keymap is broken and
pressing anything on the keyboard will output something completely different.
This is fixed if the "defined(CONFIG_MAC_HID)" gets move the "#elif" part of
the "#if" mentionned above.
That said, 2 and 3 button emulation is broken for (at least) the PowerBook on test-10.
I've tried the
echo "1" > /proc/sys/dev/mac_hid/mouse_button_emulation
and there's no effect. Anyone know what this is about?
Thanks.
===================================================
Karim Yaghmour
[email protected]
Operating System Consultant
(Linux kernel, real-time and distributed systems)
===================================================
> > Would this patch help?
> >
> > --- drivers/input/keybdev.c.org Thu Nov 2 10:13:39 2000
> > +++ drivers/input/keybdev.c Thu Nov 2 10:19:43 2000
> > @@ -36,7 +36,7 @@
> > #include <linux/module.h>
> > #include <linux/kbd_kern.h>
> >
> > -#if defined(CONFIG_X86) || defined(CONFIG_IA64) || defined(__alpha__) || defined(__mips__)
> > +#if defined(CONFIG_X86) || defined(CONFIG_IA64) || defined(__alpha__) || defined(__mips__) || defined(CONFIG_MAC_HID)
> >
>
> I've tried this on my PowerBook and it doesn't work. The keymap is broken and
> pressing anything on the keyboard will output something completely different.
> This is fixed if the "defined(CONFIG_MAC_HID)" gets move the "#elif" part of
> the "#if" mentionned above.
Fine, my patch made it compile, yours even makes it work. Please post a
diff or send it to Paul Mackerras.
> That said, 2 and 3 button emulation is broken for (at least) the PowerBook on test-10.
> I've tried the
> echo "1" > /proc/sys/dev/mac_hid/mouse_button_emulation
> and there's no effect. Anyone know what this is about?
Works for me, you just need to use PC keycodes instead of ADB keycodes if
you want to remap the keys. The default emulation codes are for fn-opt and
fn-cmd.
Michael