Skip to content

Commit

Permalink
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel…
Browse files Browse the repository at this point in the history
…/git/geert/linux-m68k

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k:
  input/atari: Fix mouse movement and button mapping
  input/atari: Fix atarimouse init
  input/atari: Use the correct mouse interrupt hook
  m68k/atari: Do not use "/" in interrupt names
  m68k: unistd - Comment out definitions for unimplemented syscalls
  m68k: Really wire up sys_pselect6 and sys_ppoll
  m68k: Merge mmu and non-mmu versions of sys_call_table
  MAINTAINERS: Roman Zippel has been MIA for several years.
  m68k: bitops - Never step beyond the end of the bitmap
  m68k: bitops - offset == ((long)p - (long)vaddr) * 8
  • Loading branch information
Linus Torvalds committed May 19, 2011
2 parents e33ab8f + 659e6ed commit e1f2084
Show file tree
Hide file tree
Showing 13 changed files with 200 additions and 524 deletions.
9 changes: 4 additions & 5 deletions MAINTAINERS
Original file line number Diff line number Diff line change
Expand Up @@ -405,8 +405,8 @@ S: Maintained
F: sound/oss/aedsp16.c

AFFS FILE SYSTEM
M: Roman Zippel <zippel@linux-m68k.org>
S: Maintained
L: linux-fsdevel@vger.kernel.org
S: Orphan
F: Documentation/filesystems/affs.txt
F: fs/affs/

Expand Down Expand Up @@ -2946,8 +2946,8 @@ F: drivers/block/cciss*
F: include/linux/cciss_ioctl.h

HFS FILESYSTEM
M: Roman Zippel <zippel@linux-m68k.org>
S: Maintained
L: linux-fsdevel@vger.kernel.org
S: Orphan
F: Documentation/filesystems/hfs.txt
F: fs/hfs/

Expand Down Expand Up @@ -4001,7 +4001,6 @@ F: arch/m32r/

M68K ARCHITECTURE
M: Geert Uytterhoeven <geert@linux-m68k.org>
M: Roman Zippel <zippel@linux-m68k.org>
L: linux-m68k@lists.linux-m68k.org
W: http://www.linux-m68k.org/
T: git git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k.git
Expand Down
9 changes: 3 additions & 6 deletions arch/m68k/atari/atakeyb.c
Original file line number Diff line number Diff line change
Expand Up @@ -36,13 +36,10 @@

/* Hook for MIDI serial driver */
void (*atari_MIDI_interrupt_hook) (void);
/* Hook for mouse driver */
void (*atari_mouse_interrupt_hook) (char *);
/* 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 *);
EXPORT_SYMBOL(atari_mouse_interrupt_hook);
EXPORT_SYMBOL(atari_input_keyboard_interrupt_hook);
EXPORT_SYMBOL(atari_input_mouse_interrupt_hook);

Expand Down Expand Up @@ -263,8 +260,8 @@ static irqreturn_t atari_keyboard_interrupt(int irq, void *dummy)
kb_state.buf[kb_state.len++] = scancode;
if (kb_state.len == 3) {
kb_state.state = KEYBOARD;
if (atari_mouse_interrupt_hook)
atari_mouse_interrupt_hook(kb_state.buf);
if (atari_input_mouse_interrupt_hook)
atari_input_mouse_interrupt_hook(kb_state.buf);
}
break;

Expand Down Expand Up @@ -575,7 +572,7 @@ int atari_keyb_init(void)
kb_state.len = 0;

error = request_irq(IRQ_MFP_ACIA, atari_keyboard_interrupt,
IRQ_TYPE_SLOW, "keyboard/mouse/MIDI",
IRQ_TYPE_SLOW, "keyboard,mouse,MIDI",
atari_keyboard_interrupt);
if (error)
return error;
Expand Down
2 changes: 1 addition & 1 deletion arch/m68k/atari/stdma.c
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ void __init stdma_init(void)
{
stdma_isr = NULL;
if (request_irq(IRQ_MFP_FDC, stdma_int, IRQ_TYPE_SLOW | IRQF_SHARED,
"ST-DMA: floppy/ACSI/IDE/Falcon-SCSI", stdma_int))
"ST-DMA floppy,ACSI,IDE,Falcon-SCSI", stdma_int))
pr_err("Couldn't register ST-DMA interrupt\n");
}

Expand Down
2 changes: 0 additions & 2 deletions arch/m68k/include/asm/atarikb.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,6 @@ void ikbd_joystick_disable(void);

/* Hook for MIDI serial driver */
extern void (*atari_MIDI_interrupt_hook) (void);
/* Hook for mouse driver */
extern void (*atari_mouse_interrupt_hook) (char *);
/* Hook for keyboard inputdev driver */
extern void (*atari_input_keyboard_interrupt_hook) (unsigned char, char);
/* Hook for mouse inputdev driver */
Expand Down
87 changes: 57 additions & 30 deletions arch/m68k/include/asm/bitops_mm.h
Original file line number Diff line number Diff line change
Expand Up @@ -181,22 +181,24 @@ static inline int find_first_zero_bit(const unsigned long *vaddr,
{
const unsigned long *p = vaddr;
int res = 32;
unsigned int words;
unsigned long num;

if (!size)
return 0;

size = (size + 31) >> 5;
words = (size + 31) >> 5;
while (!(num = ~*p++)) {
if (!--size)
if (!--words)
goto out;
}

__asm__ __volatile__ ("bfffo %1{#0,#0},%0"
: "=d" (res) : "d" (num & -num));
res ^= 31;
out:
return ((long)p - (long)vaddr - 4) * 8 + res;
res += ((long)p - (long)vaddr - 4) * 8;
return res < size ? res : size;
}

static inline int find_next_zero_bit(const unsigned long *vaddr, int size,
Expand All @@ -215,35 +217,41 @@ static inline int find_next_zero_bit(const unsigned long *vaddr, int size,
/* Look for zero in first longword */
__asm__ __volatile__ ("bfffo %1{#0,#0},%0"
: "=d" (res) : "d" (num & -num));
if (res < 32)
return offset + (res ^ 31);
if (res < 32) {
offset += res ^ 31;
return offset < size ? offset : size;
}
offset += 32;

if (offset >= size)
return size;
}
/* No zero yet, search remaining full bytes for a zero */
res = find_first_zero_bit(p, size - ((long)p - (long)vaddr) * 8);
return offset + res;
return offset + find_first_zero_bit(p, size - offset);
}

static inline int find_first_bit(const unsigned long *vaddr, unsigned size)
{
const unsigned long *p = vaddr;
int res = 32;
unsigned int words;
unsigned long num;

if (!size)
return 0;

size = (size + 31) >> 5;
words = (size + 31) >> 5;
while (!(num = *p++)) {
if (!--size)
if (!--words)
goto out;
}

__asm__ __volatile__ ("bfffo %1{#0,#0},%0"
: "=d" (res) : "d" (num & -num));
res ^= 31;
out:
return ((long)p - (long)vaddr - 4) * 8 + res;
res += ((long)p - (long)vaddr - 4) * 8;
return res < size ? res : size;
}

static inline int find_next_bit(const unsigned long *vaddr, int size,
Expand All @@ -262,13 +270,17 @@ static inline int find_next_bit(const unsigned long *vaddr, int size,
/* Look for one in first longword */
__asm__ __volatile__ ("bfffo %1{#0,#0},%0"
: "=d" (res) : "d" (num & -num));
if (res < 32)
return offset + (res ^ 31);
if (res < 32) {
offset += res ^ 31;
return offset < size ? offset : size;
}
offset += 32;

if (offset >= size)
return size;
}
/* No one yet, search remaining full bytes for a one */
res = find_first_bit(p, size - ((long)p - (long)vaddr) * 8);
return offset + res;
return offset + find_first_bit(p, size - offset);
}

/*
Expand Down Expand Up @@ -366,23 +378,25 @@ static inline int test_bit_le(int nr, const void *vaddr)
static inline int find_first_zero_bit_le(const void *vaddr, unsigned size)
{
const unsigned long *p = vaddr, *addr = vaddr;
int res;
int res = 0;
unsigned int words;

if (!size)
return 0;

size = (size >> 5) + ((size & 31) > 0);
while (*p++ == ~0UL)
{
if (--size == 0)
return (p - addr) << 5;
words = (size >> 5) + ((size & 31) > 0);
while (*p++ == ~0UL) {
if (--words == 0)
goto out;
}

--p;
for (res = 0; res < 32; res++)
if (!test_bit_le(res, p))
break;
return (p - addr) * 32 + res;
out:
res += (p - addr) * 32;
return res < size ? res : size;
}

static inline unsigned long find_next_zero_bit_le(const void *addr,
Expand All @@ -400,10 +414,15 @@ static inline unsigned long find_next_zero_bit_le(const void *addr,
offset -= bit;
/* Look for zero in first longword */
for (res = bit; res < 32; res++)
if (!test_bit_le(res, p))
return offset + res;
if (!test_bit_le(res, p)) {
offset += res;
return offset < size ? offset : size;
}
p++;
offset += 32;

if (offset >= size)
return size;
}
/* No zero yet, search remaining full bytes for a zero */
return offset + find_first_zero_bit_le(p, size - offset);
Expand All @@ -412,22 +431,25 @@ static inline unsigned long find_next_zero_bit_le(const void *addr,
static inline int find_first_bit_le(const void *vaddr, unsigned size)
{
const unsigned long *p = vaddr, *addr = vaddr;
int res;
int res = 0;
unsigned int words;

if (!size)
return 0;

size = (size >> 5) + ((size & 31) > 0);
words = (size >> 5) + ((size & 31) > 0);
while (*p++ == 0UL) {
if (--size == 0)
return (p - addr) << 5;
if (--words == 0)
goto out;
}

--p;
for (res = 0; res < 32; res++)
if (test_bit_le(res, p))
break;
return (p - addr) * 32 + res;
out:
res += (p - addr) * 32;
return res < size ? res : size;
}

static inline unsigned long find_next_bit_le(const void *addr,
Expand All @@ -445,10 +467,15 @@ static inline unsigned long find_next_bit_le(const void *addr,
offset -= bit;
/* Look for one in first longword */
for (res = bit; res < 32; res++)
if (test_bit_le(res, p))
return offset + res;
if (test_bit_le(res, p)) {
offset += res;
return offset < size ? offset : size;
}
p++;
offset += 32;

if (offset >= size)
return size;
}
/* No set bit yet, search remaining full bytes for a set bit */
return offset + find_first_bit_le(p, size - offset);
Expand Down
Loading

0 comments on commit e1f2084

Please sign in to comment.