summaryrefslogtreecommitdiff
path: root/sys/src/9/port/rebootcmd.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/src/9/port/rebootcmd.c')
-rw-r--r--sys/src/9/port/rebootcmd.c27
1 files changed, 10 insertions, 17 deletions
diff --git a/sys/src/9/port/rebootcmd.c b/sys/src/9/port/rebootcmd.c
index 517d25a03..4f3b8fb03 100644
--- a/sys/src/9/port/rebootcmd.c
+++ b/sys/src/9/port/rebootcmd.c
@@ -6,16 +6,6 @@
#include "../port/error.h"
#include "a.out.h"
-static ulong
-l2be(long l)
-{
- uchar *cp;
-
- cp = (uchar*)&l;
- return (cp[0]<<24) | (cp[1]<<16) | (cp[2]<<8) | cp[3];
-}
-
-
static void
readn(Chan *c, void *vp, long n)
{
@@ -35,8 +25,11 @@ readn(Chan *c, void *vp, long n)
void
rebootcmd(int argc, char *argv[])
{
+ struct {
+ Exec;
+ uvlong hdr[1];
+ } ehdr;
Chan *c;
- Exec exec;
ulong magic, text, rtext, entry, data, size, align;
uchar *p;
@@ -49,11 +42,11 @@ rebootcmd(int argc, char *argv[])
nexterror();
}
- readn(c, &exec, sizeof(Exec));
- magic = l2be(exec.magic);
- entry = l2be(exec.entry);
- text = l2be(exec.text);
- data = l2be(exec.data);
+ readn(c, &ehdr, sizeof(Exec));
+ magic = beswal(ehdr.magic);
+ entry = beswal(ehdr.entry);
+ text = beswal(ehdr.text);
+ data = beswal(ehdr.data);
if(!(magic == AOUT_MAGIC)){
switch(magic){
@@ -66,7 +59,7 @@ rebootcmd(int argc, char *argv[])
}
}
if(magic & HDR_MAGIC)
- readn(c, &exec, 8);
+ readn(c, ehdr.hdr, sizeof(ehdr.hdr));
switch(magic){
case R_MAGIC: