[PATCH 1/1] Allow building for ppc32 platforms.

Tony Breeds tony at bakeyournoodle.com
Mon Apr 28 19:28:09 EDT 2008


Currently any ppc32 compile will error out with "Please, fix this for
your platform".  While this is a great way to encourage people to update
the code it seesm to be a disinsentive for distros to package
kexec-tools for powerpc (incl. 64-bit).

Make get_memory_ranges() do the right thing in the GameCube case and
fail at runtime for all other ppc32 cases.

Signed-off-by: Tony Breeds <tony at bakeyournoodle.com>
---
Compile tested for 32-bit and 64-bit powerpc

 kexec/arch/ppc/kexec-ppc.c |   53 +++++---------------------------------------
 1 files changed, 6 insertions(+), 47 deletions(-)

diff --git a/kexec/arch/ppc/kexec-ppc.c b/kexec/arch/ppc/kexec-ppc.c
index 9a88f9c..96537f6 100644
--- a/kexec/arch/ppc/kexec-ppc.c
+++ b/kexec/arch/ppc/kexec-ppc.c
@@ -27,62 +27,21 @@ static struct memory_range memory_range[MAX_MEMORY_RANGES];
 int get_memory_ranges(struct memory_range **range, int *ranges,
 					unsigned long kexec_flags)
 {
-	int memory_ranges = 0;
 #ifdef WITH_GAMECUBE
+	int memory_ranges = 0;
+
 	/* RAM - lowmem used by DOLs - framebuffer */
 	memory_range[memory_ranges].start = 0x00003000;
 	memory_range[memory_ranges].end = 0x0174bfff;
 	memory_range[memory_ranges].type = RANGE_RAM;
 	memory_ranges++;
-#else
-#error Please, fix this for your platform
-	const char *iomem = proc_iomem();
-	char line[MAX_LINE];
-	FILE *fp;
-	unsigned long long start, end;
-	char *str;
-	int type, consumed, count;
-
-	fp = fopen(iomem, "r");
-	if (!fp) {
-		fprintf(stderr, "Cannot open %s: %s\n", iomem, strerror(errno));
-		return -1;
-	}
-	while (fgets(line, sizeof(line), fp) != 0) {
-		if (memory_ranges >= MAX_MEMORY_RANGES)
-			break;
-		count = sscanf(line, "%Lx-%Lx : %n", &start, &end, &consumed);
-		if (count != 2)
-			continue;
-		str = line + consumed;
-		end = end + 1;
-#if 0
-		printf("%016Lx-%016Lx : %s\n", start, end, str);
-#endif
-		if (memcmp(str, "System RAM\n", 11) == 0) {
-			type = RANGE_RAM;
-		} else if (memcmp(str, "reserved\n", 9) == 0) {
-			type = RANGE_RESERVED;
-		} else if (memcmp(str, "ACPI Tables\n", 12) == 0) {
-			type = RANGE_ACPI;
-		} else if (memcmp(str, "ACPI Non-volatile Storage\n", 26) == 0) {
-			type = RANGE_ACPI_NVS;
-		} else {
-			continue;
-		}
-		memory_range[memory_ranges].start = start;
-		memory_range[memory_ranges].end = end;
-		memory_range[memory_ranges].type = type;
-#if 0
-		printf("%016Lx-%016Lx : %x\n", start, end, type);
-#endif
-		memory_ranges++;
-	}
-	fclose(fp);
-#endif
 	*range = memory_range;
 	*ranges = memory_ranges;
 	return 0;
+#else
+	fprintf(stderr, "%s(): Unsupported platform\n", __func__);
+	return -1;
+#endif
 }
 
 struct file_type file_type[] = {
-- 
1.5.5.1




More information about the kexec mailing list