[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