// 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.

// +build ignore

/*
Input to cgo -cdefs

GOARCH=power64 cgo -cdefs defs_linux.go defs3_linux.go > defs_linux_power64.h
*/

package runtime

/*
#define size_t __kernel_size_t
#define sigset_t __sigset_t // rename the sigset_t here otherwise cgo will complain about "inconsistent definitions for C.sigset_t"
#define	_SYS_TYPES_H	// avoid inclusion of sys/types.h
#include <asm/ucontext.h>
#include <asm-generic/fcntl.h>
*/
import "C"

const (
	O_RDONLY    = C.O_RDONLY
	O_CLOEXEC   = C.O_CLOEXEC
	SA_RESTORER = 0 // unused
)

type Usigset C.__sigset_t

// types used in sigcontext
type Ptregs C.struct_pt_regs
type Gregset C.elf_gregset_t
type FPregset C.elf_fpregset_t
type Vreg C.elf_vrreg_t

type SigaltstackT C.struct_sigaltstack

// PPC64 uses sigcontext in place of mcontext in ucontext.
// see http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/arch/powerpc/include/uapi/asm/ucontext.h
type Sigcontext C.struct_sigcontext
type Ucontext C.struct_ucontext
