summaryrefslogtreecommitdiff
path: root/arch/arm/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/kernel')
-rw-r--r--arch/arm/kernel/Makefile2
-rw-r--r--arch/arm/kernel/debug.S10
-rw-r--r--arch/arm/kernel/elf.c17
-rw-r--r--arch/arm/kernel/module.c1
-rw-r--r--arch/arm/kernel/setup.c4
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