diff options
Diffstat (limited to 'arch/arm/kernel')
-rw-r--r-- | arch/arm/kernel/Makefile | 2 | ||||
-rw-r--r-- | arch/arm/kernel/debug.S | 10 | ||||
-rw-r--r-- | arch/arm/kernel/elf.c | 17 | ||||
-rw-r--r-- | arch/arm/kernel/module.c | 1 | ||||
-rw-r--r-- | arch/arm/kernel/setup.c | 4 |
5 files changed, 21 insertions, 13 deletions
diff --git a/arch/arm/kernel/Makefile b/arch/arm/kernel/Makefile index 8282f9986527..b6f3c9f80ea7 100644 --- a/arch/arm/kernel/Makefile +++ b/arch/arm/kernel/Makefile @@ -65,7 +65,7 @@ obj-$(CONFIG_CPU_PJ4) += pj4-cp0.o obj-$(CONFIG_IWMMXT) += iwmmxt.o obj-$(CONFIG_CPU_HAS_PMU) += pmu.o obj-$(CONFIG_HW_PERF_EVENTS) += perf_event.o -obj-$(CONFIG_CPU_IDLE) += cpu_pm.o +obj-y += cpu_pm.o AFLAGS_iwmmxt.o := -Wa,-mcpu=iwmmxt ifneq ($(CONFIG_ARCH_EBSA110),y) diff --git a/arch/arm/kernel/debug.S b/arch/arm/kernel/debug.S index bcd66e00bdbe..9126592867f4 100644 --- a/arch/arm/kernel/debug.S +++ b/arch/arm/kernel/debug.S @@ -154,6 +154,11 @@ ENDPROC(printhex2) .ltorg ENTRY(printascii) +#if defined(CONFIG_DEBUG_ICEDCC) && defined(CONFIG_SMP) + mrc p15, 0, r3, c0, c0, 5 + ands r3, r3, #3 + movne pc, lr +#endif addruart_current r3, r1, r2 b 2f 1: waituart r2, r3 @@ -170,6 +175,11 @@ ENTRY(printascii) ENDPROC(printascii) ENTRY(printch) +#if defined(CONFIG_DEBUG_ICEDCC) && defined(CONFIG_SMP) + mrc p15, 0, r3, c0, c0, 5 + ands r3, r3, #3 + movne pc, lr +#endif addruart_current r3, r1, r2 mov r1, r0 mov r0, #0 diff --git a/arch/arm/kernel/elf.c b/arch/arm/kernel/elf.c index 9b05c6a0dcea..d4a0da1e48f4 100644 --- a/arch/arm/kernel/elf.c +++ b/arch/arm/kernel/elf.c @@ -40,22 +40,15 @@ EXPORT_SYMBOL(elf_check_arch); void elf_set_personality(const struct elf32_hdr *x) { unsigned int eflags = x->e_flags; - unsigned int personality = current->personality & ~PER_MASK; - - /* - * We only support Linux ELF executables, so always set the - * personality to LINUX. - */ - personality |= PER_LINUX; + unsigned int personality = PER_LINUX_32BIT; /* * APCS-26 is only valid for OABI executables */ - if ((eflags & EF_ARM_EABI_MASK) == EF_ARM_EABI_UNKNOWN && - (eflags & EF_ARM_APCS_26)) - personality &= ~ADDR_LIMIT_32BIT; - else - personality |= ADDR_LIMIT_32BIT; + if ((eflags & EF_ARM_EABI_MASK) == EF_ARM_EABI_UNKNOWN) { + if (eflags & EF_ARM_APCS_26) + personality = PER_LINUX; + } set_personality(personality); diff --git a/arch/arm/kernel/module.c b/arch/arm/kernel/module.c index cc2020c2c709..09326b62780d 100644 --- a/arch/arm/kernel/module.c +++ b/arch/arm/kernel/module.c @@ -89,6 +89,7 @@ apply_relocate(Elf32_Shdr *sechdrs, const char *strtab, unsigned int symindex, break; case R_ARM_ABS32: + case R_ARM_TARGET1: *(u32 *)loc += sym->st_value; break; diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c index e514c76043b4..60496fac7bba 100644 --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c @@ -1002,7 +1002,11 @@ static int c_show(struct seq_file *m, void *v) cpu_name, read_cpuid_id() & 15, elf_platform); #if defined(CONFIG_SMP) +# if defined(CONFIG_REPORT_PRESENT_CPUS) + for_each_present_cpu(i) { +# else for_each_online_cpu(i) { +# endif /* * glibc reads /proc/cpuinfo to determine the number of * online processors, looking for lines beginning with |