summaryrefslogtreecommitdiff
path: root/utils/libmach/executable.c
diff options
context:
space:
mode:
authorRichard Miller <millerresearch@gmail.com>2020-11-09 18:11:51 +0000
committerCharles Forsyth <charles.forsyth@gmail.com>2020-11-09 18:11:51 +0000
commitec7a4b742467a19160dfa5322e3e0880e4abed48 (patch)
tree523d2f81946b1e0abe4afddf1d2fce7e1525b7d7 /utils/libmach/executable.c
parented97654bd7a11d480b44505c8300d06b42e5fefe (diff)
parent6e84dc968bc4eaf047fbefcba2f670940718dda8 (diff)
Merged in millerresearch/inferno-riscv/utils-riscv (pull request #8)
Add toolchain and libmach support for riscv and riscv64 Approved-by: Charles Forsyth <charles.forsyth@gmail.com>
Diffstat (limited to 'utils/libmach/executable.c')
-rw-r--r--utils/libmach/executable.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/utils/libmach/executable.c b/utils/libmach/executable.c
index b9954f0a..2734cf44 100644
--- a/utils/libmach/executable.c
+++ b/utils/libmach/executable.c
@@ -65,6 +65,8 @@ extern Mach mamd64;
extern Mach marm;
extern Mach mpower;
extern Mach mpower64;
+extern Mach mriscv;
+extern Mach mriscv64;
ExecTable exectab[] =
{
@@ -203,6 +205,24 @@ ExecTable exectab[] =
sizeof(Exec),
leswal,
armdotout },
+ { Z_MAGIC, /* riscv i.out */
+ "riscv executable",
+ nil,
+ FRISCV,
+ 0,
+ &mriscv,
+ sizeof(Exec),
+ beswal,
+ common },
+ { Y_MAGIC, /* riscv j.out */
+ "riscv64 executable",
+ nil,
+ FRISCV64,
+ 0,
+ &mriscv64,
+ sizeof(Exec),
+ beswal,
+ common },
{ 0 },
};
@@ -357,6 +377,12 @@ commonboot(Fhdr *fp)
fp->name = "amd64 plan 9 boot image";
fp->dataddr = _round(fp->txtaddr+fp->txtsz, mach->pgsize);
break;
+ case FRISCV:
+ fp->type = FRISCVB;
+ fp->txtaddr = (u32int)fp->entry;
+ fp->name = "riscv plan 9 boot image";
+ fp->dataddr = _round(fp->txtaddr+fp->txtsz, mach->pgsize);
+ break;
default:
return;
}
@@ -580,6 +606,10 @@ elfdotout(int fd, Fhdr *fp, ExecHdr *hp)
mach = &marm;
fp->type = FARM;
break;
+ case RISCV:
+ mach = &mriscv;
+ fp->type = FRISCV;
+ break;
default:
return 0;
}