summaryrefslogtreecommitdiff
path: root/utils/libmach/executable.c
diff options
context:
space:
mode:
authorValery Ushakov <uwe@stderr.spb.ru>2020-11-10 01:01:06 +0300
committerValery Ushakov <uwe@stderr.spb.ru>2020-11-10 01:01:06 +0300
commita93f6c888f6d530420fbb54e2f7fa4572cdc5208 (patch)
treecb1afd76dc6298465dc32e7cacf244c2c02c9700 /utils/libmach/executable.c
parent7828d5d2aa2aeba1588dba190fd80dcab95d982b (diff)
parentff5ab8e7bad9f4c04b5d06dbc4290fe0f43c4467 (diff)
Merged inferno-os/inferno-os into master
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;
}