From a3b72f0c6d02f96606c200cde04735fd57151805 Mon Sep 17 00:00:00 2001 From: zinc Date: Thu, 15 Oct 2026 14:10:03 +0330 Subject: boot: build the compiler from a pinned wasm seed (seed/zc.wasm, WASI) under wasmtime or node, proven by the fixpoint; seed/MANIFEST hashes; make seed; legacy c bootstrap kept as make genome-c --- src/micro/micro.c | 7 +++++++ src/micro/micro_port.h | 3 +++ 2 files changed, 10 insertions(+) (limited to 'src/micro') diff --git a/src/micro/micro.c b/src/micro/micro.c index 23994dd..39a22b2 100644 --- a/src/micro/micro.c +++ b/src/micro/micro.c @@ -776,6 +776,13 @@ int micro_run(void) micro_msg("zy: genome does not fit\n"); return 1; } +#ifdef MICRO_PORT_IMAGE + /* the port may hand over an image of its own in place of the embedded one + (the wasm bootstrap seed does, to run a freshly built compiler) */ + i = micro_port_image(m, (UCell)GORG, (UCell)FBOT); + if (i < 0) { micro_msg("zy: bad image\n"); return 1; } + if (i == 0) +#endif for (i = 0; i < GLEN; i++) m[GORG + i] = genome_word(i); jknown = 0; return run(GORG); diff --git a/src/micro/micro_port.h b/src/micro/micro_port.h index 9f77987..1653250 100644 --- a/src/micro/micro_port.h +++ b/src/micro/micro_port.h @@ -56,6 +56,9 @@ int micro_eof(void); #define MICRO_WAIT (-2) #define MICRO_SUSPENDED 3 int micro_run(void); +/* with MICRO_PORT_IMAGE defined, the port's micro_port_image(mem, org, end) may load an + image of its own at mem[org..end): 1 when it did, 0 to use the embedded genome, -1 on error. */ +int micro_port_image(Cell *mem, UCell org, UCell end); int micro_resume(void); /* write the low 8 bits. */ -- cgit v1.2.3