Commit e56b865f authored by Linus Torvalds's avatar Linus Torvalds

Merge ia64 conflicts

parents 3a450ae4 5069356c
...@@ -2669,6 +2669,13 @@ S: Kasarmikatu 11 A4 ...@@ -2669,6 +2669,13 @@ S: Kasarmikatu 11 A4
S: 70110 Kuopio S: 70110 Kuopio
S: Finland S: Finland
N: Luca Risolia
E: luca_ing@libero.it
D: V4L driver for W996[87]CF JPEG USB Dual Mode Camera Chip
S: Via Libertà 41/a
S: Osio Sotto, 24046, Bergamo
S: Italy
N: William E. Roadcap N: William E. Roadcap
E: roadcapw@cfw.com E: roadcapw@cfw.com
W: http://www.cfw.com/~roadcapw W: http://www.cfw.com/~roadcapw
......
This diff is collapsed.
This diff is collapsed.
...@@ -420,7 +420,7 @@ transfer: no ...@@ -420,7 +420,7 @@ transfer: no
prototypes: prototypes:
void (*open)(struct vm_area_struct*); void (*open)(struct vm_area_struct*);
void (*close)(struct vm_area_struct*); void (*close)(struct vm_area_struct*);
struct page *(*nopage)(struct vm_area_struct*, unsigned long, int); struct page *(*nopage)(struct vm_area_struct*, unsigned long, int *);
locking rules: locking rules:
BKL mmap_sem BKL mmap_sem
......
...@@ -24,6 +24,7 @@ restrictions referred to are that the relevant option is valid if: ...@@ -24,6 +24,7 @@ restrictions referred to are that the relevant option is valid if:
HW Appropriate hardware is enabled. HW Appropriate hardware is enabled.
IA-32 IA-32 aka i386 architecture is enabled. IA-32 IA-32 aka i386 architecture is enabled.
IA-64 IA-64 architecture is enabled. IA-64 IA-64 architecture is enabled.
IOSCHED More than one I/O scheduler is enabled.
IP_PNP IP DCHP, BOOTP, or RARP is enabled. IP_PNP IP DCHP, BOOTP, or RARP is enabled.
ISAPNP ISA PnP code is enabled. ISAPNP ISA PnP code is enabled.
ISDN Appropriate ISDN support is enabled. ISDN Appropriate ISDN support is enabled.
...@@ -303,6 +304,10 @@ running once the system is up. ...@@ -303,6 +304,10 @@ running once the system is up.
See comment before function elanfreq_setup() in See comment before function elanfreq_setup() in
arch/i386/kernel/cpu/cpufreq/elanfreq.c. arch/i386/kernel/cpu/cpufreq/elanfreq.c.
elevator= [IOSCHED]
Format: {"as"|"cfq"|"deadline"|"noop"}
See Documentation/as-iosched.txt for details
es1370= [HW,OSS] es1370= [HW,OSS]
Format: <lineout>[,<micbias>] Format: <lineout>[,<micbias>]
See also header of sound/oss/es1370.c. See also header of sound/oss/es1370.c.
...@@ -790,7 +795,8 @@ running once the system is up. ...@@ -790,7 +795,8 @@ running once the system is up.
before loading. before loading.
See Documentation/ramdisk.txt. See Documentation/ramdisk.txt.
psmouse_noext [HW,MOUSE] Disable probing for PS2 mouse protocol extensions psmouse_proto= [HW,MOUSE] Highest PS2 mouse protocol extension to
probe for (bare|imps|exps).
psmouse_resetafter= psmouse_resetafter=
[HW,MOUSE] Try to reset Synaptics Touchpad after so many [HW,MOUSE] Try to reset Synaptics Touchpad after so many
......
...@@ -678,4 +678,23 @@ IPv6 Update by: ...@@ -678,4 +678,23 @@ IPv6 Update by:
Pekka Savola <pekkas@netcore.fi> Pekka Savola <pekkas@netcore.fi>
YOSHIFUJI Hideaki / USAGI Project <yoshfuji@linux-ipv6.org> YOSHIFUJI Hideaki / USAGI Project <yoshfuji@linux-ipv6.org>
/proc/sys/net/bridge/* Variables:
bridge-nf-call-arptables - BOOLEAN
1 : pass bridged ARP traffic to arptables' FORWARD chain.
0 : disable this.
Default: 1
bridge-nf-call-iptables - BOOLEAN
1 : pass bridged IPv4 traffic to iptables' chains.
0 : disable this.
Default: 1
bridge-nf-filter-vlan-tagged - BOOLEAN
1 : pass bridged vlan-tagged ARP/IP traffic to arptables/iptables.
0 : disable this.
Default: 1
$Id: ip-sysctl.txt,v 1.20 2001/12/13 09:00:18 davem Exp $ $Id: ip-sysctl.txt,v 1.20 2001/12/13 09:00:18 davem Exp $
This diff is collapsed.
...@@ -358,6 +358,15 @@ w83877f_wdt.c -- W83877F Computer ...@@ -358,6 +358,15 @@ w83877f_wdt.c -- W83877F Computer
No bits set in GETSUPPORT No bits set in GETSUPPORT
w83627hf_wdt.c -- w83627hf watchdog
Timeout that defaults to 60 seconds, supports SETTIMEOUT.
Supports CONFIG_WATCHDOG_NOWAYOUT
GETSUPPORT returns WDIOF_KEEPALIVEPING and WDIOF_SETTIMEOUT.
The GETSTATUS call returns if the device is open or not.
wdt.c -- ICS WDT500/501 ISA and wdt.c -- ICS WDT500/501 ISA and
wdt_pci.c -- ICS WDT500/501 PCI wdt_pci.c -- ICS WDT500/501 PCI
......
...@@ -73,7 +73,7 @@ S: Status, one of the following: ...@@ -73,7 +73,7 @@ S: Status, one of the following:
3C359 NETWORK DRIVER 3C359 NETWORK DRIVER
P: Mike Phillips P: Mike Phillips
M: mikep@linuxtr.net M: mikep@linuxtr.net
L: linux-net@vger.rutgers.edu L: linux-net@vger.kernel.org
L: linux-tr@linuxtr.net L: linux-tr@linuxtr.net
W: http://www.linuxtr.net W: http://www.linuxtr.net
S: Maintained S: Maintained
...@@ -1469,7 +1469,7 @@ ONSTREAM SCSI TAPE DRIVER ...@@ -1469,7 +1469,7 @@ ONSTREAM SCSI TAPE DRIVER
P: Willem Riede P: Willem Riede
M: osst@riede.org M: osst@riede.org
L: osst@linux1.onstream.nl L: osst@linux1.onstream.nl
L: linux-scsi@vger.rutgers.edu L: linux-scsi@vger.kernel.org
S: Maintained S: Maintained
OPL3-SA2, SA3, and SAx DRIVER OPL3-SA2, SA3, and SAx DRIVER
...@@ -1853,8 +1853,10 @@ L: ultralinux@vger.kernel.org ...@@ -1853,8 +1853,10 @@ L: ultralinux@vger.kernel.org
S: Maintained S: Maintained
SPARC (sparc32): SPARC (sparc32):
P: Keith M. Wesolowski
M: wesolows@foobazco.org
L: sparclinux@vger.kernel.org L: sparclinux@vger.kernel.org
S: Unmaintained - please send patches to mailing list S: Maintained
SPECIALIX IO8+ MULTIPORT SERIAL CARD DRIVER SPECIALIX IO8+ MULTIPORT SERIAL CARD DRIVER
P: Roger Wolff P: Roger Wolff
...@@ -2219,6 +2221,13 @@ M: dbrownell@users.sourceforge.net ...@@ -2219,6 +2221,13 @@ M: dbrownell@users.sourceforge.net
L: linux-usb-devel@lists.sourceforge.net L: linux-usb-devel@lists.sourceforge.net
S: Maintained S: Maintained
USB W996[87]CF DRIVER
P: Luca Risolia
M: luca_ing@libero.it
L: linux-usb-devel@lists.sourceforge.net
W: http://go.lamarinapunto.com
S: Maintained
USER-MODE LINUX USER-MODE LINUX
P: Jeff Dike P: Jeff Dike
M: jdike@karaya.com M: jdike@karaya.com
......
...@@ -275,7 +275,7 @@ NOSTDINC_FLAGS = -nostdinc -iwithprefix include ...@@ -275,7 +275,7 @@ NOSTDINC_FLAGS = -nostdinc -iwithprefix include
CPPFLAGS := -D__KERNEL__ -Iinclude \ CPPFLAGS := -D__KERNEL__ -Iinclude \
$(if $(KBUILD_SRC),-Iinclude2 -I$(srctree)/include) $(if $(KBUILD_SRC),-Iinclude2 -I$(srctree)/include)
CFLAGS := -Wall -Wstrict-prototypes -Wno-trigraphs -O2 \ CFLAGS := -Wall -Wstrict-prototypes -Wno-trigraphs \
-fno-strict-aliasing -fno-common -fno-strict-aliasing -fno-common
AFLAGS := -D__ASSEMBLY__ AFLAGS := -D__ASSEMBLY__
...@@ -431,6 +431,12 @@ libs-y := $(libs-y1) $(libs-y2) ...@@ -431,6 +431,12 @@ libs-y := $(libs-y1) $(libs-y2)
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
CFLAGS += -Os
else
CFLAGS += -O2
endif
ifndef CONFIG_FRAME_POINTER ifndef CONFIG_FRAME_POINTER
CFLAGS += -fomit-frame-pointer CFLAGS += -fomit-frame-pointer
endif endif
......
...@@ -252,9 +252,11 @@ static int ...@@ -252,9 +252,11 @@ static int
irq_affinity_read_proc (char *page, char **start, off_t off, irq_affinity_read_proc (char *page, char **start, off_t off,
int count, int *eof, void *data) int count, int *eof, void *data)
{ {
if (count < HEX_DIGITS+1) int len = cpumask_snprintf(page, count, irq_affinity[(long)data]);
if (count - len < 2)
return -EINVAL; return -EINVAL;
return sprintf (page, "%016lx\n", irq_affinity[(long)data]); len += sprintf(page + len, "\n");
return len;
} }
static unsigned int static unsigned int
...@@ -331,10 +333,11 @@ static int ...@@ -331,10 +333,11 @@ static int
prof_cpu_mask_read_proc(char *page, char **start, off_t off, prof_cpu_mask_read_proc(char *page, char **start, off_t off,
int count, int *eof, void *data) int count, int *eof, void *data)
{ {
unsigned long *mask = (unsigned long *) data; int len = cpumask_snprintf(page, count, *(cpumask_t *)data);
if (count < HEX_DIGITS+1) if (count - len < 2)
return -EINVAL; return -EINVAL;
return sprintf (page, "%016lx\n", *mask); len += sprintf(page + len, "\n");
return len;
} }
static int static int
...@@ -529,19 +532,21 @@ show_interrupts(struct seq_file *p, void *v) ...@@ -529,19 +532,21 @@ show_interrupts(struct seq_file *p, void *v)
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
int j; int j;
#endif #endif
int i; int i = *(loff_t *) v;
struct irqaction * action; struct irqaction * action;
unsigned long flags; unsigned long flags;
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
if (i == 0) {
seq_puts(p, " "); seq_puts(p, " ");
for (i = 0; i < NR_CPUS; i++) for (i = 0; i < NR_CPUS; i++)
if (cpu_online(i)) if (cpu_online(i))
seq_printf(p, "CPU%d ", i); seq_printf(p, "CPU%d ", i);
seq_putc(p, '\n'); seq_putc(p, '\n');
}
#endif #endif
for (i = 0; i < ACTUAL_NR_IRQS; i++) { if (i < ACTUAL_NR_IRQS) {
spin_lock_irqsave(&irq_desc[i].lock, flags); spin_lock_irqsave(&irq_desc[i].lock, flags);
action = irq_desc[i].action; action = irq_desc[i].action;
if (!action) if (!action)
...@@ -568,7 +573,7 @@ show_interrupts(struct seq_file *p, void *v) ...@@ -568,7 +573,7 @@ show_interrupts(struct seq_file *p, void *v)
seq_putc(p, '\n'); seq_putc(p, '\n');
unlock: unlock:
spin_unlock_irqrestore(&irq_desc[i].lock, flags); spin_unlock_irqrestore(&irq_desc[i].lock, flags);
} } else if (i == ACTUAL_NR_IRQS) {
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
seq_puts(p, "IPI: "); seq_puts(p, "IPI: ");
for (i = 0; i < NR_CPUS; i++) for (i = 0; i < NR_CPUS; i++)
...@@ -577,6 +582,7 @@ show_interrupts(struct seq_file *p, void *v) ...@@ -577,6 +582,7 @@ show_interrupts(struct seq_file *p, void *v)
seq_putc(p, '\n'); seq_putc(p, '\n');
#endif #endif
seq_printf(p, "ERR: %10lu\n", irq_err_count); seq_printf(p, "ERR: %10lu\n", irq_err_count);
}
return 0; return 0;
} }
......
...@@ -14,8 +14,6 @@ OBJCOPYFLAGS :=-O binary -R .note -R .comment -S ...@@ -14,8 +14,6 @@ OBJCOPYFLAGS :=-O binary -R .note -R .comment -S
GZFLAGS :=-9 GZFLAGS :=-9
#CFLAGS +=-pipe #CFLAGS +=-pipe
CFLAGS :=$(CFLAGS:-O2=-Os)
ifeq ($(CONFIG_FRAME_POINTER),y) ifeq ($(CONFIG_FRAME_POINTER),y)
CFLAGS +=-fno-omit-frame-pointer -mapcs -mno-sched-prolog CFLAGS +=-fno-omit-frame-pointer -mapcs -mno-sched-prolog
endif endif
......
...@@ -23,10 +23,6 @@ ifeq ($(CONFIG_ARCH_SHARK),y) ...@@ -23,10 +23,6 @@ ifeq ($(CONFIG_ARCH_SHARK),y)
OBJS += head-shark.o ofw-shark.o OBJS += head-shark.o ofw-shark.o
endif endif
ifeq ($(CONFIG_ARCH_INTEGRATOR),y)
OBJS += head-integrator.o
endif
ifeq ($(CONFIG_ARCH_CAMELOT),y) ifeq ($(CONFIG_ARCH_CAMELOT),y)
OBJS += head-epxa10db.o OBJS += head-epxa10db.o
endif endif
......
#include <asm/mach-types.h>
.section ".start", "ax"
mov r7, #MACH_TYPE_INTEGRATOR
...@@ -503,12 +503,6 @@ proc_types: ...@@ -503,12 +503,6 @@ proc_types:
@ Everything from here on will be the new ID system. @ Everything from here on will be the new ID system.
.word 0x41129200 @ ARM920T
.word 0xff00fff0
b __armv4_cache_on
b __armv4_cache_off
b __armv4_cache_flush
.word 0x4401a100 @ sa110 / sa1100 .word 0x4401a100 @ sa110 / sa1100
.word 0xffffffe0 .word 0xffffffe0
b __armv4_cache_on b __armv4_cache_on
...@@ -523,6 +517,12 @@ proc_types: ...@@ -523,6 +517,12 @@ proc_types:
@ These match on the architecture ID @ These match on the architecture ID
.word 0x00020000 @ ARMv4T
.word 0x000f0000
b __armv4_cache_on
b __armv4_cache_off
b __armv4_cache_flush
.word 0x00050000 @ ARMv5TE .word 0x00050000 @ ARMv5TE
.word 0x000f0000 .word 0x000f0000
b __armv4_cache_on b __armv4_cache_on
......
...@@ -34,6 +34,8 @@ ...@@ -34,6 +34,8 @@
#include <asm/hardware/sa1111.h> #include <asm/hardware/sa1111.h>
extern void __init sa1110_mb_enable(void);
/* /*
* We keep the following data for the overall SA1111. Note that the * We keep the following data for the overall SA1111. Note that the
* struct device and struct resource are "fake"; they should be supplied * struct device and struct resource are "fake"; they should be supplied
...@@ -561,6 +563,8 @@ sa1111_init_one_child(struct sa1111 *sachip, struct resource *parent, ...@@ -561,6 +563,8 @@ sa1111_init_one_child(struct sa1111 *sachip, struct resource *parent,
dev->res.name = dev->dev.bus_id; dev->res.name = dev->dev.bus_id;
dev->res.flags = IORESOURCE_MEM; dev->res.flags = IORESOURCE_MEM;
dev->mapbase = sachip->base + info->offset; dev->mapbase = sachip->base + info->offset;
dev->skpcr_mask = info->skpcr_mask;
memmove(dev->irq, info->irq, sizeof(dev->irq));
ret = request_resource(parent, &dev->res); ret = request_resource(parent, &dev->res);
if (ret) { if (ret) {
......
This diff is collapsed.
This diff is collapsed.
...@@ -68,8 +68,8 @@ extern void __umoddi3(void); ...@@ -68,8 +68,8 @@ extern void __umoddi3(void);
extern void __udivmoddi4(void); extern void __udivmoddi4(void);
extern void __udivsi3(void); extern void __udivsi3(void);
extern void __umodsi3(void); extern void __umodsi3(void);
extern void __do_div64(void);
extern void abort(void); extern void abort(void);
extern void do_div64(void);
extern void ret_from_exception(void); extern void ret_from_exception(void);
extern void fpundefinstr(void); extern void fpundefinstr(void);
...@@ -223,7 +223,7 @@ EXPORT_SYMBOL_NOVERS(__umoddi3); ...@@ -223,7 +223,7 @@ EXPORT_SYMBOL_NOVERS(__umoddi3);
EXPORT_SYMBOL_NOVERS(__udivmoddi4); EXPORT_SYMBOL_NOVERS(__udivmoddi4);
EXPORT_SYMBOL_NOVERS(__udivsi3); EXPORT_SYMBOL_NOVERS(__udivsi3);
EXPORT_SYMBOL_NOVERS(__umodsi3); EXPORT_SYMBOL_NOVERS(__umodsi3);
EXPORT_SYMBOL_NOVERS(do_div64); EXPORT_SYMBOL_NOVERS(__do_div64);
/* bitops */ /* bitops */
EXPORT_SYMBOL(_set_bit_le); EXPORT_SYMBOL(_set_bit_le);
......
...@@ -271,6 +271,20 @@ __syscall_start: ...@@ -271,6 +271,20 @@ __syscall_start:
.long sys_ni_syscall /* sys_set_thread_area */ .long sys_ni_syscall /* sys_set_thread_area */
/* 255 */ .long sys_ni_syscall /* sys_get_thread_area */ /* 255 */ .long sys_ni_syscall /* sys_get_thread_area */
.long sys_ni_syscall /* sys_set_tid_address */ .long sys_ni_syscall /* sys_set_tid_address */
.long sys_timer_create
.long sys_timer_settime
.long sys_timer_gettime
/* 260 */ .long sys_timer_getoverrun
.long sys_timer_delete
.long sys_clock_settime
.long sys_clock_gettime
.long sys_clock_getres
/* 265 */ .long sys_clock_nanosleep
.long sys_statfs64
.long sys_fstatfs64
.long sys_tgkill
.long sys_utimes
/* 270 */ .long sys_fadvise64_64
__syscall_end: __syscall_end:
.rept NR_syscalls - (__syscall_end - __syscall_start) / 4 .rept NR_syscalls - (__syscall_end - __syscall_start) / 4
......
...@@ -169,11 +169,11 @@ void disable_irq_wake(unsigned int irq) ...@@ -169,11 +169,11 @@ void disable_irq_wake(unsigned int irq)
int show_interrupts(struct seq_file *p, void *v) int show_interrupts(struct seq_file *p, void *v)
{ {
int i; int i = *(loff_t *) v;
struct irqaction * action; struct irqaction * action;
unsigned long flags; unsigned long flags;
for (i = 0 ; i < NR_IRQS ; i++) { if (i < NR_IRQS) {
spin_lock_irqsave(&irq_controller_lock, flags); spin_lock_irqsave(&irq_controller_lock, flags);
action = irq_desc[i].action; action = irq_desc[i].action;
if (!action) if (!action)
...@@ -187,12 +187,12 @@ int show_interrupts(struct seq_file *p, void *v) ...@@ -187,12 +187,12 @@ int show_interrupts(struct seq_file *p, void *v)
seq_putc(p, '\n'); seq_putc(p, '\n');
unlock: unlock:
spin_unlock_irqrestore(&irq_controller_lock, flags); spin_unlock_irqrestore(&irq_controller_lock, flags);
} } else if (i == NR_IRQS) {
#ifdef CONFIG_ARCH_ACORN #ifdef CONFIG_ARCH_ACORN
show_fiq_list(p, v); show_fiq_list(p, v);
#endif #endif
seq_printf(p, "Err: %10lu\n", irq_err_count); seq_printf(p, "Err: %10lu\n", irq_err_count);
}
return 0; return 0;
} }
......
/*
* linux/arch/arm/lib/div64.S
*
* Optimized computation of 64-bit dividend / 32-bit divisor
*
* Author: Nicolas Pitre
* Created: Oct 5, 2003
* Copyright: Monta Vista Software, Inc.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*/
#include <linux/linkage.h> #include <linux/linkage.h>
#ifndef __ARMEB__ #ifdef __ARMEB__
ql .req r0 @ quotient low #define xh r0
qh .req r1 @ quotient high #define xl r1
onl .req r0 @ original dividend low #define yh r2
onh .req r1 @ original dividend high #define yl r3
nl .req r4 @ dividend low
nh .req r5 @ dividend high
res .req r4 @ result
#else #else
ql .req r1 #define xl r0
qh .req r0 #define xh r1
onl .req r1 #define yl r2
onh .req r0 #define yh r3
nl .req r5
nh .req r4
res .req r5
#endif #endif
dl .req r3 @ divisor low /*
dh .req r2 @ divsor high * __do_div64: perform a division with 64-bit dividend and 32-bit divisor.
*
* Note: Calling convention is totally non standard for optimal code.
ENTRY(do_div64) * This is meant to be used by do_div() from include/asm/div64.h only.
stmfd sp!, {r4, r5, lr} *
mov nl, onl * Input parameters:
movs nh, onh @ if high bits are zero * xh-xl = dividend (clobbered)
movne lr, #33 * r4 = divisor (preserved)
moveq lr, #1 @ only divide low bits *
moveq nh, onl * Output values:
* yh-yl = result
tst dh, #0x80000000 * xh = remainder
bne 2f *
1: cmp nh, dh * Clobbered regs: xl, ip
bls 2f */
add lr, lr, #1
movs dh, dh, lsl #1 @ left justify disor ENTRY(__do_div64)
bpl 1b
@ Test for easy paths first.
2: movs nh, onh subs ip, r4, #1
moveq dl, dh bls 9f @ divisor is 0 or 1
moveq dh, #0 tst ip, r4
movne dl, #0 beq 8f @ divisor is power of 2
mov ql, #0
mov qh, #0 @ See if we need to handle upper 32-bit result.
3: subs ip, nl, dl @ trial subtraction cmp xh, r4
sbcs ip, nh, dh mov yh, #0
movcs nh, ip @ only update if successful blo 3f
subcs nl, nl, dl @ (repeat the subtraction)
adcs ql, ql, ql @ C=1 if successful, shift into @ Align divisor with upper part of dividend.
adc qh, qh, qh @ quotient @ The aligned divisor is stored in yl preserving the original.
movs dh, dh, lsr #1 @ shift base high part right @ The bit position is stored in ip.
mov dl, dl, rrx @ shift base low part right
subs lr, lr, #1 #if __LINUX_ARM_ARCH__ >= 5
bne 3b
clz yl, r4
mov r2, res clz ip, xh
ldmfd sp!, {r4, r5, pc} sub yl, yl, ip
mov ip, #1
mov ip, ip, lsl yl
mov yl, r4, lsl yl
#else
mov yl, r4
mov ip, #1
1: cmp yl, #0x80000000
cmpcc yl, xh
movcc yl, yl, lsl #1
movcc ip, ip, lsl #1
bcc 1b
#endif
@ The division loop for needed upper bit positions.
@ Break out early if dividend reaches 0.
2: cmp xh, yl
orrcs yh, yh, ip
subcss xh, xh, yl
movnes ip, ip, lsr #1
mov yl, yl, lsr #1
bne 2b
@ See if we need to handle lower 32-bit result.
3: cmp xh, #0
mov yl, #0
cmpeq xl, r4
movlo xh, xl
movlo pc, lr
@ The division loop for lower bit positions.
@ Here we shift remainer bits leftwards rather than moving the
@ divisor for comparisons, considering the carry-out bit as well.
mov ip, #0x80000000
4: movs xl, xl, lsl #1
adcs xh, xh, xh
beq 6f
cmpcc xh, r4
5: orrcs yl, yl, ip
subcs xh, xh, r4
movs ip, ip, lsr #1
bne 4b
mov pc, lr
@ The top part of remainder became zero. If carry is set
@ (the 33th bit) this is a false positive so resume the loop.
@ Otherwise, if lower part is also null then we are done.
6: bcs 5b
cmp xl, #0
moveq pc, lr
@ We still have remainer bits in the low part. Bring them up.
#if __LINUX_ARM_ARCH__ >= 5
clz xh, xl @ we know xh is zero here so...
add xh, xh, #1
mov xl, xl, lsl xh
mov ip, ip, lsr xh
#else
7: movs xl, xl, lsl #1
mov ip, ip, lsr #1
bcc 7b
#endif
@ Current remainder is now 1. It is worthless to compare with
@ divisor at this point since divisor can not be smaller than 3 here.
@ If possible, branch for another shift in the division loop.
@ If no bit position left then we are done.
movs ip, ip, lsr #1
mov xh, #1
bne 4b
mov pc, lr
8: @ Division by a power of 2: determine what that divisor order is
@ then simply shift values around
#if __LINUX_ARM_ARCH__ >= 5
clz ip, r4
rsb ip, ip, #31
#else
mov yl, r4
cmp r4, #(1 << 16)
mov ip, #0
movhs yl, yl, lsr #16
movhs ip, #16
cmp yl, #(1 << 8)
movhs yl, yl, lsr #8
addhs ip, ip, #8
cmp yl, #(1 << 4)
movhs yl, yl, lsr #4
addhs ip, ip, #4
cmp yl, #(1 << 2)
addhi ip, ip, #3
addls ip, ip, yl, lsr #1
#endif
mov yh, xh, lsr ip
mov yl, xl, lsr ip
rsb ip, ip, #32
orr yl, yl, xh, lsl ip
mov xh, xl, lsl ip
mov xh, xh, lsr ip
mov pc, lr
@ eq -> division by 1: obvious enough...
9: moveq yl, xl
moveq yh, xh
moveq xh, #0
moveq pc, lr
@ Division by 0:
str lr, [sp, #-4]!
bl __div0
@ as wrong as it could be...
mov yl, #0
mov yh, #0
mov xh, #0
ldr pc, [sp], #4
...@@ -40,6 +40,7 @@ static unsigned long clps711x_gettimeoffset(void) ...@@ -40,6 +40,7 @@ static unsigned long clps711x_gettimeoffset(void)
void __init clps711x_setup_timer(void) void __init clps711x_setup_timer(void)
{ {
struct timespec tv;
unsigned int syscon; unsigned int syscon;
gettimeoffset = clps711x_gettimeoffset; gettimeoffset = clps711x_gettimeoffset;
...@@ -50,5 +51,7 @@ void __init clps711x_setup_timer(void) ...@@ -50,5 +51,7 @@ void __init clps711x_setup_timer(void)
clps_writel(LATCH-1, TC2D); /* 512kHz / 100Hz - 1 */ clps_writel(LATCH-1, TC2D); /* 512kHz / 100Hz - 1 */
xtime.tv_sec = clps_readl(RTCDR); tv.tv_nsec = 0;
tv.tv_sec = clps_readl(RTCDR);
do_settimeofday(&tv);
} }
...@@ -126,7 +126,7 @@ static void __init ap_init_irq(void) ...@@ -126,7 +126,7 @@ static void __init ap_init_irq(void)
writel(-1, VA_IC_BASE + FIQ_ENABLE_CLEAR); writel(-1, VA_IC_BASE + FIQ_ENABLE_CLEAR);
for (i = 0; i < NR_IRQS; i++) { for (i = 0; i < NR_IRQS; i++) {
if (((1 << i) && INTEGRATOR_SC_VALID_INT) != 0) { if (((1 << i) & INTEGRATOR_SC_VALID_INT) != 0) {
set_irq_chip(i, &sc_chip); set_irq_chip(i, &sc_chip);
set_irq_handler(i, do_level_IRQ); set_irq_handler(i, do_level_IRQ);
set_irq_flags(i, IRQF_VALID | IRQF_PROBE); set_irq_flags(i, IRQF_VALID | IRQF_PROBE);
......
...@@ -32,14 +32,14 @@ ENTRY(v3_flush_kern_cache_all) ...@@ -32,14 +32,14 @@ ENTRY(v3_flush_kern_cache_all)
/* FALLTHROUGH */ /* FALLTHROUGH */
/* /*
* flush_user_cache_range(start, end, vm_flags) * flush_user_cache_range(start, end, flags)
* *
* Invalidate a range of cache entries in the specified * Invalidate a range of cache entries in the specified
* address space. * address space.
* *
* - start - start address (may not be aligned) * - start - start address (may not be aligned)
* - end - end address (exclusive, may not be aligned) * - end - end address (exclusive, may not be aligned)
* - vma - vma_area_struct describing address space * - flags - vma_area_struct flags describing address space
*/ */
ENTRY(v3_flush_user_cache_range) ENTRY(v3_flush_user_cache_range)
mov ip, #0 mov ip, #0
......
...@@ -34,14 +34,14 @@ ENTRY(v4_flush_kern_cache_all) ...@@ -34,14 +34,14 @@ ENTRY(v4_flush_kern_cache_all)
mov pc, lr mov pc, lr
/* /*
* flush_user_cache_range(start, end, vma) * flush_user_cache_range(start, end, flags)
* *
* Invalidate a range of cache entries in the specified * Invalidate a range of cache entries in the specified
* address space. * address space.
* *
* - start - start address (may not be aligned) * - start - start address (may not be aligned)
* - end - end address (exclusive, may not be aligned) * - end - end address (exclusive, may not be aligned)
* - vma - vma_area_struct describing address space * - flags - vma_area_struct flags describing address space
*/ */
ENTRY(v4_flush_user_cache_range) ENTRY(v4_flush_user_cache_range)
mov ip, #0 mov ip, #0
......
...@@ -72,14 +72,14 @@ __flush_whole_cache: ...@@ -72,14 +72,14 @@ __flush_whole_cache:
mov pc, lr mov pc, lr
/* /*
* flush_user_cache_range(start, end, vm_flags) * flush_user_cache_range(start, end, flags)
* *
* Invalidate a range of cache entries in the specified * Invalidate a range of cache entries in the specified
* address space. * address space.
* *
* - start - start address (inclusive, page aligned) * - start - start address (inclusive, page aligned)
* - end - end address (exclusive, page aligned) * - end - end address (exclusive, page aligned)
* - vma - vma_area_struct describing address space * - flags - vma_area_struct flags describing address space
*/ */
ENTRY(v4wb_flush_user_cache_range) ENTRY(v4wb_flush_user_cache_range)
sub r3, r1, r0 @ calculate total size sub r3, r1, r0 @ calculate total size
......
...@@ -64,14 +64,14 @@ __flush_whole_cache: ...@@ -64,14 +64,14 @@ __flush_whole_cache:
mov pc, lr mov pc, lr
/* /*
* flush_user_cache_range(start, end, vm_flags) * flush_user_cache_range(start, end, flags)
* *
* Clean and invalidate a range of cache entries in the specified * Clean and invalidate a range of cache entries in the specified
* address space. * address space.
* *
* - start - start address (inclusive, page aligned) * - start - start address (inclusive, page aligned)
* - end - end address (exclusive, page aligned) * - end - end address (exclusive, page aligned)
* - vma - vma_area_struct describing address space * - flags - vma_area_struct flags describing address space
*/ */
ENTRY(v4wt_flush_user_cache_range) ENTRY(v4wt_flush_user_cache_range)
sub r3, r1, r0 @ calculate total size sub r3, r1, r0 @ calculate total size
......
...@@ -135,10 +135,10 @@ void enable_irq(unsigned int irq) ...@@ -135,10 +135,10 @@ void enable_irq(unsigned int irq)
int show_interrupts(struct seq_file *p, void *v) int show_interrupts(struct seq_file *p, void *v)
{ {
int i; int i = *(loff_t *) v;
struct irqaction * action; struct irqaction * action;
for (i = 0 ; i < NR_IRQS ; i++) { if (i < NR_IRQS) {
action = irq_desc[i].action; action = irq_desc[i].action;
if (!action) if (!action)
continue; continue;
...@@ -148,10 +148,10 @@ int show_interrupts(struct seq_file *p, void *v) ...@@ -148,10 +148,10 @@ int show_interrupts(struct seq_file *p, void *v)
seq_printf(p, ", %s", action->name); seq_printf(p, ", %s", action->name);
} }
seq_putc(p, '\n'); seq_putc(p, '\n');
} } else if (i == NR_IRQS) {
show_fiq_list(p, v); show_fiq_list(p, v);
seq_printf(p, "Err: %10lu\n", irq_err_count); seq_printf(p, "Err: %10lu\n", irq_err_count);
}
return 0; return 0;
} }
......
...@@ -89,11 +89,11 @@ static struct irqaction *irq_action[NR_IRQS]; ...@@ -89,11 +89,11 @@ static struct irqaction *irq_action[NR_IRQS];
int show_interrupts(struct seq_file *p, void *v) int show_interrupts(struct seq_file *p, void *v)
{ {
int i; int i = *(loff_t *) v;
struct irqaction * action; struct irqaction * action;
unsigned long flags; unsigned long flags;
for (i = 0; i < NR_IRQS; i++) { if (i < NR_IRQS) {
local_irq_save(flags); local_irq_save(flags);
action = irq_action[i]; action = irq_action[i];
if (!action) if (!action)
......
...@@ -5,6 +5,10 @@ ...@@ -5,6 +5,10 @@
mainmenu "uClinux/h8300 (w/o MMU) Kernel Configuration" mainmenu "uClinux/h8300 (w/o MMU) Kernel Configuration"
config H8300
bool
default y
config MMU config MMU
bool bool
default n default n
......
...@@ -34,7 +34,7 @@ cflags-$(CONFIG_CPU_H8S) := -ms ...@@ -34,7 +34,7 @@ cflags-$(CONFIG_CPU_H8S) := -ms
ldflags-$(CONFIG_CPU_H8S) := -mh8300self ldflags-$(CONFIG_CPU_H8S) := -mh8300self
CFLAGS += $(cflags-y) CFLAGS += $(cflags-y)
CFLAGS += -mint32 -fno-builtin -Os CFLAGS += -mint32 -fno-builtin
CFLAGS += -g CFLAGS += -g
CFLAGS += -D__linux__ CFLAGS += -D__linux__
CFLAGS += -DUTS_SYSNAME=\"uClinux\" CFLAGS += -DUTS_SYSNAME=\"uClinux\"
......
...@@ -228,9 +228,9 @@ asmlinkage void process_int(int vec, struct pt_regs *fp) ...@@ -228,9 +228,9 @@ asmlinkage void process_int(int vec, struct pt_regs *fp)
int show_interrupts(struct seq_file *p, void *v) int show_interrupts(struct seq_file *p, void *v)
{ {
int i; int i = *(loff_t *) v;
for (i = 0; i < NR_IRQS; i++) { if (i < NR_IRQS) {
if (irq_list[i]) { if (irq_list[i]) {
seq_printf(p, "%3d: %10u ",i,irq_list[i]->count); seq_printf(p, "%3d: %10u ",i,irq_list[i]->count);
seq_printf(p, "%s\n", irq_list[i]->devname); seq_printf(p, "%s\n", irq_list[i]->devname);
......
This diff is collapsed.
This diff is collapsed.
...@@ -30,6 +30,7 @@ obj-$(CONFIG_MODULES) += module.o ...@@ -30,6 +30,7 @@ obj-$(CONFIG_MODULES) += module.o
obj-y += sysenter.o vsyscall.o obj-y += sysenter.o vsyscall.o
obj-$(CONFIG_ACPI_SRAT) += srat.o obj-$(CONFIG_ACPI_SRAT) += srat.o
obj-$(CONFIG_HPET_TIMER) += time_hpet.o obj-$(CONFIG_HPET_TIMER) += time_hpet.o
obj-$(CONFIG_EFI) += efi.o efi_stub.o
EXTRA_AFLAGS := -traditional EXTRA_AFLAGS := -traditional
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment