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

package runtime

type generalRegs struct {
	rax     uint64
	rbx     uint64
	rcx     uint64
	rdx     uint64
	rsi     uint64
	rdi     uint64
	rbp     uint64
	rsp     uint64
	r8      uint64
	r9      uint64
	r10     uint64
	r11     uint64
	r12     uint64
	r13     uint64
	r14     uint64
	r15     uint64
	rip     uint64
	rflags  uint64
	fs_base uint64
	gs_base uint64
}

func (r *generalRegs) rPC() uintptr { return uintptr(r.rip) }
func (r *generalRegs) rSP() uintptr { return uintptr(r.rsp) }
func (r *generalRegs) rLR() uintptr { return 0 }
