-
Notifications
You must be signed in to change notification settings - Fork 17.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This commit adds AIX operating system to runtime package for ppc64 architecture. Only new files and minor changes are in this commit. Others modifications in files like asm_ppc64.s will be in separate commits. Updates: #25893 Change-Id: I9c5e073f5f3debb43b004ad1167694a5afd31cfd Reviewed-on: https://go-review.googlesource.com/c/138716 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
- Loading branch information
1 parent
c216c3a
commit 9f78aa7
Showing
24 changed files
with
2,042 additions
and
13 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,170 @@ | ||
// Copyright 2018 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. | ||
|
||
// +build ignore | ||
|
||
/* | ||
Input to cgo -godefs | ||
GOARCH=ppc64 go tool cgo -godefs defs_aix.go > defs_aix_ppc64_tmp.go | ||
This is only an helper to create defs_aix_ppc64.go | ||
Go runtime functions require the "linux" name of fields (ss_sp, si_addr, etc) | ||
However, AIX structures don't provide such names and must be modified. | ||
TODO(aix): create a script to automatise defs_aix creation. | ||
Modifications made: | ||
- sigset replaced by a [4]uint64 array | ||
- add sigset_all variable | ||
- siginfo.si_addr uintptr instead of *byte | ||
- add (*timeval) set_usec | ||
- stackt.ss_sp uintptr instead of *byte | ||
- stackt.ss_size uintptr instead of uint64 | ||
- sigcontext.sc_jmpbuf context64 instead of jumbuf | ||
- ucontext.__extctx is a uintptr because we don't need extctx struct | ||
- ucontext.uc_mcontext: replace jumbuf structure by context64 structure | ||
- sigaction.sa_handler represents union field as both are uintptr | ||
- tstate.* replace *byte by uintptr | ||
*/ | ||
|
||
package runtime | ||
|
||
/* | ||
#include <sys/types.h> | ||
#include <sys/errno.h> | ||
#include <sys/time.h> | ||
#include <sys/signal.h> | ||
#include <sys/mman.h> | ||
#include <sys/thread.h> | ||
#include <sys/resource.h> | ||
#include <unistd.h> | ||
#include <fcntl.h> | ||
#include <pthread.h> | ||
#include <semaphore.h> | ||
*/ | ||
import "C" | ||
|
||
const ( | ||
_EPERM = C.EPERM | ||
_ENOENT = C.ENOENT | ||
_EINTR = C.EINTR | ||
_EAGAIN = C.EAGAIN | ||
_ENOMEM = C.ENOMEM | ||
_EACCES = C.EACCES | ||
_EFAULT = C.EFAULT | ||
_EINVAL = C.EINVAL | ||
_ETIMEDOUT = C.ETIMEDOUT | ||
|
||
_PROT_NONE = C.PROT_NONE | ||
_PROT_READ = C.PROT_READ | ||
_PROT_WRITE = C.PROT_WRITE | ||
_PROT_EXEC = C.PROT_EXEC | ||
|
||
_MAP_ANONYMOUS = C.MAP_ANONYMOUS | ||
_MAP_PRIVATE = C.MAP_PRIVATE | ||
_MAP_FIXED = C.MAP_FIXED | ||
_MADV_DONTNEED = C.MADV_DONTNEED | ||
|
||
_SIGHUP = C.SIGHUP | ||
_SIGINT = C.SIGINT | ||
_SIGQUIT = C.SIGQUIT | ||
_SIGILL = C.SIGILL | ||
_SIGTRAP = C.SIGTRAP | ||
_SIGABRT = C.SIGABRT | ||
_SIGBUS = C.SIGBUS | ||
_SIGFPE = C.SIGFPE | ||
_SIGKILL = C.SIGKILL | ||
_SIGUSR1 = C.SIGUSR1 | ||
_SIGSEGV = C.SIGSEGV | ||
_SIGUSR2 = C.SIGUSR2 | ||
_SIGPIPE = C.SIGPIPE | ||
_SIGALRM = C.SIGALRM | ||
_SIGCHLD = C.SIGCHLD | ||
_SIGCONT = C.SIGCONT | ||
_SIGSTOP = C.SIGSTOP | ||
_SIGTSTP = C.SIGTSTP | ||
_SIGTTIN = C.SIGTTIN | ||
_SIGTTOU = C.SIGTTOU | ||
_SIGURG = C.SIGURG | ||
_SIGXCPU = C.SIGXCPU | ||
_SIGXFSZ = C.SIGXFSZ | ||
_SIGVTALRM = C.SIGVTALRM | ||
_SIGPROF = C.SIGPROF | ||
_SIGWINCH = C.SIGWINCH | ||
_SIGIO = C.SIGIO | ||
_SIGPWR = C.SIGPWR | ||
_SIGSYS = C.SIGSYS | ||
_SIGTERM = C.SIGTERM | ||
_SIGEMT = C.SIGEMT | ||
_SIGWAITING = C.SIGWAITING | ||
|
||
_FPE_INTDIV = C.FPE_INTDIV | ||
_FPE_INTOVF = C.FPE_INTOVF | ||
_FPE_FLTDIV = C.FPE_FLTDIV | ||
_FPE_FLTOVF = C.FPE_FLTOVF | ||
_FPE_FLTUND = C.FPE_FLTUND | ||
_FPE_FLTRES = C.FPE_FLTRES | ||
_FPE_FLTINV = C.FPE_FLTINV | ||
_FPE_FLTSUB = C.FPE_FLTSUB | ||
|
||
_BUS_ADRALN = C.BUS_ADRALN | ||
_BUS_ADRERR = C.BUS_ADRERR | ||
_BUS_OBJERR = C.BUS_OBJERR | ||
|
||
_SEGV_MAPERR = C.SEGV_MAPERR | ||
_SEGV_ACCERR = C.SEGV_ACCERR | ||
|
||
_ITIMER_REAL = C.ITIMER_REAL | ||
_ITIMER_VIRTUAL = C.ITIMER_VIRTUAL | ||
_ITIMER_PROF = C.ITIMER_PROF | ||
|
||
_O_RDONLY = C.O_RDONLY | ||
|
||
_SS_DISABLE = C.SS_DISABLE | ||
_SI_USER = C.SI_USER | ||
_SIG_BLOCK = C.SIG_BLOCK | ||
_SIG_UNBLOCK = C.SIG_UNBLOCK | ||
_SIG_SETMASK = C.SIG_SETMASK | ||
|
||
_SA_SIGINFO = C.SA_SIGINFO | ||
_SA_RESTART = C.SA_RESTART | ||
_SA_ONSTACK = C.SA_ONSTACK | ||
|
||
_PTHREAD_CREATE_DETACHED = C.PTHREAD_CREATE_DETACHED | ||
|
||
__SC_PAGE_SIZE = C._SC_PAGE_SIZE | ||
__SC_NPROCESSORS_ONLN = C._SC_NPROCESSORS_ONLN | ||
|
||
_F_SETFD = C.F_SETFD | ||
_F_SETFL = C.F_SETFL | ||
_F_GETFD = C.F_GETFD | ||
_F_GETFL = C.F_GETFL | ||
_FD_CLOEXEC = C.FD_CLOEXEC | ||
) | ||
|
||
type sigset C.sigset_t | ||
type siginfo C.siginfo_t | ||
type timespec C.struct_timespec | ||
type timestruc C.struct_timestruc_t | ||
type timeval C.struct_timeval | ||
type itimerval C.struct_itimerval | ||
|
||
type stackt C.stack_t | ||
type sigcontext C.struct_sigcontext | ||
type ucontext C.ucontext_t | ||
type _Ctype_struct___extctx uint64 // ucontext use a pointer to this structure but it shouldn't be used | ||
type jmpbuf C.struct___jmpbuf | ||
type context64 C.struct___context64 | ||
type sigactiont C.struct_sigaction | ||
type tstate C.struct_tstate | ||
type rusage C.struct_rusage | ||
|
||
type pthread C.pthread_t | ||
type pthread_attr C.pthread_attr_t | ||
|
||
type semt C.sem_t |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,203 @@ | ||
// Copyright 2018 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. | ||
|
||
// +build aix | ||
|
||
package runtime | ||
|
||
const ( | ||
_EPERM = 0x1 | ||
_ENOENT = 0x2 | ||
_EINTR = 0x4 | ||
_EAGAIN = 0xb | ||
_ENOMEM = 0xc | ||
_EACCES = 0xd | ||
_EFAULT = 0xe | ||
_EINVAL = 0x16 | ||
_ETIMEDOUT = 0x4e | ||
|
||
_PROT_NONE = 0x0 | ||
_PROT_READ = 0x1 | ||
_PROT_WRITE = 0x2 | ||
_PROT_EXEC = 0x4 | ||
|
||
_MAP_ANONYMOUS = 0x10 | ||
_MAP_PRIVATE = 0x2 | ||
_MAP_FIXED = 0x100 | ||
_MADV_DONTNEED = 0x4 | ||
|
||
_SIGHUP = 0x1 | ||
_SIGINT = 0x2 | ||
_SIGQUIT = 0x3 | ||
_SIGILL = 0x4 | ||
_SIGTRAP = 0x5 | ||
_SIGABRT = 0x6 | ||
_SIGBUS = 0xa | ||
_SIGFPE = 0x8 | ||
_SIGKILL = 0x9 | ||
_SIGUSR1 = 0x1e | ||
_SIGSEGV = 0xb | ||
_SIGUSR2 = 0x1f | ||
_SIGPIPE = 0xd | ||
_SIGALRM = 0xe | ||
_SIGCHLD = 0x14 | ||
_SIGCONT = 0x13 | ||
_SIGSTOP = 0x11 | ||
_SIGTSTP = 0x12 | ||
_SIGTTIN = 0x15 | ||
_SIGTTOU = 0x16 | ||
_SIGURG = 0x10 | ||
_SIGXCPU = 0x18 | ||
_SIGXFSZ = 0x19 | ||
_SIGVTALRM = 0x22 | ||
_SIGPROF = 0x20 | ||
_SIGWINCH = 0x1c | ||
_SIGIO = 0x17 | ||
_SIGPWR = 0x1d | ||
_SIGSYS = 0xc | ||
_SIGTERM = 0xf | ||
_SIGEMT = 0x7 | ||
_SIGWAITING = 0x27 | ||
|
||
_FPE_INTDIV = 0x14 | ||
_FPE_INTOVF = 0x15 | ||
_FPE_FLTDIV = 0x16 | ||
_FPE_FLTOVF = 0x17 | ||
_FPE_FLTUND = 0x18 | ||
_FPE_FLTRES = 0x19 | ||
_FPE_FLTINV = 0x1a | ||
_FPE_FLTSUB = 0x1b | ||
|
||
_BUS_ADRALN = 0x1 | ||
_BUS_ADRERR = 0x2 | ||
_BUS_OBJERR = 0x3 | ||
_ | ||
_SEGV_MAPERR = 0x32 | ||
_SEGV_ACCERR = 0x33 | ||
|
||
_ITIMER_REAL = 0x0 | ||
_ITIMER_VIRTUAL = 0x1 | ||
_ITIMER_PROF = 0x2 | ||
|
||
_O_RDONLY = 0x0 | ||
|
||
_SS_DISABLE = 0x2 | ||
_SI_USER = 0x0 | ||
_SIG_BLOCK = 0x0 | ||
_SIG_UNBLOCK = 0x1 | ||
_SIG_SETMASK = 0x2 | ||
|
||
_SA_SIGINFO = 0x100 | ||
_SA_RESTART = 0x8 | ||
_SA_ONSTACK = 0x1 | ||
|
||
_PTHREAD_CREATE_DETACHED = 0x1 | ||
|
||
__SC_PAGE_SIZE = 0x30 | ||
__SC_NPROCESSORS_ONLN = 0x48 | ||
|
||
_F_SETFD = 0x2 | ||
_F_SETFL = 0x4 | ||
_F_GETFD = 0x1 | ||
_F_GETFL = 0x3 | ||
_FD_CLOEXEC = 0x1 | ||
) | ||
|
||
type sigset [4]uint64 | ||
|
||
var sigset_all = sigset{^uint64(0), ^uint64(0), ^uint64(0), ^uint64(0)} | ||
|
||
type siginfo struct { | ||
si_signo int32 | ||
si_errno int32 | ||
si_code int32 | ||
si_pid int32 | ||
si_uid uint32 | ||
si_status int32 | ||
si_addr uintptr | ||
si_band int64 | ||
si_value [2]int32 // [8]byte | ||
__si_flags int32 | ||
__pad [3]int32 | ||
} | ||
|
||
type timespec struct { | ||
tv_sec int64 | ||
tv_nsec int64 | ||
} | ||
type timeval struct { | ||
tv_sec int64 | ||
tv_usec int32 | ||
pad_cgo_0 [4]byte | ||
} | ||
|
||
func (tv *timeval) set_usec(x int32) { | ||
tv.tv_usec = x | ||
} | ||
|
||
type itimerval struct { | ||
it_interval timeval | ||
it_value timeval | ||
} | ||
|
||
type stackt struct { | ||
ss_sp uintptr | ||
ss_size uintptr | ||
ss_flags int32 | ||
__pad [4]int32 | ||
pas_cgo_0 [4]byte | ||
} | ||
|
||
type sigcontext struct { | ||
sc_onstack int32 | ||
pad_cgo_0 [4]byte | ||
sc_mask sigset | ||
sc_uerror int32 | ||
sc_jmpbuf context64 | ||
} | ||
|
||
type ucontext struct { | ||
__sc_onstack int32 | ||
pad_cgo_0 [4]byte | ||
uc_sigmask sigset | ||
__sc_error int32 | ||
pad_cgo_1 [4]byte | ||
uc_mcontext context64 | ||
uc_link *ucontext | ||
uc_stack stackt | ||
__extctx uintptr // pointer to struct __extctx but we don't use it | ||
__extctx_magic int32 | ||
__pad int32 | ||
} | ||
|
||
type context64 struct { | ||
gpr [32]uint64 | ||
msr uint64 | ||
iar uint64 | ||
lr uint64 | ||
ctr uint64 | ||
cr uint32 | ||
xer uint32 | ||
fpscr uint32 | ||
fpscrx uint32 | ||
except [1]uint64 | ||
fpr [32]float64 | ||
fpeu uint8 | ||
fpinfo uint8 | ||
fpscr24_31 uint8 | ||
pad [1]uint8 | ||
excp_type int32 | ||
} | ||
|
||
type sigactiont struct { | ||
sa_handler uintptr // a union of two pointer | ||
sa_mask sigset | ||
sa_flags int32 | ||
pad_cgo_0 [4]byte | ||
} | ||
|
||
type pthread uint32 | ||
type pthread_attr *byte | ||
|
||
type semt int32 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.