Skip to contentSkip to conversation

MIPS: Introduce set_elf_platform() helper function

PATCH Applied Kevin Cernekee 3 participants 6 messages Apr 16, 2011 – May 12, 2011

Subsystems (2)

v1 of 2 Applied Latest is v2 →

lore
Share & tools
lore
#0 lore raw

PATCH 1/3 MIPS: Introduce set_elf_platform() helper function

From: Robert Millan <[email protected]>

Replace these sequences:

if (cpu == 0)

	__elf_platform = "foo";

with a trivial inline function.

---
 arch/mips/include/asm/elf.h  |    6 ++++++
 arch/mips/kernel/cpu-probe.c |    6 ++----
 2 files changed, 8 insertions(+), 4 deletions(-)
arch/mips/include/asm/elf.h +6 -0
index 455c0ac..455da05 100644
@@ -348,6 +348,12 @@ extern int dump_task_fpu(struct task_struct *, elf_fpregset_t *);
 #define ELF_PLATFORM  __elf_platform
 extern const char *__elf_platform;
 
+static inline void set_elf_platform(int cpu, const char *plat)
+{
+	if (cpu == 0)
+		__elf_platform = plat;
+}
+
 /*
  * See comments in asm-alpha/elf.h, this is the same thing
  * on the MIPS.
arch/mips/kernel/cpu-probe.c +2 -4
index f65d4c8..5633ab1 100644
@@ -956,14 +956,12 @@ static inline void cpu_probe_cavium(struct cpuinfo_mips *c, unsigned int cpu)
 		c->cputype = CPU_CAVIUM_OCTEON_PLUS;
 		__cpu_name[cpu] = "Cavium Octeon+";
 platform:
-		if (cpu == 0)
-			__elf_platform = "octeon";
+		set_elf_platform(cpu, "octeon");
 		break;
 	case PRID_IMP_CAVIUM_CN63XX:
 		c->cputype = CPU_CAVIUM_OCTEON2;
 		__cpu_name[cpu] = "Cavium Octeon II";
-		if (cpu == 0)
-			__elf_platform = "octeon2";
+		set_elf_platform(cpu, "octeon2");
 		break;
 	default:
 		printk(KERN_INFO "Unknown Octeon chip!\n");
Signature · 1 line
1.7.4.3
#1 lore raw

PATCH 2/3 MIPS: Set ELF AT_PLATFORM string for BMIPS processors

---
 arch/mips/kernel/cpu-probe.c |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)
arch/mips/kernel/cpu-probe.c +5 -0
index 5633ab1..e3cf292 100644
@@ -911,12 +911,14 @@ static inline void cpu_probe_broadcom(struct cpuinfo_mips *c, unsigned int cpu)
 	case PRID_IMP_BMIPS32_REV8:
 		c->cputype = CPU_BMIPS32;
 		__cpu_name[cpu] = "Broadcom BMIPS32";
+		set_elf_platform(cpu, "bmips32");
 		break;
 	case PRID_IMP_BMIPS3300:
 	case PRID_IMP_BMIPS3300_ALT:
 	case PRID_IMP_BMIPS3300_BUG:
 		c->cputype = CPU_BMIPS3300;
 		__cpu_name[cpu] = "Broadcom BMIPS3300";
+		set_elf_platform(cpu, "bmips3300");
 		break;
 	case PRID_IMP_BMIPS43XX: {
 		int rev = c->processor_id & 0xff;
@@ -925,15 +927,18 @@ static inline void cpu_probe_broadcom(struct cpuinfo_mips *c, unsigned int cpu)
 				rev <= PRID_REV_BMIPS4380_HI) {
 			c->cputype = CPU_BMIPS4380;
 			__cpu_name[cpu] = "Broadcom BMIPS4380";
+			set_elf_platform(cpu, "bmips4380");
 		} else {
 			c->cputype = CPU_BMIPS4350;
 			__cpu_name[cpu] = "Broadcom BMIPS4350";
+			set_elf_platform(cpu, "bmips4350");
 		}
 		break;
 	}
 	case PRID_IMP_BMIPS5000:
 		c->cputype = CPU_BMIPS5000;
 		__cpu_name[cpu] = "Broadcom BMIPS5000";
+		set_elf_platform(cpu, "bmips5000");
 		c->options |= MIPS_CPU_ULRI;
 		break;
 	}
Signature · 1 line
1.7.4.3
Applied
#2 lore raw

Re: [PATCH 2/3] MIPS: Set ELF AT_PLATFORM string for BMIPS processors

Queued for 2.6.40. Thanks Kevin!

Ralf

#3 lore raw

PATCH 3/3 MIPS: Set ELF AT_PLATFORM string for Loongson2 processors

In reply to Kevin Cernekee

From: Robert Millan <[email protected]>

---
 arch/mips/kernel/cpu-probe.c |   10 ++++++++++
 1 files changed, 10 insertions(+), 0 deletions(-)
arch/mips/kernel/cpu-probe.c +10 -0
index e3cf292..27ef0fc 100644
@@ -614,6 +614,16 @@ static inline void cpu_probe_legacy(struct cpuinfo_mips *c, unsigned int cpu)
 	case PRID_IMP_LOONGSON2:
 		c->cputype = CPU_LOONGSON2;
 		__cpu_name[cpu] = "ICT Loongson-2";
+
+		switch (c->processor_id & PRID_REV_MASK) {
+		case PRID_REV_LOONGSON2E:
+			set_elf_platform(cpu, "loongson2e");
+			break;
+		case PRID_REV_LOONGSON2F:
+			set_elf_platform(cpu, "loongson2f");
+			break;
+		}
+
 		c->isa_level = MIPS_CPU_ISA_III;
 		c->options = R4K_OPTS |
 			     MIPS_CPU_FPU | MIPS_CPU_LLSC |
Signature · 1 line
1.7.4.3
Applied
#4 lore raw

Re: [PATCH 3/3] MIPS: Set ELF AT_PLATFORM string for Loongson2 processors

Queued for 2.6.40. Thanks Kevin!

Ralf

#5 lore raw
In reply to Kevin Cernekee
Quoted 22 lines · Kevin Cernekee

From: Robert Millan<[email protected]>

Replace these sequences:

if (cpu == 0)

	__elf_platform = "foo";

with a trivial inline function.

---
  arch/mips/include/asm/elf.h  |    6 ++++++
  arch/mips/kernel/cpu-probe.c |    6 ++----
  2 files changed, 8 insertions(+), 4 deletions(-)
arch/mips/include/asm/elf.h +0 -0
index 455c0ac..455da05 100644

arch/mips/include/asm/elf.h extern int dump_task_fpu(struct task_struct *, elf_fpregset_t *); · line 356

Quoted 9 lines
arch/mips/include/asm/elf.h +6 -0
@@ -348,6 +348,12 @@ extern int dump_task_fpu(struct task_struct *, elf_fpregset_t *);
  #define ELF_PLATFORM  __elf_platform
  extern const char *__elf_platform;
 
+static inline void set_elf_platform(int cpu, const char *plat)
+{
+	if (cpu == 0)
+		__elf_platform = plat;
+}
+

Now I want to NAK it.

This function is only ever used in cpu-probe.c, can't we just put it in there (and then make it non-inline)? The less stuff in elf.h the better.

David Daney

Quoted 24 lines
arch/mips/include/asm/elf.h +0 -0
  /*
   * See comments in asm-alpha/elf.h, this is the same thing
   * on the MIPS.
arch/mips/kernel/cpu-probe.c +2 -4
index f65d4c8..5633ab1 100644
@@ -956,14 +956,12 @@ static inline void cpu_probe_cavium(struct cpuinfo_mips *c, unsigned int cpu)
  		c->cputype = CPU_CAVIUM_OCTEON_PLUS;
  		__cpu_name[cpu] = "Cavium Octeon+";
  platform:
-		if (cpu == 0)
-			__elf_platform = "octeon";
+		set_elf_platform(cpu, "octeon");
  		break;
  	case PRID_IMP_CAVIUM_CN63XX:
  		c->cputype = CPU_CAVIUM_OCTEON2;
  		__cpu_name[cpu] = "Cavium Octeon II";
-		if (cpu == 0)
-			__elf_platform = "octeon2";
+		set_elf_platform(cpu, "octeon2");
  		break;
  	default:
  		printk(KERN_INFO "Unknown Octeon chip!\n");