65816-llvm-mos/demos/gnoExeced.c
2026-07-07 18:33:48 -05:00

21 lines
863 B
C

// 2nd program for gnoExecProbe (punch-list #5 + #7 exec-into test).
// Proves exec* transferred control: GNO exec replaces the process image in
// place, so this runs in the SAME process after gnoExecProbe's execvp. It
// sets its exec-into marker plus the shared reached-end word, then spins so
// the harness can sample bank-2 memory.
//
// Deployed to /bin as "gnoexeced" via GNO_PROG2 (runInGno.sh copies it to
// /GNO.BOOT/bin), which is how gnoExecProbe's execvp("gnoexeced") resolves
// it through the default $PATH ("/bin /usr/bin").
#include <stdint.h>
#define M(a) (*(volatile uint16_t *)(a))
int main(void) {
M(0x025010UL) = 0xE0EC; // exec-into transferred control here
M(0x025000UL) = 0xC0DE; // reached end (via exec'd program)
for (volatile unsigned long j = 0; j < 300000UL; j++) {
}
return 0;
}