You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge master.kernel.org:/home/rmk/linux-2.6-arm
* master.kernel.org:/home/rmk/linux-2.6-arm: [ARM] 3914/1: [Jornada7xx] - Typo Fix in cpu-sa1110.c (b != B) [ARM] 3913/1: n2100: fix IRQ routing for second ethernet port [ARM] Add KBUILD_IMAGE target support [ARM] Fix suspend oops caused by PXA2xx PCMCIA driver [ARM] Fix i2c-pxa slave mode support [ARM] 3900/1: Fix VFP Division by Zero exception handling. [ARM] 3899/1: Fix the normalization of the denormal double precision number. [ARM] 3909/1: Disable UWIND_INFO for ARM (again) [ARM] Add __must_check to uaccess functions [ARM] Add realview SMP default configuration [ARM] Fix SMP irqflags support
This commit is contained in:
+4
-2
@@ -174,11 +174,13 @@ libs-y := arch/arm/lib/ $(libs-y)
|
||||
|
||||
# Default target when executing plain make
|
||||
ifeq ($(CONFIG_XIP_KERNEL),y)
|
||||
all: xipImage
|
||||
KBUILD_IMAGE := xipImage
|
||||
else
|
||||
all: zImage
|
||||
KBUILD_IMAGE := zImage
|
||||
endif
|
||||
|
||||
all: $(KBUILD_IMAGE)
|
||||
|
||||
boot := arch/arm/boot
|
||||
|
||||
# Update machine arch and proc symlinks if something which affects
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
+13
-7
@@ -7,6 +7,7 @@
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
#include <linux/module.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/spinlock.h>
|
||||
@@ -19,6 +20,7 @@
|
||||
#include <linux/cpu.h>
|
||||
#include <linux/smp.h>
|
||||
#include <linux/seq_file.h>
|
||||
#include <linux/irq.h>
|
||||
|
||||
#include <asm/atomic.h>
|
||||
#include <asm/cacheflush.h>
|
||||
@@ -474,25 +476,26 @@ void show_local_irqs(struct seq_file *p)
|
||||
seq_putc(p, '\n');
|
||||
}
|
||||
|
||||
static void ipi_timer(struct pt_regs *regs)
|
||||
static void ipi_timer(void)
|
||||
{
|
||||
int user = user_mode(regs);
|
||||
|
||||
irq_enter();
|
||||
profile_tick(CPU_PROFILING, regs);
|
||||
update_process_times(user);
|
||||
profile_tick(CPU_PROFILING);
|
||||
update_process_times(user_mode(get_irq_regs()));
|
||||
irq_exit();
|
||||
}
|
||||
|
||||
#ifdef CONFIG_LOCAL_TIMERS
|
||||
asmlinkage void do_local_timer(struct pt_regs *regs)
|
||||
{
|
||||
struct pt_regs *old_regs = set_irq_regs(regs);
|
||||
int cpu = smp_processor_id();
|
||||
|
||||
if (local_timer_ack()) {
|
||||
irq_stat[cpu].local_timer_irqs++;
|
||||
ipi_timer(regs);
|
||||
ipi_timer();
|
||||
}
|
||||
|
||||
set_irq_regs(old_regs);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -551,6 +554,7 @@ asmlinkage void do_IPI(struct pt_regs *regs)
|
||||
{
|
||||
unsigned int cpu = smp_processor_id();
|
||||
struct ipi_data *ipi = &per_cpu(ipi_data, cpu);
|
||||
struct pt_regs *old_regs = set_irq_regs(regs);
|
||||
|
||||
ipi->ipi_count++;
|
||||
|
||||
@@ -574,7 +578,7 @@ asmlinkage void do_IPI(struct pt_regs *regs)
|
||||
|
||||
switch (nextmsg) {
|
||||
case IPI_TIMER:
|
||||
ipi_timer(regs);
|
||||
ipi_timer();
|
||||
break;
|
||||
|
||||
case IPI_RESCHEDULE:
|
||||
@@ -599,6 +603,8 @@ asmlinkage void do_IPI(struct pt_regs *regs)
|
||||
}
|
||||
} while (msgs);
|
||||
}
|
||||
|
||||
set_irq_regs(old_regs);
|
||||
}
|
||||
|
||||
void smp_send_reschedule(int cpu)
|
||||
|
||||
@@ -327,13 +327,12 @@ EXPORT_SYMBOL(restore_time_delta);
|
||||
*/
|
||||
void timer_tick(void)
|
||||
{
|
||||
struct pt_regs *regs = get_irq_regs();
|
||||
profile_tick(CPU_PROFILING);
|
||||
do_leds();
|
||||
do_set_rtc();
|
||||
do_timer(1);
|
||||
#ifndef CONFIG_SMP
|
||||
update_process_times(user_mode(regs));
|
||||
update_process_times(user_mode(get_irq_regs()));
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -85,7 +85,7 @@ n2100_pci_map_irq(struct pci_dev *dev, u8 slot, u8 pin)
|
||||
irq = IRQ_IOP32X_XINT0;
|
||||
} else if (PCI_SLOT(dev->devfn) == 2) {
|
||||
/* RTL8110SB #2 */
|
||||
irq = IRQ_IOP32X_XINT1;
|
||||
irq = IRQ_IOP32X_XINT3;
|
||||
} else if (PCI_SLOT(dev->devfn) == 3) {
|
||||
/* Sil3512 */
|
||||
irq = IRQ_IOP32X_XINT2;
|
||||
|
||||
@@ -83,7 +83,7 @@ static struct sdram_params sdram_tbl[] __initdata = {
|
||||
.refresh = 64000,
|
||||
.cas_latency = 3,
|
||||
}, { /* Samsung K4S281632B-1H */
|
||||
.name = "K4S281632b-1H",
|
||||
.name = "K4S281632B-1H",
|
||||
.rows = 12,
|
||||
.tck = 10,
|
||||
.trp = 20,
|
||||
|
||||
@@ -56,7 +56,7 @@ static void vfp_double_normalise_denormal(struct vfp_double *vd)
|
||||
{
|
||||
int bits = 31 - fls(vd->significand >> 32);
|
||||
if (bits == 31)
|
||||
bits = 62 - fls(vd->significand);
|
||||
bits = 63 - fls(vd->significand);
|
||||
|
||||
vfp_double_dump("normalise_denormal: in", vd);
|
||||
|
||||
|
||||
@@ -148,6 +148,7 @@ static void vfp_raise_exceptions(u32 exceptions, u32 inst, u32 fpscr, struct pt_
|
||||
/*
|
||||
* These are arranged in priority order, least to highest.
|
||||
*/
|
||||
RAISE(FPSCR_DZC, FPSCR_DZE, FPE_FLTDIV);
|
||||
RAISE(FPSCR_IXC, FPSCR_IXE, FPE_FLTRES);
|
||||
RAISE(FPSCR_UFC, FPSCR_UFE, FPE_FLTUND);
|
||||
RAISE(FPSCR_OFC, FPSCR_OFE, FPE_FLTOVF);
|
||||
|
||||
@@ -272,7 +272,8 @@ static int i2c_pxa_wait_slave(struct pxa_i2c *i2c)
|
||||
dev_dbg(&i2c->adap.dev, "%s: %ld: ISR=%08x, ICR=%08x, IBMR=%02x\n",
|
||||
__func__, (long)jiffies, ISR, ICR, IBMR);
|
||||
|
||||
if ((ISR & (ISR_UB|ISR_IBB|ISR_SAD)) == ISR_SAD ||
|
||||
if ((ISR & (ISR_UB|ISR_IBB)) == 0 ||
|
||||
(ISR & ISR_SAD) != 0 ||
|
||||
(ICR & ICR_SCLE) == 0) {
|
||||
if (i2c_debug > 1)
|
||||
dev_dbg(&i2c->adap.dev, "%s: done\n", __func__);
|
||||
@@ -492,7 +493,10 @@ static void i2c_pxa_slave_txempty(struct pxa_i2c *i2c, u32 isr)
|
||||
if (isr & ISR_BED) {
|
||||
/* what should we do here? */
|
||||
} else {
|
||||
int ret = i2c->slave->read(i2c->slave->data);
|
||||
int ret = 0;
|
||||
|
||||
if (i2c->slave != NULL)
|
||||
ret = i2c->slave->read(i2c->slave->data);
|
||||
|
||||
IDBR = ret;
|
||||
ICR |= ICR_TB; /* allow next byte */
|
||||
|
||||
@@ -166,7 +166,7 @@ pxa2xx_pcmcia_frequency_change(struct soc_pcmcia_socket *skt,
|
||||
}
|
||||
#endif
|
||||
|
||||
int pxa2xx_drv_pcmcia_probe(struct device *dev)
|
||||
int __pxa2xx_drv_pcmcia_probe(struct device *dev)
|
||||
{
|
||||
int ret;
|
||||
struct pcmcia_low_level *ops;
|
||||
@@ -203,35 +203,52 @@ int pxa2xx_drv_pcmcia_probe(struct device *dev)
|
||||
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL(pxa2xx_drv_pcmcia_probe);
|
||||
EXPORT_SYMBOL(__pxa2xx_drv_pcmcia_probe);
|
||||
|
||||
static int pxa2xx_drv_pcmcia_resume(struct device *dev)
|
||||
|
||||
static int pxa2xx_drv_pcmcia_probe(struct platform_device *dev)
|
||||
{
|
||||
struct pcmcia_low_level *ops = dev->platform_data;
|
||||
return __pxa2xx_drv_pcmcia_probe(&dev->dev);
|
||||
}
|
||||
|
||||
static int pxa2xx_drv_pcmcia_remove(struct platform_device *dev)
|
||||
{
|
||||
return soc_common_drv_pcmcia_remove(&dev->dev);
|
||||
}
|
||||
|
||||
static int pxa2xx_drv_pcmcia_suspend(struct platform_device *dev, pm_message_t state)
|
||||
{
|
||||
return pcmcia_socket_dev_suspend(&dev->dev, state);
|
||||
}
|
||||
|
||||
static int pxa2xx_drv_pcmcia_resume(struct platform_device *dev)
|
||||
{
|
||||
struct pcmcia_low_level *ops = dev->dev.platform_data;
|
||||
int nr = ops ? ops->nr : 0;
|
||||
|
||||
MECR = nr > 1 ? MECR_CIT | MECR_NOS : (nr > 0 ? MECR_CIT : 0);
|
||||
|
||||
return pcmcia_socket_dev_resume(dev);
|
||||
return pcmcia_socket_dev_resume(&dev->dev);
|
||||
}
|
||||
|
||||
static struct device_driver pxa2xx_pcmcia_driver = {
|
||||
static struct platform_driver pxa2xx_pcmcia_driver = {
|
||||
.probe = pxa2xx_drv_pcmcia_probe,
|
||||
.remove = soc_common_drv_pcmcia_remove,
|
||||
.suspend = pcmcia_socket_dev_suspend,
|
||||
.remove = pxa2xx_drv_pcmcia_remove,
|
||||
.suspend = pxa2xx_drv_pcmcia_suspend,
|
||||
.resume = pxa2xx_drv_pcmcia_resume,
|
||||
.name = "pxa2xx-pcmcia",
|
||||
.bus = &platform_bus_type,
|
||||
.driver = {
|
||||
.name = "pxa2xx-pcmcia",
|
||||
},
|
||||
};
|
||||
|
||||
static int __init pxa2xx_pcmcia_init(void)
|
||||
{
|
||||
return driver_register(&pxa2xx_pcmcia_driver);
|
||||
return platform_driver_register(&pxa2xx_pcmcia_driver);
|
||||
}
|
||||
|
||||
static void __exit pxa2xx_pcmcia_exit(void)
|
||||
{
|
||||
driver_unregister(&pxa2xx_pcmcia_driver);
|
||||
platform_driver_unregister(&pxa2xx_pcmcia_driver);
|
||||
}
|
||||
|
||||
fs_initcall(pxa2xx_pcmcia_init);
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
/* temporary measure */
|
||||
extern int pxa2xx_drv_pcmcia_probe(struct device *);
|
||||
extern int __pxa2xx_drv_pcmcia_probe(struct device *);
|
||||
|
||||
|
||||
@@ -260,7 +260,7 @@ int __init pcmcia_lubbock_init(struct sa1111_dev *sadev)
|
||||
lubbock_set_misc_wr((1 << 15) | (1 << 14), 0);
|
||||
|
||||
sadev->dev.platform_data = &lubbock_pcmcia_ops;
|
||||
ret = pxa2xx_drv_pcmcia_probe(&sadev->dev);
|
||||
ret = __pxa2xx_drv_pcmcia_probe(&sadev->dev);
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
||||
+10
-10
@@ -383,19 +383,19 @@ do { \
|
||||
|
||||
|
||||
#ifdef CONFIG_MMU
|
||||
extern unsigned long __copy_from_user(void *to, const void __user *from, unsigned long n);
|
||||
extern unsigned long __copy_to_user(void __user *to, const void *from, unsigned long n);
|
||||
extern unsigned long __clear_user(void __user *addr, unsigned long n);
|
||||
extern unsigned long __must_check __copy_from_user(void *to, const void __user *from, unsigned long n);
|
||||
extern unsigned long __must_check __copy_to_user(void __user *to, const void *from, unsigned long n);
|
||||
extern unsigned long __must_check __clear_user(void __user *addr, unsigned long n);
|
||||
#else
|
||||
#define __copy_from_user(to,from,n) (memcpy(to, (void __force *)from, n), 0)
|
||||
#define __copy_to_user(to,from,n) (memcpy((void __force *)to, from, n), 0)
|
||||
#define __clear_user(addr,n) (memset((void __force *)addr, 0, n), 0)
|
||||
#endif
|
||||
|
||||
extern unsigned long __strncpy_from_user(char *to, const char __user *from, unsigned long count);
|
||||
extern unsigned long __strnlen_user(const char __user *s, long n);
|
||||
extern unsigned long __must_check __strncpy_from_user(char *to, const char __user *from, unsigned long count);
|
||||
extern unsigned long __must_check __strnlen_user(const char __user *s, long n);
|
||||
|
||||
static inline unsigned long copy_from_user(void *to, const void __user *from, unsigned long n)
|
||||
static inline unsigned long __must_check copy_from_user(void *to, const void __user *from, unsigned long n)
|
||||
{
|
||||
if (access_ok(VERIFY_READ, from, n))
|
||||
n = __copy_from_user(to, from, n);
|
||||
@@ -404,7 +404,7 @@ static inline unsigned long copy_from_user(void *to, const void __user *from, un
|
||||
return n;
|
||||
}
|
||||
|
||||
static inline unsigned long copy_to_user(void __user *to, const void *from, unsigned long n)
|
||||
static inline unsigned long __must_check copy_to_user(void __user *to, const void *from, unsigned long n)
|
||||
{
|
||||
if (access_ok(VERIFY_WRITE, to, n))
|
||||
n = __copy_to_user(to, from, n);
|
||||
@@ -414,14 +414,14 @@ static inline unsigned long copy_to_user(void __user *to, const void *from, unsi
|
||||
#define __copy_to_user_inatomic __copy_to_user
|
||||
#define __copy_from_user_inatomic __copy_from_user
|
||||
|
||||
static inline unsigned long clear_user(void __user *to, unsigned long n)
|
||||
static inline unsigned long __must_check clear_user(void __user *to, unsigned long n)
|
||||
{
|
||||
if (access_ok(VERIFY_WRITE, to, n))
|
||||
n = __clear_user(to, n);
|
||||
return n;
|
||||
}
|
||||
|
||||
static inline long strncpy_from_user(char *dst, const char __user *src, long count)
|
||||
static inline long __must_check strncpy_from_user(char *dst, const char __user *src, long count)
|
||||
{
|
||||
long res = -EFAULT;
|
||||
if (access_ok(VERIFY_READ, src, 1))
|
||||
@@ -431,7 +431,7 @@ static inline long strncpy_from_user(char *dst, const char __user *src, long cou
|
||||
|
||||
#define strlen_user(s) strnlen_user(s, ~0UL >> 1)
|
||||
|
||||
static inline long strnlen_user(const char __user *s, long n)
|
||||
static inline long __must_check strnlen_user(const char __user *s, long n)
|
||||
{
|
||||
unsigned long res = 0;
|
||||
|
||||
|
||||
+1
-1
@@ -341,7 +341,7 @@ config FRAME_POINTER
|
||||
|
||||
config UNWIND_INFO
|
||||
bool "Compile the kernel with frame unwind information"
|
||||
depends on !IA64 && !PARISC
|
||||
depends on !IA64 && !PARISC && !ARM
|
||||
depends on !MODULES || !(MIPS || PPC || SUPERH || V850)
|
||||
help
|
||||
If you say Y here the resulting kernel image will be slightly larger
|
||||
|
||||
Reference in New Issue
Block a user