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:/pub/scm/linux/kernel/git/lethal/sh-2.6.23
* master.kernel.org:/pub/scm/linux/kernel/git/lethal/sh-2.6.23: sh: fix defconfigs for sh7751r boards sh: fix cf support on r2d boards sh: update r2d defconfig sh: update snapgear defconfig. sh: Fix SH-X3 FPU exception handling. sh: Fix pgd mismatch from cached TTB in unhandled fault. sh: Don't include fault-nommu on SH-2/SH-2A. sh: Fix irqflags tracing for SH-3/4 nommu. sh: Fix lockdep debugging oops on SH-3/4.
This commit is contained in:
@@ -140,12 +140,19 @@ static struct platform_device sm501_device = {
|
||||
static struct platform_device *rts7751r2d_devices[] __initdata = {
|
||||
&uart_device,
|
||||
&heartbeat_device,
|
||||
&cf_ide_device,
|
||||
&sm501_device,
|
||||
};
|
||||
|
||||
static int __init rts7751r2d_devices_setup(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (ctrl_inw(PA_BVERREG) == 0x10) { /* only working on R2D-PLUS */
|
||||
ret = platform_device_register(&cf_ide_device);
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
|
||||
return platform_add_devices(rts7751r2d_devices,
|
||||
ARRAY_SIZE(rts7751r2d_devices));
|
||||
}
|
||||
|
||||
@@ -145,7 +145,7 @@ CONFIG_CPU_SH4=y
|
||||
# CONFIG_CPU_SUBTYPE_SH7091 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7750R is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7750S is not set
|
||||
CONFIG_CPU_SUBTYPE_SH7751=y
|
||||
# CONFIG_CPU_SUBTYPE_SH7751 is not set
|
||||
CONFIG_CPU_SUBTYPE_SH7751R=y
|
||||
# CONFIG_CPU_SUBTYPE_SH7760 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH4_202 is not set
|
||||
|
||||
@@ -156,7 +156,7 @@ CONFIG_CPU_SH4=y
|
||||
# CONFIG_CPU_SUBTYPE_SH7091 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7750R is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7750S is not set
|
||||
CONFIG_CPU_SUBTYPE_SH7751=y
|
||||
# CONFIG_CPU_SUBTYPE_SH7751 is not set
|
||||
CONFIG_CPU_SUBTYPE_SH7751R=y
|
||||
# CONFIG_CPU_SUBTYPE_SH7760 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH4_202 is not set
|
||||
|
||||
@@ -159,7 +159,7 @@ CONFIG_CPU_SH4=y
|
||||
# CONFIG_CPU_SUBTYPE_SH7091 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7750R is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7750S is not set
|
||||
CONFIG_CPU_SUBTYPE_SH7751=y
|
||||
# CONFIG_CPU_SUBTYPE_SH7751 is not set
|
||||
CONFIG_CPU_SUBTYPE_SH7751R=y
|
||||
# CONFIG_CPU_SUBTYPE_SH7760 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH4_202 is not set
|
||||
|
||||
@@ -243,8 +243,8 @@ CONFIG_SH_PCLK_FREQ=60000000
|
||||
#
|
||||
# DMA support
|
||||
#
|
||||
CONFIG_SH_DMA=y
|
||||
CONFIG_NR_ONCHIP_DMA_CHANNELS=8
|
||||
# CONFIG_SH_DMA is not set
|
||||
# CONFIG_NR_ONCHIP_DMA_CHANNELS is not set
|
||||
# CONFIG_NR_DMA_CHANNELS_BOOL is not set
|
||||
|
||||
#
|
||||
@@ -280,7 +280,7 @@ CONFIG_ZERO_PAGE_OFFSET=0x00010000
|
||||
CONFIG_BOOT_LINK_OFFSET=0x00800000
|
||||
# CONFIG_UBC_WAKEUP is not set
|
||||
CONFIG_CMDLINE_BOOL=y
|
||||
CONFIG_CMDLINE="console=tty0 console=ttySC0,115200 root=/dev/sda1 earlyprintk=bios"
|
||||
CONFIG_CMDLINE="console=tty0 console=ttySC0,115200 root=/dev/sda1 earlyprintk=serial"
|
||||
|
||||
#
|
||||
# Bus options
|
||||
@@ -1323,7 +1323,7 @@ CONFIG_ENABLE_MUST_CHECK=y
|
||||
# CONFIG_DEBUG_KERNEL is not set
|
||||
CONFIG_LOG_BUF_SHIFT=14
|
||||
# CONFIG_DEBUG_BUGVERBOSE is not set
|
||||
CONFIG_SH_STANDARD_BIOS=y
|
||||
# CONFIG_SH_STANDARD_BIOS is not set
|
||||
CONFIG_EARLY_SCIF_CONSOLE=y
|
||||
CONFIG_EARLY_SCIF_CONSOLE_PORT=0xffe80000
|
||||
CONFIG_EARLY_PRINTK=y
|
||||
|
||||
+234
-343
File diff suppressed because it is too large
Load Diff
@@ -141,7 +141,7 @@ CONFIG_CPU_SH4=y
|
||||
# CONFIG_CPU_SUBTYPE_SH7091 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7750R is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7750S is not set
|
||||
CONFIG_CPU_SUBTYPE_SH7751=y
|
||||
# CONFIG_CPU_SUBTYPE_SH7751 is not set
|
||||
CONFIG_CPU_SUBTYPE_SH7751R=y
|
||||
# CONFIG_CPU_SUBTYPE_SH7760 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH4_202 is not set
|
||||
|
||||
@@ -147,7 +147,7 @@ CONFIG_CPU_SH4=y
|
||||
# CONFIG_CPU_SUBTYPE_SH7091 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7750R is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH7750S is not set
|
||||
CONFIG_CPU_SUBTYPE_SH7751=y
|
||||
# CONFIG_CPU_SUBTYPE_SH7751 is not set
|
||||
CONFIG_CPU_SUBTYPE_SH7751R=y
|
||||
# CONFIG_CPU_SUBTYPE_SH7760 is not set
|
||||
# CONFIG_CPU_SUBTYPE_SH4_202 is not set
|
||||
|
||||
@@ -149,8 +149,7 @@ call_dpf:
|
||||
lds r10, pr
|
||||
rts
|
||||
nop
|
||||
0: sti
|
||||
mov.l 3f, r0
|
||||
0: mov.l 3f, r0
|
||||
mov r9, r6
|
||||
mov r8, r5
|
||||
jmp @r0
|
||||
|
||||
@@ -854,9 +854,14 @@ void __init trap_init(void)
|
||||
set_exception_table_evt(0x800, do_reserved_inst);
|
||||
set_exception_table_evt(0x820, do_illegal_slot_inst);
|
||||
#elif defined(CONFIG_SH_FPU)
|
||||
#ifdef CONFIG_CPU_SUBTYPE_SHX3
|
||||
set_exception_table_evt(0xd80, do_fpu_state_restore);
|
||||
set_exception_table_evt(0xda0, do_fpu_state_restore);
|
||||
#else
|
||||
set_exception_table_evt(0x800, do_fpu_state_restore);
|
||||
set_exception_table_evt(0x820, do_fpu_state_restore);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_CPU_SH2
|
||||
set_exception_table_vec(TRAP_ADDRESS_ERROR, address_error_handler);
|
||||
|
||||
+3
-1
@@ -8,7 +8,9 @@ obj-$(CONFIG_CPU_SH2) += cache-sh2.o
|
||||
obj-$(CONFIG_CPU_SH3) += cache-sh3.o
|
||||
obj-$(CONFIG_CPU_SH4) += cache-sh4.o
|
||||
|
||||
mmu-y := fault-nommu.o tlb-nommu.o pg-nommu.o
|
||||
mmu-y := tlb-nommu.o pg-nommu.o
|
||||
mmu-$(CONFIG_CPU_SH3) += fault-nommu.o
|
||||
mmu-$(CONFIG_CPU_SH4) += fault-nommu.o
|
||||
mmu-$(CONFIG_MMU) := fault.o clear_page.o copy_page.o tlb-flush.o \
|
||||
ioremap.o
|
||||
|
||||
|
||||
+15
-32
@@ -1,47 +1,33 @@
|
||||
/*
|
||||
/*
|
||||
* arch/sh/mm/fault-nommu.c
|
||||
*
|
||||
* Copyright (C) 2002 Paul Mundt
|
||||
* Copyright (C) 2002 - 2007 Paul Mundt
|
||||
*
|
||||
* Based on linux/arch/sh/mm/fault.c:
|
||||
* Copyright (C) 1999 Niibe Yutaka
|
||||
*
|
||||
* Released under the terms of the GNU GPL v2.0.
|
||||
*/
|
||||
|
||||
#include <linux/signal.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/errno.h>
|
||||
#include <linux/string.h>
|
||||
#include <linux/types.h>
|
||||
#include <linux/ptrace.h>
|
||||
#include <linux/mman.h>
|
||||
#include <linux/mm.h>
|
||||
#include <linux/smp.h>
|
||||
#include <linux/interrupt.h>
|
||||
|
||||
#include <linux/hardirq.h>
|
||||
#include <linux/kprobes.h>
|
||||
#include <asm/system.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/uaccess.h>
|
||||
#include <asm/pgalloc.h>
|
||||
#include <asm/mmu_context.h>
|
||||
#include <asm/cacheflush.h>
|
||||
|
||||
#if defined(CONFIG_SH_KGDB)
|
||||
#include <asm/ptrace.h>
|
||||
#include <asm/kgdb.h>
|
||||
#endif
|
||||
|
||||
extern void die(const char *,struct pt_regs *,long);
|
||||
|
||||
/*
|
||||
* This routine handles page faults. It determines the address,
|
||||
* and the problem, and then passes it off to one of the appropriate
|
||||
* routines.
|
||||
*/
|
||||
asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long writeaccess,
|
||||
unsigned long address)
|
||||
asmlinkage void __kprobes do_page_fault(struct pt_regs *regs,
|
||||
unsigned long writeaccess,
|
||||
unsigned long address)
|
||||
{
|
||||
trace_hardirqs_on();
|
||||
local_irq_enable();
|
||||
|
||||
#if defined(CONFIG_SH_KGDB)
|
||||
if (kgdb_nofault && kgdb_bus_err_hook)
|
||||
kgdb_bus_err_hook();
|
||||
@@ -65,17 +51,14 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long writeaccess,
|
||||
do_exit(SIGKILL);
|
||||
}
|
||||
|
||||
asmlinkage int __do_page_fault(struct pt_regs *regs, unsigned long writeaccess,
|
||||
unsigned long address)
|
||||
asmlinkage int __kprobes __do_page_fault(struct pt_regs *regs,
|
||||
unsigned long writeaccess,
|
||||
unsigned long address)
|
||||
{
|
||||
#if defined(CONFIG_SH_KGDB)
|
||||
if (kgdb_nofault && kgdb_bus_err_hook)
|
||||
kgdb_bus_err_hook();
|
||||
#endif
|
||||
|
||||
if (address >= TASK_SIZE)
|
||||
return 1;
|
||||
|
||||
return 0;
|
||||
return (address >= TASK_SIZE);
|
||||
}
|
||||
|
||||
|
||||
+1
-2
@@ -184,8 +184,7 @@ no_context:
|
||||
printk(KERN_ALERT "pc = %08lx\n", regs->pc);
|
||||
page = (unsigned long)get_TTB();
|
||||
if (page) {
|
||||
page = ((__typeof__(page) *) __va(page))[address >>
|
||||
PGDIR_SHIFT];
|
||||
page = ((__typeof__(page) *)page)[address >> PGDIR_SHIFT];
|
||||
printk(KERN_ALERT "*pde = %08lx\n", page);
|
||||
if (page & _PAGE_PRESENT) {
|
||||
page &= PAGE_MASK;
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
#define PA_VERREG 0xa4000032 /* FPGA Version Register */
|
||||
#define PA_INPORT 0xa4000034 /* KEY Input Port control */
|
||||
#define PA_OUTPORT 0xa4000036 /* LED control */
|
||||
#define PA_DMPORT 0xa4000038 /* DM270 Output Port control */
|
||||
#define PA_BVERREG 0xa4000038 /* Board Revision Register */
|
||||
|
||||
#define PA_AX88796L 0xaa000400 /* AX88796L Area */
|
||||
#define PA_VOYAGER 0xab000000 /* VOYAGER GX Area */
|
||||
|
||||
Reference in New Issue
Block a user