Re: [PATCH 1/5] m68k: Fix atari mouse movement
From: Michael Schmitz <schmitzmic@gmail.com>
Date: 2026-08-16 05:04:01
Also in:
linux-m68k
Subsystem:
m68k architecture, the rest · Maintainers:
Geert Uytterhoeven, Linus Torvalds
Hi Geert, Am 15.08.2026 um 11:15 schrieb Michael Schmitz:
quoted
quoted
--- a/drivers/input/mouse/atarimouse.c +++ b/drivers/input/mouse/atarimouse.c@@ -70,9 +70,12 @@ static void atamouse_interrupt(char *buf)Alternative, you could change/restore the function's signature to take a "signed char *".Agreed, but without a way to test this, I'd rather wait for Miro confirming that change also fixed the issue.
Still untested, but even though not 100% identical, this change (whitespace-damaged) produces functionally equivalent code:
diff --git a/arch/m68k/atari/atakeyb.c b/arch/m68k/atari/atakeyb.c
index 49a9a459bdf4..6e150f816c02 100644
--- a/arch/m68k/atari/atakeyb.c
+++ b/arch/m68k/atari/atakeyb.c@@ -39,7 +39,7 @@ void (*atari_MIDI_interrupt_hook) (void); /* Hook for keyboard inputdev driver */ void (*atari_input_keyboard_interrupt_hook) (unsigned char, char); /* Hook for mouse inputdev driver */ -void (*atari_input_mouse_interrupt_hook) (char *); +void (*atari_input_mouse_interrupt_hook) (signed char *); EXPORT_SYMBOL(atari_input_keyboard_interrupt_hook); EXPORT_SYMBOL(atari_input_mouse_interrupt_hook);
diff --git a/arch/m68k/include/asm/atarikb.h b/arch/m68k/include/asm/atarikb.h index 68f3622bf591..b2d9e7676324 100644
--- a/arch/m68k/include/asm/atarikb.h
+++ b/arch/m68k/include/asm/atarikb.h@@ -37,7 +37,7 @@ extern void (*atari_MIDI_interrupt_hook) (void); /* Hook for keyboard inputdev driver */ extern void (*atari_input_keyboard_interrupt_hook) (unsigned char, char); /* Hook for mouse inputdev driver */ -extern void (*atari_input_mouse_interrupt_hook) (char *); +extern void (*atari_input_mouse_interrupt_hook) (signed char *); int atari_keyb_init(void);
diff --git a/drivers/input/mouse/atarimouse.c b/drivers/input/mouse/atarimouse.c index 351aab69e905..e2801be8f371 100644
--- a/drivers/input/mouse/atarimouse.c
+++ b/drivers/input/mouse/atarimouse.c@@ -60,7 +60,7 @@ extern int atari_mouse_buttons; static struct input_dev *atamouse_dev; -static void atamouse_interrupt(char *buf) +static void atamouse_interrupt(signed char *buf) { int buttons, dx, dy;
(no cast used in the Atari ikbd interrupt handler though ...). I'll go with that one then ... Cheers, Michael
Cheers, Michaelquoted
quoted
atari_mouse_buttons = buttons; #endif - /* only relative events get here */ - dx = buf[1]; - dy = buf[2]; + /* only relative events get here; the IKBD sends signed 8-bit + * deltas, and the kernel builds with -funsigned-char since 6.2, + * so an explicit signed cast is required + */ + dx = (s8)buf[1]; + dy = (s8)buf[2]; input_report_rel(atamouse_dev, REL_X, dx); input_report_rel(atamouse_dev, REL_Y, dy);Regardless: Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org> Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds