[PATCH] sh: Remove hardcoded PAGE_SIZE in NetBSD loader
Paul Mundt
lethal at linux-sh.org
Sun Feb 3 23:35:31 EST 2008
The Linux host supports a multitude of page sizes, so having this
hardcoded doesn't really help matters. This also has the benefit of
killing off dependence on asm/ headers when none is needed. While
I'm not suggesting that anyone actually boot NetBSD, without this,
my build also ends up breaking.
Signed-off-by: Paul Mundt <lethal at linux-sh.org>
---
kexec/arch/sh/kexec-netbsd-sh.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/kexec/arch/sh/kexec-netbsd-sh.c b/kexec/arch/sh/kexec-netbsd-sh.c
index a751420..07c7f26 100644
--- a/kexec/arch/sh/kexec-netbsd-sh.c
+++ b/kexec/arch/sh/kexec-netbsd-sh.c
@@ -25,13 +25,10 @@
#include "../../kexec.h"
#include "../../kexec-elf.h"
#include <arch/options.h>
-#include <asm/page.h>
static const int probe_debug = 0;
const extern unsigned char netbsd_booter[];
-#define PAGE_ALIGN(addr) (((addr)+PAGE_SIZE-1)&PAGE_MASK)
-
/*
* netbsd_sh_probe - sanity check the elf image
*
@@ -62,7 +59,7 @@ int netbsd_sh_load(int argc, char **argv, const char *buf, off_t len,
struct kexec_info *info)
{
const char *howto, *miniroot;
- unsigned long entry, start, size;
+ unsigned long entry, start, size, psz;
char *miniroot_buf;
off_t miniroot_length;
unsigned int howto_value;
@@ -105,6 +102,8 @@ int netbsd_sh_load(int argc, char **argv, const char *buf, off_t len,
howto_value = strtol(howto, NULL, 0);
}
+ psz = getpagesize();
+
/* Parse the Elf file */
{
Elf32_Ehdr *ehdr;
@@ -122,7 +121,8 @@ int netbsd_sh_load(int argc, char **argv, const char *buf, off_t len,
if(size < bbs){
size = bbs;
}
- size = PAGE_ALIGN(size);
+
+ size = (size + psz - 1) & ~(psz - 1);
memset(&img[bbs], 0, size-bbs);
add_segment(info, img, size, start, size);
start += size;
@@ -133,7 +133,7 @@ int netbsd_sh_load(int argc, char **argv, const char *buf, off_t len,
if (miniroot) {
miniroot_buf = slurp_file(miniroot, &miniroot_length);
howto_value |= 0x200;
- size = PAGE_ALIGN(miniroot_length);
+ size = (miniroot_length + psz - 1) & ~(psz - 1);
add_segment(info, miniroot_buf, size, start, size);
start += size;
}
More information about the kexec
mailing list