mirror of
https://github.com/autc04/Retro68.git
synced 2024-12-02 18:53:22 +00:00
59 lines
1.6 KiB
Go
59 lines
1.6 KiB
Go
// Copyright 2014 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package runtime
|
|
|
|
import "unsafe"
|
|
|
|
type stdFunction *byte
|
|
|
|
func stdcall0(fn stdFunction) uintptr
|
|
func stdcall1(fn stdFunction, a0 uintptr) uintptr
|
|
func stdcall2(fn stdFunction, a0, a1 uintptr) uintptr
|
|
func stdcall3(fn stdFunction, a0, a1, a2 uintptr) uintptr
|
|
func stdcall4(fn stdFunction, a0, a1, a2, a3 uintptr) uintptr
|
|
func stdcall5(fn stdFunction, a0, a1, a2, a3, a4 uintptr) uintptr
|
|
func stdcall6(fn stdFunction, a0, a1, a2, a3, a4, a5 uintptr) uintptr
|
|
func stdcall7(fn stdFunction, a0, a1, a2, a3, a4, a5, a6 uintptr) uintptr
|
|
|
|
func asmstdcall(fn unsafe.Pointer)
|
|
func getlasterror() uint32
|
|
func setlasterror(err uint32)
|
|
func usleep1(usec uint32)
|
|
func netpollinit()
|
|
func netpollopen(fd uintptr, pd *pollDesc) int32
|
|
func netpollclose(fd uintptr) int32
|
|
func netpollarm(pd *pollDesc, mode int)
|
|
|
|
func os_sigpipe() {
|
|
gothrow("too many writes on closed pipe")
|
|
}
|
|
|
|
func sigpanic() {
|
|
g := getg()
|
|
if !canpanic(g) {
|
|
gothrow("unexpected signal during runtime execution")
|
|
}
|
|
|
|
switch uint32(g.sig) {
|
|
case _EXCEPTION_ACCESS_VIOLATION:
|
|
if g.sigcode1 < 0x1000 || g.paniconfault {
|
|
panicmem()
|
|
}
|
|
print("unexpected fault address ", hex(g.sigcode1), "\n")
|
|
gothrow("fault")
|
|
case _EXCEPTION_INT_DIVIDE_BY_ZERO:
|
|
panicdivide()
|
|
case _EXCEPTION_INT_OVERFLOW:
|
|
panicoverflow()
|
|
case _EXCEPTION_FLT_DENORMAL_OPERAND,
|
|
_EXCEPTION_FLT_DIVIDE_BY_ZERO,
|
|
_EXCEPTION_FLT_INEXACT_RESULT,
|
|
_EXCEPTION_FLT_OVERFLOW,
|
|
_EXCEPTION_FLT_UNDERFLOW:
|
|
panicfloat()
|
|
}
|
|
gothrow("fault")
|
|
}
|