LCOV - code coverage report
Current view: top level - ballet/sbpf - fd_sbpf_instr.h (source / functions) Hit Total Coverage
Test: cov.lcov Lines: 10 10 100.0 %
Date: 2024-11-13 11:58:15 Functions: 6 50 12.0 %

          Line data    Source code
       1             : #ifndef HEADER_fd_src_ballet_sbpf_fd_sbpf_instr_h
       2             : #define HEADER_fd_src_ballet_sbpf_fd_sbpf_instr_h
       3             : 
       4             : #include "../../util/fd_util.h"
       5             : 
       6             : struct fd_sbpf_opcode_any {
       7             :   uchar op_class  : 3;
       8             :   uchar _unknown  : 5;
       9             : };
      10             : typedef struct fd_sbpf_opcode_any fd_sbpf_opcode_any_t;
      11             : 
      12             : struct fd_sbpf_opcode_normal {
      13             :   uchar op_class  : 3;
      14             :   uchar op_src    : 1;
      15             :   uchar op_mode   : 4;
      16             : };
      17             : typedef struct fd_sbpf_opcode_normal fd_sbpf_opcode_normal_t;
      18             : 
      19             : struct fd_sbpf_opcode_mem {
      20             :   uchar op_class       : 3;
      21             :   uchar op_size        : 2;
      22             :   uchar op_addr_mode   : 3;
      23             : };
      24             : typedef struct fd_sbpf_opcode_mem fd_sbpf_opcode_mem_t;
      25             : 
      26             : union fd_sbpf_opcode {
      27             :   uchar raw;
      28             :   fd_sbpf_opcode_any_t any;
      29             :   fd_sbpf_opcode_normal_t normal;
      30             :   fd_sbpf_opcode_mem_t mem;
      31             : };
      32             : typedef union fd_sbpf_opcode fd_sbpf_opcode_t;
      33             : 
      34             : struct fd_sbpf_instr {
      35             :   fd_sbpf_opcode_t opcode;
      36             :   uchar dst_reg : 4;
      37             :   uchar src_reg : 4;
      38             :   short offset;
      39             :   uint imm;
      40             : };
      41             : typedef struct fd_sbpf_instr fd_sbpf_instr_t;
      42             : 
      43             : FD_PROTOTYPES_BEGIN
      44             : 
      45             : /* FIXME: Use proper fast ulong decoding and unions */
      46             : 
      47             : FD_FN_CONST static inline fd_sbpf_instr_t
      48   919234383 : fd_sbpf_instr( ulong u ) {
      49   919234383 :   union { ulong u; fd_sbpf_instr_t instr; } _;
      50   919234383 :   _.u = u;
      51   919234383 :   return _.instr;
      52   919234383 : }
      53             : 
      54             : FD_FN_CONST static inline ulong
      55   835312512 : fd_sbpf_ulong( fd_sbpf_instr_t instr ) {
      56   835312512 :   union { ulong u; fd_sbpf_instr_t instr; } _;
      57   835312512 :   _.instr = instr;
      58   835312512 :   return _.u;
      59   835312512 : }
      60             : 
      61             : FD_PROTOTYPES_END
      62             : 
      63             : #endif /* HEADER_fd_src_ballet_sbpf_fd_sbpf_instr_h */

Generated by: LCOV version 1.14