aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/runtime/runtime_rp2040.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtime/runtime_rp2040.go')
-rw-r--r--src/runtime/runtime_rp2040.go58
1 files changed, 58 insertions, 0 deletions
diff --git a/src/runtime/runtime_rp2040.go b/src/runtime/runtime_rp2040.go
new file mode 100644
index 000000000..162f18f1e
--- /dev/null
+++ b/src/runtime/runtime_rp2040.go
@@ -0,0 +1,58 @@
+// +build rp2040
+
+package runtime
+
+import (
+ "device/arm"
+)
+
+// machineTicks is provided by package machine.
+func machineTicks() uint64
+
+type timeUnit uint64
+
+// ticks returns the number of ticks (microseconds) elapsed since power up.
+func ticks() timeUnit {
+ t := machineTicks()
+ return timeUnit(t)
+}
+
+func ticksToNanoseconds(ticks timeUnit) int64 {
+ return int64(ticks) * 1000
+}
+
+func nanosecondsToTicks(ns int64) timeUnit {
+ return timeUnit(ns / 1000)
+}
+
+func sleepTicks(d timeUnit) {
+ if d == 0 {
+ return
+ }
+ sleepUntil := ticks() + d
+ for ticks() < sleepUntil {
+ }
+}
+
+func waitForEvents() {
+ arm.Asm("wfe")
+}
+
+func putchar(c byte) {
+}
+
+// machineInit is provided by package machine.
+func machineInit()
+
+func init() {
+ machineInit()
+}
+
+func postinit() {}
+
+//export Reset_Handler
+func main() {
+ preinit()
+ run()
+ abort()
+}