...

Source file src/github.com/cilium/ebpf/asm/register.go

Documentation: github.com/cilium/ebpf/asm

     1  package asm
     2  
     3  import (
     4  	"fmt"
     5  )
     6  
     7  // Register is the source or destination of most operations.
     8  type Register uint8
     9  
    10  // R0 contains return values.
    11  const R0 Register = 0
    12  
    13  // Registers for function arguments.
    14  const (
    15  	R1 Register = R0 + 1 + iota
    16  	R2
    17  	R3
    18  	R4
    19  	R5
    20  )
    21  
    22  // Callee saved registers preserved by function calls.
    23  const (
    24  	R6 Register = R5 + 1 + iota
    25  	R7
    26  	R8
    27  	R9
    28  )
    29  
    30  // Read-only frame pointer to access stack.
    31  const (
    32  	R10 Register = R9 + 1
    33  	RFP          = R10
    34  )
    35  
    36  // Pseudo registers used by 64bit loads and jumps
    37  const (
    38  	PseudoMapFD    = R1 // BPF_PSEUDO_MAP_FD
    39  	PseudoMapValue = R2 // BPF_PSEUDO_MAP_VALUE
    40  	PseudoCall     = R1 // BPF_PSEUDO_CALL
    41  	PseudoFunc     = R4 // BPF_PSEUDO_FUNC
    42  )
    43  
    44  func (r Register) String() string {
    45  	v := uint8(r)
    46  	if v == 10 {
    47  		return "rfp"
    48  	}
    49  	return fmt.Sprintf("r%d", v)
    50  }
    51  

View as plain text