From: Remi Herilier Wistron button support for X86_64 systems. Signed-off-by: Remi Herilier Cc: Dmitry Torokhov Cc: Jiri Kosina Cc: Miloslav Trmac Signed-off-by: Andrew Morton --- drivers/input/misc/Kconfig | 2 +- drivers/input/misc/wistron_btns.c | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff -puN drivers/input/misc/Kconfig~wistron_btns-add-support-for-x86_64-systems drivers/input/misc/Kconfig --- a/drivers/input/misc/Kconfig~wistron_btns-add-support-for-x86_64-systems +++ a/drivers/input/misc/Kconfig @@ -78,7 +78,7 @@ config INPUT_COBALT_BTNS config INPUT_WISTRON_BTNS tristate "x86 Wistron laptop button interface" - depends on X86 && !X86_64 + depends on X86 select INPUT_POLLDEV select NEW_LEDS select LEDS_CLASS diff -puN drivers/input/misc/wistron_btns.c~wistron_btns-add-support-for-x86_64-systems drivers/input/misc/wistron_btns.c --- a/drivers/input/misc/wistron_btns.c~wistron_btns-add-support-for-x86_64-systems +++ a/drivers/input/misc/wistron_btns.c @@ -74,10 +74,18 @@ static void call_bios(struct regs *regs) preempt_disable(); local_irq_save(flags); +#ifdef CONFIG_X86_64 + asm volatile ("pushq %%rbp;" +#else asm volatile ("pushl %%ebp;" +#endif "movl %7, %%ebp;" "call *%6;" +#ifdef CONFIG_X86_64 + "popq %%rbp" +#else "popl %%ebp" +#endif : "=a" (regs->eax), "=b" (regs->ebx), "=c" (regs->ecx) : "0" (regs->eax), "1" (regs->ebx), "2" (regs->ecx), "m" (bios_entry_point), "m" (bios_data_map_base) _