riscv: implement VirtIO target

This allows running RISC-V tests in CI using QEMU, which should help
catch bugs.
This commit is contained in:
Ayke van Laethem
2020-03-22 20:11:46 +01:00
committed by Ron Evans
parent c4fd19be99
commit 980068543a
6 changed files with 132 additions and 33 deletions
-33
View File
@@ -16,21 +16,6 @@ import (
type timeUnit int64
//go:extern _sbss
var _sbss [0]byte
//go:extern _ebss
var _ebss [0]byte
//go:extern _sdata
var _sdata [0]byte
//go:extern _sidata
var _sidata [0]byte
//go:extern _edata
var _edata [0]byte
func postinit() {}
//go:export main
@@ -108,24 +93,6 @@ func initPeripherals() {
machine.UART0.Configure(machine.UARTConfig{})
}
func preinit() {
// Initialize .bss: zero-initialized global variables.
ptr := unsafe.Pointer(&_sbss)
for ptr != unsafe.Pointer(&_ebss) {
*(*uint32)(ptr) = 0
ptr = unsafe.Pointer(uintptr(ptr) + 4)
}
// Initialize .data: global variables initialized from flash.
src := unsafe.Pointer(&_sidata)
dst := unsafe.Pointer(&_sdata)
for dst != unsafe.Pointer(&_edata) {
*(*uint32)(dst) = *(*uint32)(src)
dst = unsafe.Pointer(uintptr(dst) + 4)
src = unsafe.Pointer(uintptr(src) + 4)
}
}
func putchar(c byte) {
machine.UART0.WriteByte(c)
}