提交 0d43f512 编写于 作者: L Linus Torvalds

Merge branch 'sh/for-2.6.32' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6

* 'sh/for-2.6.32' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6:
  sh: Fix hugetlbfs dependencies for SH-3 && MMU configurations.
  sh: Document uImage.bin target in archhelp.
  sh: add uImage.bin target
  sh: rsk7203 CONFIG_MTD=n fix
  sh: Check for return_to_handler when unwinding the stack
  sh: Build fix: define more __movmem* symbols
  sh: __irq_entry annotate do_IRQ().

Fix up sh/powerpc conflicts in fs/Kconfig
...@@ -121,6 +121,9 @@ config SYS_SUPPORTS_APM_EMULATION ...@@ -121,6 +121,9 @@ config SYS_SUPPORTS_APM_EMULATION
bool bool
select ARCH_SUSPEND_POSSIBLE select ARCH_SUSPEND_POSSIBLE
config SYS_SUPPORTS_HUGETLBFS
bool
config SYS_SUPPORTS_SMP config SYS_SUPPORTS_SMP
bool bool
...@@ -195,6 +198,7 @@ config CPU_SH4 ...@@ -195,6 +198,7 @@ config CPU_SH4
select CPU_HAS_SR_RB select CPU_HAS_SR_RB
select CPU_HAS_FPU if !CPU_SH4AL_DSP select CPU_HAS_FPU if !CPU_SH4AL_DSP
select SYS_SUPPORTS_TMU select SYS_SUPPORTS_TMU
select SYS_SUPPORTS_HUGETLBFS if MMU
config CPU_SH4A config CPU_SH4A
bool bool
...@@ -209,6 +213,7 @@ config CPU_SH5 ...@@ -209,6 +213,7 @@ config CPU_SH5
bool bool
select CPU_HAS_FPU select CPU_HAS_FPU
select SYS_SUPPORTS_TMU select SYS_SUPPORTS_TMU
select SYS_SUPPORTS_HUGETLBFS if MMU
config CPU_SHX2 config CPU_SHX2
bool bool
......
...@@ -199,7 +199,7 @@ endif ...@@ -199,7 +199,7 @@ endif
libs-$(CONFIG_SUPERH32) := arch/sh/lib/ $(libs-y) libs-$(CONFIG_SUPERH32) := arch/sh/lib/ $(libs-y)
libs-$(CONFIG_SUPERH64) := arch/sh/lib64/ $(libs-y) libs-$(CONFIG_SUPERH64) := arch/sh/lib64/ $(libs-y)
BOOT_TARGETS = uImage uImage.bz2 uImage.gz uImage.lzma uImage.srec \ BOOT_TARGETS = uImage uImage.bz2 uImage.gz uImage.lzma uImage.srec uImage.bin \
zImage vmlinux.srec romImage zImage vmlinux.srec romImage
PHONY += maketools $(BOOT_TARGETS) FORCE PHONY += maketools $(BOOT_TARGETS) FORCE
...@@ -225,6 +225,7 @@ define archhelp ...@@ -225,6 +225,7 @@ define archhelp
@echo ' vmlinux.srec - Create an ELF S-record' @echo ' vmlinux.srec - Create an ELF S-record'
@echo '* uImage - Alias to bootable U-Boot image' @echo '* uImage - Alias to bootable U-Boot image'
@echo ' uImage.srec - Create an S-record for U-Boot' @echo ' uImage.srec - Create an S-record for U-Boot'
@echo ' uImage.bin - Kernel-only image for U-Boot (bin)'
@echo '* uImage.gz - Kernel-only image for U-Boot (gzip)' @echo '* uImage.gz - Kernel-only image for U-Boot (gzip)'
@echo ' uImage.bz2 - Kernel-only image for U-Boot (bzip2)' @echo ' uImage.bz2 - Kernel-only image for U-Boot (bzip2)'
@echo ' uImage.lzma - Kernel-only image for U-Boot (lzma)' @echo ' uImage.lzma - Kernel-only image for U-Boot (lzma)'
......
...@@ -11,10 +11,6 @@ ...@@ -11,10 +11,6 @@
#include <linux/types.h> #include <linux/types.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/mtd/mtd.h>
#include <linux/mtd/partitions.h>
#include <linux/mtd/physmap.h>
#include <linux/mtd/map.h>
#include <linux/smsc911x.h> #include <linux/smsc911x.h>
#include <linux/gpio.h> #include <linux/gpio.h>
#include <linux/leds.h> #include <linux/leds.h>
......
...@@ -15,14 +15,12 @@ ...@@ -15,14 +15,12 @@
#include <linux/mtd/mtd.h> #include <linux/mtd/mtd.h>
#include <linux/mtd/partitions.h> #include <linux/mtd/partitions.h>
#include <linux/mtd/physmap.h> #include <linux/mtd/physmap.h>
#ifdef CONFIG_MTD
#include <linux/mtd/map.h> #include <linux/mtd/map.h>
#endif
#include <asm/machvec.h> #include <asm/machvec.h>
#include <asm/io.h> #include <asm/io.h>
static const char *probes[] = { "cmdlinepart", NULL };
static struct mtd_partition *parsed_partitions;
static struct mtd_partition rsk_partitions[] = { static struct mtd_partition rsk_partitions[] = {
{ {
.name = "Bootloader", .name = "Bootloader",
...@@ -41,6 +39,8 @@ static struct mtd_partition rsk_partitions[] = { ...@@ -41,6 +39,8 @@ static struct mtd_partition rsk_partitions[] = {
}; };
static struct physmap_flash_data flash_data = { static struct physmap_flash_data flash_data = {
.parts = rsk_partitions,
.nr_parts = ARRAY_SIZE(rsk_partitions),
.width = 2, .width = 2,
}; };
...@@ -60,7 +60,8 @@ static struct platform_device flash_device = { ...@@ -60,7 +60,8 @@ static struct platform_device flash_device = {
}, },
}; };
static struct mtd_info *flash_mtd; #ifdef CONFIG_MTD
static const char *probes[] = { "cmdlinepart", NULL };
static struct map_info rsk_flash_map = { static struct map_info rsk_flash_map = {
.name = "RSK+ Flash", .name = "RSK+ Flash",
...@@ -68,6 +69,10 @@ static struct map_info rsk_flash_map = { ...@@ -68,6 +69,10 @@ static struct map_info rsk_flash_map = {
.bankwidth = 2, .bankwidth = 2,
}; };
static struct mtd_info *flash_mtd;
static struct mtd_partition *parsed_partitions;
static void __init set_mtd_partitions(void) static void __init set_mtd_partitions(void)
{ {
int nr_parts = 0; int nr_parts = 0;
...@@ -77,14 +82,14 @@ static void __init set_mtd_partitions(void) ...@@ -77,14 +82,14 @@ static void __init set_mtd_partitions(void)
nr_parts = parse_mtd_partitions(flash_mtd, probes, nr_parts = parse_mtd_partitions(flash_mtd, probes,
&parsed_partitions, 0); &parsed_partitions, 0);
/* If there is no partition table, used the hard coded table */ /* If there is no partition table, used the hard coded table */
if (nr_parts <= 0) { if (nr_parts > 0) {
flash_data.parts = rsk_partitions;
flash_data.nr_parts = ARRAY_SIZE(rsk_partitions);
} else {
flash_data.nr_parts = nr_parts; flash_data.nr_parts = nr_parts;
flash_data.parts = parsed_partitions; flash_data.parts = parsed_partitions;
} }
} }
#else
static inline void set_mtd_partitions(void) {}
#endif
static struct platform_device *rsk_devices[] __initdata = { static struct platform_device *rsk_devices[] __initdata = {
&flash_device, &flash_device,
......
...@@ -20,11 +20,12 @@ CONFIG_BOOT_LINK_OFFSET ?= 0x00800000 ...@@ -20,11 +20,12 @@ CONFIG_BOOT_LINK_OFFSET ?= 0x00800000
CONFIG_ZERO_PAGE_OFFSET ?= 0x00001000 CONFIG_ZERO_PAGE_OFFSET ?= 0x00001000
CONFIG_ENTRY_OFFSET ?= 0x00001000 CONFIG_ENTRY_OFFSET ?= 0x00001000
suffix-y := bin
suffix-$(CONFIG_KERNEL_GZIP) := gz suffix-$(CONFIG_KERNEL_GZIP) := gz
suffix-$(CONFIG_KERNEL_BZIP2) := bz2 suffix-$(CONFIG_KERNEL_BZIP2) := bz2
suffix-$(CONFIG_KERNEL_LZMA) := lzma suffix-$(CONFIG_KERNEL_LZMA) := lzma
targets := zImage vmlinux.srec romImage uImage uImage.srec uImage.gz uImage.bz2 uImage.lzma targets := zImage vmlinux.srec romImage uImage uImage.srec uImage.gz uImage.bz2 uImage.lzma uImage.bin
extra-y += vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 vmlinux.bin.lzma extra-y += vmlinux.bin vmlinux.bin.gz vmlinux.bin.bz2 vmlinux.bin.lzma
subdir- := compressed romimage subdir- := compressed romimage
...@@ -88,6 +89,9 @@ $(obj)/uImage.gz: $(obj)/vmlinux.bin.gz ...@@ -88,6 +89,9 @@ $(obj)/uImage.gz: $(obj)/vmlinux.bin.gz
$(obj)/uImage.lzma: $(obj)/vmlinux.bin.lzma $(obj)/uImage.lzma: $(obj)/vmlinux.bin.lzma
$(call if_changed,uimage,lzma) $(call if_changed,uimage,lzma)
$(obj)/uImage.bin: $(obj)/vmlinux.bin
$(call if_changed,uimage,none)
OBJCOPYFLAGS_vmlinux.srec := -I binary -O srec OBJCOPYFLAGS_vmlinux.srec := -I binary -O srec
$(obj)/vmlinux.srec: $(obj)/compressed/vmlinux $(obj)/vmlinux.srec: $(obj)/compressed/vmlinux
$(call if_changed,objcopy) $(call if_changed,objcopy)
......
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
#include <linux/list.h> #include <linux/list.h>
#include <linux/mempool.h> #include <linux/mempool.h>
#include <linux/mm.h> #include <linux/mm.h>
#include <linux/ftrace.h>
#include <asm/dwarf.h> #include <asm/dwarf.h>
#include <asm/unwinder.h> #include <asm/unwinder.h>
#include <asm/sections.h> #include <asm/sections.h>
...@@ -557,6 +558,27 @@ struct dwarf_frame * dwarf_unwind_stack(unsigned long pc, ...@@ -557,6 +558,27 @@ struct dwarf_frame * dwarf_unwind_stack(unsigned long pc,
if (!pc && !prev) if (!pc && !prev)
pc = (unsigned long)current_text_addr(); pc = (unsigned long)current_text_addr();
#ifdef CONFIG_FUNCTION_GRAPH_TRACER
/*
* If our stack has been patched by the function graph tracer
* then we might see the address of return_to_handler() where we
* expected to find the real return address.
*/
if (pc == (unsigned long)&return_to_handler) {
int index = current->curr_ret_stack;
/*
* We currently have no way of tracking how many
* return_to_handler()'s we've seen. If there is more
* than one patched return address on our stack,
* complain loudly.
*/
WARN_ON(index > 0);
pc = current->ret_stack[index].ret;
}
#endif
frame = mempool_alloc(dwarf_frame_pool, GFP_ATOMIC); frame = mempool_alloc(dwarf_frame_pool, GFP_ATOMIC);
if (!frame) { if (!frame) {
printk(KERN_ERR "Unable to allocate a dwarf frame\n"); printk(KERN_ERR "Unable to allocate a dwarf frame\n");
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#include <linux/module.h> #include <linux/module.h>
#include <linux/kernel_stat.h> #include <linux/kernel_stat.h>
#include <linux/seq_file.h> #include <linux/seq_file.h>
#include <linux/ftrace.h>
#include <asm/processor.h> #include <asm/processor.h>
#include <asm/machvec.h> #include <asm/machvec.h>
#include <asm/uaccess.h> #include <asm/uaccess.h>
...@@ -106,7 +107,7 @@ static union irq_ctx *hardirq_ctx[NR_CPUS] __read_mostly; ...@@ -106,7 +107,7 @@ static union irq_ctx *hardirq_ctx[NR_CPUS] __read_mostly;
static union irq_ctx *softirq_ctx[NR_CPUS] __read_mostly; static union irq_ctx *softirq_ctx[NR_CPUS] __read_mostly;
#endif #endif
asmlinkage int do_IRQ(unsigned int irq, struct pt_regs *regs) asmlinkage __irq_entry int do_IRQ(unsigned int irq, struct pt_regs *regs)
{ {
struct pt_regs *old_regs = set_irq_regs(regs); struct pt_regs *old_regs = set_irq_regs(regs);
#ifdef CONFIG_IRQSTACKS #ifdef CONFIG_IRQSTACKS
......
...@@ -85,6 +85,20 @@ DECLARE_EXPORT(__movstr_i4_even); ...@@ -85,6 +85,20 @@ DECLARE_EXPORT(__movstr_i4_even);
DECLARE_EXPORT(__movstr_i4_odd); DECLARE_EXPORT(__movstr_i4_odd);
DECLARE_EXPORT(__movstrSI12_i4); DECLARE_EXPORT(__movstrSI12_i4);
DECLARE_EXPORT(__movmem); DECLARE_EXPORT(__movmem);
DECLARE_EXPORT(__movmemSI8);
DECLARE_EXPORT(__movmemSI12);
DECLARE_EXPORT(__movmemSI16);
DECLARE_EXPORT(__movmemSI20);
DECLARE_EXPORT(__movmemSI24);
DECLARE_EXPORT(__movmemSI28);
DECLARE_EXPORT(__movmemSI32);
DECLARE_EXPORT(__movmemSI36);
DECLARE_EXPORT(__movmemSI40);
DECLARE_EXPORT(__movmemSI44);
DECLARE_EXPORT(__movmemSI48);
DECLARE_EXPORT(__movmemSI52);
DECLARE_EXPORT(__movmemSI56);
DECLARE_EXPORT(__movmemSI60);
DECLARE_EXPORT(__movmem_i4_even); DECLARE_EXPORT(__movmem_i4_even);
DECLARE_EXPORT(__movmem_i4_odd); DECLARE_EXPORT(__movmem_i4_odd);
DECLARE_EXPORT(__movmemSI12_i4); DECLARE_EXPORT(__movmemSI12_i4);
......
...@@ -227,7 +227,7 @@ endchoice ...@@ -227,7 +227,7 @@ endchoice
choice choice
prompt "HugeTLB page size" prompt "HugeTLB page size"
depends on HUGETLB_PAGE && (CPU_SH4 || CPU_SH5) && MMU depends on HUGETLB_PAGE
default HUGETLB_PAGE_SIZE_1MB if PAGE_SIZE_64KB default HUGETLB_PAGE_SIZE_1MB if PAGE_SIZE_64KB
default HUGETLB_PAGE_SIZE_64K default HUGETLB_PAGE_SIZE_64K
......
...@@ -135,8 +135,8 @@ config TMPFS_POSIX_ACL ...@@ -135,8 +135,8 @@ config TMPFS_POSIX_ACL
config HUGETLBFS config HUGETLBFS
bool "HugeTLB file system support" bool "HugeTLB file system support"
depends on X86 || IA64 || PPC_BOOK3S_64 || SPARC64 || (SUPERH && MMU) || \ depends on X86 || IA64 || PPC_BOOK3S_64 || SPARC64 || (S390 && 64BIT) || \
(S390 && 64BIT) || SYS_SUPPORTS_HUGETLBFS || BROKEN SYS_SUPPORTS_HUGETLBFS || BROKEN
help help
hugetlbfs is a filesystem backing for HugeTLB pages, based on hugetlbfs is a filesystem backing for HugeTLB pages, based on
ramfs. For architectures that support it, say Y here and read ramfs. For architectures that support it, say Y here and read
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册