Repository navigation
Migrating to GOOS=custom
Andrea Barisani edited this page Nov 11, 2026
·
8 revisions
The Go distribution changes created for GOOS=tamago, and required by the tamago package, are part of an upstream proposal and described in its design document.
Important
These changes will be part of the future major release of tamago-go and tamago, regardless of upstream adoption.
The following Go distribution changes, against the current implementation, are introduced by the proposal:
GOOS=tamago |
GOOS=custom |
|---|---|
GOOSPKG points to module path |
GOOSPKG points to package path |
runtime/goos |
internal/runtime/goospkg |
-ldflags "-T address" |
GOOSPKG TextAddr uintpr (or ldflags) |
runtime/goos.Hwinit0 |
internal/runtime/goospkg.InitHW0 |
runtime/goos.Hwinit1 |
internal/runtime/goospkg.InitHW1 |
runtime/goos.RamStart |
removed |
runtime/goos.RamSize |
removed |
runtime/goos.RamStackOffset |
removed |
runtime.MemRegion |
removed |
runtime.TextRegion |
removed |
runtime.CallOnG0 |
internal/runtime/goospkg·SystemStack |
runtime.Printk |
internal/runtime/goospkg.WriteConsole |
os/signal.Relay |
internal/runtime/goospkg.Relay |
The following tamago library changes, against the current implementation, are implemented to follow the proposal:
GOOS=tamago |
GOOS=custom |
|---|---|
linkhwinit0 (build tag) |
linkinithw0 (build tag) |
linkhwinit1 (build tag) |
linkinithw1 (build tag) |
runtime/goos.RamStart |
mem.RamStart |
runtime/goos.RamSize |
mem.RamSize |
runtime/goos.RamStackOffset |
mem.RamStackOffset |
runtime.MemRegion |
mem.Region |
runtime.TextRegion |
mem.Text |
(*CPU).GetTime |
(*CPU).GetTime(monotonic bool) |
runtime.CPU |
(*CPU).Name |
All changes are implemented in the following repositories:
- Cloud Hypervisor: cloud_hypervisor/vm
- QEMU microvm: qemu/microvm
- Firecracker microvm: firecracker/microvm
- UEFI: uefi/x64
- Google Compute Engine: google/gcp
- USB armory: usbarmory
- MCIMX6ULL-EVK: mx6ullevk
- 8MPLUSLPD4-EVK: imx8mpevk
- EVB-LAN9696-24Port: lan969evb
- Raspberry Pi: pi
- NuMaker-IIoT-NUC980G2: nuc980iiot
- AI Foundry Erbium: erbium_emu
- AI Foundry ET-SoC-1: sys_emu
- MilkV Vega: vega
- Nuclei QEMU: eval_soc
- SiFive Unleashed: sifive_u
- QEMU virt: virt
- AMD/Intel 64-bit: amd64, intel
- NXP i.MX6UL: imx6ul
- NXP i.MX8MP: imx8mp
- Microchip LAN969x: lan969x
- BCM2835: bcm2835
- Nuvoton NUC980: nuc980
- AI Foundry Erbium: erbium
- AI Foundry ET-SoC-1: etsoc1
- Fisilink FSL91030: fsl91030
- SiFive FU540: fu540
- Loongson 3A5000: ls3aa5000