Files
tinygo/src/device/arm/semihosting.go
T
Ayke van Laethem c7a23183e8 all: format code according to Go 1.19 rules
Go 1.19 started reformatting code in a way that makes it more obvious
how it will be rendered on pkg.go.dev. It gets it almost right, but not
entirely. Therefore, I had to modify some of the comments so that they
are formatted correctly.
2022-08-04 12:18:32 +02:00

66 lines
2.0 KiB
Go

package arm
// Semihosting commands.
// http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0471c/Bgbjhiea.html
const (
// Regular semihosting calls
SemihostingClock = 0x10
SemihostingClose = 0x02
SemihostingElapsed = 0x30
SemihostingErrno = 0x13
SemihostingFileLen = 0x0C
SemihostingGetCmdline = 0x15
SemihostingHeapInfo = 0x16
SemihostingIsError = 0x08
SemihostingIsTTY = 0x09
SemihostingOpen = 0x01
SemihostingRead = 0x06
SemihostingReadByte = 0x07
SemihostingRemove = 0x0E
SemihostingRename = 0x0F
SemihostingSeek = 0x0A
SemihostingSystem = 0x12
SemihostingTickFreq = 0x31
SemihostingTime = 0x11
SemihostingTmpName = 0x0D
SemihostingWrite = 0x05
SemihostingWrite0 = 0x04
SemihostingWriteByte = 0x03
// Angel semihosting calls
SemihostingEnterSVC = 0x17
SemihostingReportException = 0x18
)
// Special codes for the Angel Semihosting interface.
// https://www.keil.com/support/man/docs/armcc/armcc_pge1358787050566.htm
const (
// Hardware vector reason codes
SemihostingBranchThroughZero = 0x20000
SemihostingUndefinedInstr = 0x20001
SemihostingSoftwareInterrupt = 0x20002
SemihostingPrefetchAbort = 0x20003
SemihostingDataAbort = 0x20004
SemihostingAddressException = 0x20005
SemihostingIRQ = 0x20006
SemihostingFIQ = 0x20007
// Software reason codes
SemihostingBreakPoint = 0x20020
SemihostingWatchPoint = 0x20021
SemihostingStepComplete = 0x20022
SemihostingRunTimeErrorUnknown = 0x20023
SemihostingInternalError = 0x20024
SemihostingUserInterruption = 0x20025
SemihostingApplicationExit = 0x20026
SemihostingStackOverflow = 0x20027
SemihostingDivisionByZero = 0x20028
SemihostingOSSpecific = 0x20029
)
// Call a semihosting function.
// TODO: implement it here using inline assembly.
//
//go:linkname SemihostingCall SemihostingCall
func SemihostingCall(num int, arg uintptr) int