Retro68/gcc/libgo/go/syscall/syscall_linux_s390.go
2017-10-07 02:16:47 +02:00

41 lines
1.0 KiB
Go

// syscall_linux_s390.go -- GNU/Linux s390 specific support
// 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 syscall
import "unsafe"
func (r *PtraceRegs) PC() uint64 { return uint64(r.Psw.Addr) }
func (r *PtraceRegs) SetPC(pc uint64) { r.Psw.Addr = uint32(pc) }
const syscall_PTRACE_PEEKUSR_AREA = 0x5000
const syscall_PTRACE_POKEUSR_AREA = 0x5001
type syscall_ptrace_area struct {
len uint32
kernel_addr uint32
process_addr uint32
}
func PtraceGetRegs(pid int, regs *PtraceRegs) (err error) {
parea := syscall_ptrace_area{
12,
0,
uint32(uintptr(unsafe.Pointer(regs))),
}
return ptrace(syscall_PTRACE_PEEKUSR_AREA, pid, uintptr(unsafe.Pointer(&parea)), 0)
}
func PtraceSetRegs(pid int, regs *PtraceRegs) (err error) {
parea := syscall_ptrace_area{
12,
0,
uint32(uintptr(unsafe.Pointer(regs))),
}
return ptrace(syscall_PTRACE_POKEUSR_AREA, pid, uintptr(unsafe.Pointer(&parea)), 0)
}