mirror of
https://github.com/tinygo-org/tinygo.git
synced 2026-08-08 13:03:39 +00:00
all: add emulation support for Cortex-M3 with QEMU
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
// +build qemu
|
||||
|
||||
package runtime
|
||||
|
||||
// This file implements the Stellaris LM3S6965 Cortex-M3 chip as implemented by
|
||||
// QEMU.
|
||||
|
||||
import (
|
||||
"device/arm"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
type timeUnit int64
|
||||
|
||||
const tickMicros = 1
|
||||
|
||||
var timestamp timeUnit
|
||||
|
||||
//go:export Reset_Handler
|
||||
func main() {
|
||||
preinit()
|
||||
initAll()
|
||||
mainWrapper()
|
||||
arm.SemihostingCall(arm.SemihostingReportException, arm.SemihostingApplicationExit)
|
||||
abort()
|
||||
}
|
||||
|
||||
func sleepTicks(d timeUnit) {
|
||||
// TODO: actually sleep here for the given time.
|
||||
timestamp += d
|
||||
}
|
||||
|
||||
func ticks() timeUnit {
|
||||
return timestamp
|
||||
}
|
||||
|
||||
//go:volatile
|
||||
type regValue uint32
|
||||
|
||||
// UART0 output register.
|
||||
var stdoutWrite *regValue = (*regValue)(unsafe.Pointer(uintptr(0x4000c000)))
|
||||
|
||||
func putchar(c byte) {
|
||||
*stdoutWrite = regValue(c)
|
||||
}
|
||||
Reference in New Issue
Block a user