ETISS 0.8.0
Extendable Translating Instruction Set Simulator (version 0.8.0)
Functions
RV64IMACFDFuncs.h File Reference
#include "RV64IMACFD.h"
#include "etiss/jit/CPU.h"
#include "etiss/jit/System.h"
#include "etiss/jit/ReturnCode.h"
Include dependency graph for RV64IMACFDFuncs.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

void leave (etiss_int32 priv_lvl)
 Generated on Wed, 08 May 2024 17:36:07 +0200. More...
 
void wait (etiss_int32 flag)
 
etiss_uint8 RV64IMACFD_extension_enabled (ETISS_CPU *const cpu, ETISS_System *const system, void *const *const plugin_pointers, etiss_int8 extension)
 Generated on Wed, 08 May 2024 17:36:07 +0200. More...
 
etiss_uint32 fadd_s (etiss_uint32, etiss_uint32, etiss_uint8)
 
etiss_uint32 fsub_s (etiss_uint32, etiss_uint32, etiss_uint8)
 
etiss_uint32 fmul_s (etiss_uint32, etiss_uint32, etiss_uint8)
 
etiss_uint32 fdiv_s (etiss_uint32, etiss_uint32, etiss_uint8)
 
etiss_uint32 fmadd_s (etiss_uint32, etiss_uint32, etiss_uint32, etiss_uint32, etiss_uint8)
 
etiss_uint32 fsel_s (etiss_uint32, etiss_uint32, etiss_uint32)
 
etiss_uint32 fsqrt_s (etiss_uint32, etiss_uint8)
 
etiss_uint32 fcmp_s (etiss_uint32, etiss_uint32, etiss_uint32)
 
etiss_uint32 fcvt_s (etiss_uint32, etiss_uint32, etiss_uint8)
 
etiss_uint64 fcvt_32_64 (etiss_uint32, etiss_uint32, etiss_uint8)
 
etiss_uint32 fcvt_64_32 (etiss_uint64, etiss_uint32, etiss_uint8)
 
etiss_uint32 unbox_s (etiss_uint64)
 
etiss_uint32 fclass_s (etiss_uint32)
 
etiss_uint32 fget_flags ()
 
etiss_uint8 RV64IMACFD_get_rm (ETISS_CPU *const cpu, ETISS_System *const system, void *const *const plugin_pointers, etiss_uint8 rm)
 
etiss_uint64 fadd_d (etiss_uint64, etiss_uint64, etiss_uint8)
 
etiss_uint64 fsub_d (etiss_uint64, etiss_uint64, etiss_uint8)
 
etiss_uint64 fmul_d (etiss_uint64, etiss_uint64, etiss_uint8)
 
etiss_uint64 fdiv_d (etiss_uint64, etiss_uint64, etiss_uint8)
 
etiss_uint64 fmadd_d (etiss_uint64, etiss_uint64, etiss_uint64, etiss_uint32, etiss_uint8)
 
etiss_uint64 fsel_d (etiss_uint64, etiss_uint64, etiss_uint32)
 
etiss_uint64 fsqrt_d (etiss_uint64, etiss_uint8)
 
etiss_uint64 fcmp_d (etiss_uint64, etiss_uint64, etiss_uint32)
 
etiss_uint64 fcvt_d (etiss_uint64, etiss_uint32, etiss_uint8)
 
etiss_uint32 fconv_d2f (etiss_uint64, etiss_uint8)
 
etiss_uint64 fconv_f2d (etiss_uint32, etiss_uint8)
 
etiss_uint64 unbox_d (etiss_uint64)
 
etiss_uint64 fclass_d (etiss_uint64)
 
etiss_uint64 etiss_get_cycles (ETISS_CPU *const cpu, ETISS_System *const system, void *const *const plugin_pointers)
 
etiss_uint64 etiss_get_time ()
 
etiss_uint64 etiss_get_instret (ETISS_CPU *const cpu, ETISS_System *const system, void *const *const plugin_pointers)
 
etiss_uint64 RV64IMACFD_sstatus_mask (ETISS_CPU *const cpu, ETISS_System *const system, void *const *const plugin_pointers)
 
etiss_uint64 RV64IMACFD_mstatus_mask (ETISS_CPU *const cpu, ETISS_System *const system, void *const *const plugin_pointers)
 
etiss_uint64 RV64IMACFD_csr_read (ETISS_CPU *const cpu, ETISS_System *const system, void *const *const plugin_pointers, etiss_uint32 csr)
 
void RV64IMACFD_csr_write (ETISS_CPU *const cpu, ETISS_System *const system, void *const *const plugin_pointers, etiss_uint32 csr, etiss_uint64 val)
 
etiss_uint64 RV64IMACFD_get_field (etiss_uint64 reg, etiss_uint64 mask)
 
etiss_uint64 RV64IMACFD_set_field (etiss_uint64 reg, etiss_uint64 mask, etiss_uint64 val)
 
etiss_uint8 RV64IMACFD_ctz (etiss_uint64 val)
 
void RV64IMACFD_raise (ETISS_CPU *const cpu, ETISS_System *const system, void *const *const plugin_pointers, etiss_int32 irq, etiss_uint64 mcause)
 
void RV64IMACFD_translate_exc_code (ETISS_CPU *const cpu, ETISS_System *const system, void *const *const plugin_pointers, etiss_int32 cause)
 
etiss_uint64 RV64IMACFD_calc_irq_mcause (ETISS_CPU *const cpu, ETISS_System *const system, void *const *const plugin_pointers)
 
void RV64IMACFD_check_irq (ETISS_CPU *const cpu, ETISS_System *const system, void *const *const plugin_pointers)
 
etiss_int64 RV64IMACFD_mulh (etiss_int64 x, etiss_int64 y)
 
etiss_int64 RV64IMACFD_mulhsu (etiss_int64 x, etiss_uint64 y)
 
etiss_uint64 RV64IMACFD_mulhu (etiss_uint64 x, etiss_uint64 y)
 
etiss_uint8 etiss_semihost_enabled ()
 Checks whether semihosting is enabled in the config. More...
 
etiss_int64 etiss_semihost (ETISS_CPU *const cpu, ETISS_System *const system, void *const *const plugin_pointers, etiss_uint32 XLEN, etiss_uint64 operation, etiss_uint64 parameter)
 Executes the semihosting call based on the operation number. More...
 

Function Documentation

◆ etiss_get_cycles()

etiss_uint64 etiss_get_cycles ( ETISS_CPU *const  cpu,
ETISS_System *const  system,
void *const *const  plugin_pointers 
)

Definition at line 13 of file CSRCounters.cpp.

◆ etiss_get_instret()

etiss_uint64 etiss_get_instret ( ETISS_CPU *const  cpu,
ETISS_System *const  system,
void *const *const  plugin_pointers 
)

Definition at line 26 of file CSRCounters.cpp.

◆ etiss_get_time()

etiss_uint64 etiss_get_time ( )

Definition at line 18 of file CSRCounters.cpp.

◆ etiss_semihost()

etiss_int64 etiss_semihost ( ETISS_CPU *const  cpu,
ETISS_System *const  system,
void *const *const  plugin_pointers,
etiss_uint32  XLEN,
etiss_uint64  operation,
etiss_uint64  parameter 
)

Executes the semihosting call based on the operation number.

For description of all semihosting calls see: https://github.com/ARM-software/abi-aa/blob/main/semihosting/semihosting.rst

Definition at line 48 of file semihost.cpp.

◆ etiss_semihost_enabled()

etiss_uint8 etiss_semihost_enabled ( )

Checks whether semihosting is enabled in the config.

Definition at line 43 of file semihost.cpp.

◆ fadd_d()

etiss_uint64 fadd_d ( etiss_uint64  v1,
etiss_uint64  v2,
etiss_uint8  mode 
)

Definition at line 234 of file fp_functions.cpp.

◆ fadd_s()

etiss_uint32 fadd_s ( etiss_uint32  v1,
etiss_uint32  v2,
etiss_uint8  mode 
)

Definition at line 59 of file fp_functions.cpp.

◆ fclass_d()

etiss_uint64 fclass_d ( etiss_uint64  v1)

Definition at line 366 of file fp_functions.cpp.

◆ fclass_s()

etiss_uint32 fclass_s ( etiss_uint32  v1)

Definition at line 183 of file fp_functions.cpp.

◆ fcmp_d()

etiss_uint64 fcmp_d ( etiss_uint64  v1,
etiss_uint64  v2,
etiss_uint32  op 
)

Definition at line 278 of file fp_functions.cpp.

◆ fcmp_s()

etiss_uint32 fcmp_s ( etiss_uint32  v1,
etiss_uint32  v2,
etiss_uint32  op 
)

Definition at line 99 of file fp_functions.cpp.

◆ fconv_d2f()

etiss_uint32 fconv_d2f ( etiss_uint64  v1,
etiss_uint8  mode 
)

Definition at line 212 of file fp_functions.cpp.

◆ fconv_f2d()

etiss_uint64 fconv_f2d ( etiss_uint32  v1,
etiss_uint8  mode 
)

Definition at line 223 of file fp_functions.cpp.

◆ fcvt_32_64()

etiss_uint64 fcvt_32_64 ( etiss_uint32  v1,
etiss_uint32  op,
etiss_uint8  mode 
)

Definition at line 395 of file fp_functions.cpp.

◆ fcvt_64_32()

etiss_uint32 fcvt_64_32 ( etiss_uint64  v1,
etiss_uint32  op,
etiss_uint8  mode 
)

Definition at line 414 of file fp_functions.cpp.

◆ fcvt_d()

etiss_uint64 fcvt_d ( etiss_uint64  v1,
etiss_uint32  op,
etiss_uint8  mode 
)

Definition at line 308 of file fp_functions.cpp.

◆ fcvt_s()

etiss_uint32 fcvt_s ( etiss_uint32  v1,
etiss_uint32  op,
etiss_uint8  mode 
)

Definition at line 129 of file fp_functions.cpp.

◆ fdiv_d()

etiss_uint64 fdiv_d ( etiss_uint64  v1,
etiss_uint64  v2,
etiss_uint8  mode 
)

Definition at line 262 of file fp_functions.cpp.

◆ fdiv_s()

etiss_uint32 fdiv_s ( etiss_uint32  v1,
etiss_uint32  v2,
etiss_uint8  mode 
)

Definition at line 83 of file fp_functions.cpp.

◆ fget_flags()

etiss_uint32 fget_flags ( )

Definition at line 55 of file fp_functions.cpp.

◆ fmadd_d()

etiss_uint64 fmadd_d ( etiss_uint64  v1,
etiss_uint64  v2,
etiss_uint64  v3,
etiss_uint32  op,
etiss_uint8  mode 
)

Definition at line 331 of file fp_functions.cpp.

◆ fmadd_s()

etiss_uint32 fmadd_s ( etiss_uint32  v1,
etiss_uint32  v2,
etiss_uint32  v3,
etiss_uint32  op,
etiss_uint8  mode 
)

Definition at line 152 of file fp_functions.cpp.

◆ fmul_d()

etiss_uint64 fmul_d ( etiss_uint64  v1,
etiss_uint64  v2,
etiss_uint8  mode 
)

Definition at line 254 of file fp_functions.cpp.

◆ fmul_s()

etiss_uint32 fmul_s ( etiss_uint32  v1,
etiss_uint32  v2,
etiss_uint8  mode 
)

Definition at line 75 of file fp_functions.cpp.

◆ fsel_d()

etiss_uint64 fsel_d ( etiss_uint64  v1,
etiss_uint64  v2,
etiss_uint32  op 
)

Definition at line 340 of file fp_functions.cpp.

◆ fsel_s()

etiss_uint32 fsel_s ( etiss_uint32  v1,
etiss_uint32  v2,
etiss_uint32  op 
)

Definition at line 161 of file fp_functions.cpp.

◆ fsqrt_d()

etiss_uint64 fsqrt_d ( etiss_uint64  v1,
etiss_uint8  mode 
)

Definition at line 270 of file fp_functions.cpp.

◆ fsqrt_s()

etiss_uint32 fsqrt_s ( etiss_uint32  v1,
etiss_uint8  mode 
)

Definition at line 91 of file fp_functions.cpp.

◆ fsub_d()

etiss_uint64 fsub_d ( etiss_uint64  v1,
etiss_uint64  v2,
etiss_uint8  mode 
)

Definition at line 246 of file fp_functions.cpp.

◆ fsub_s()

etiss_uint32 fsub_s ( etiss_uint32  v1,
etiss_uint32  v2,
etiss_uint8  mode 
)

Definition at line 67 of file fp_functions.cpp.

◆ leave()

void leave ( etiss_int32  priv_lvl)

Generated on Wed, 08 May 2024 17:36:07 +0200.

This file contains the function prototypes for the RV64IMACFD core architecture.

◆ RV64IMACFD_calc_irq_mcause()

etiss_uint64 RV64IMACFD_calc_irq_mcause ( ETISS_CPU *const  cpu,
ETISS_System *const  system,
void *const *const  plugin_pointers 
)

Definition at line 276 of file RV64IMACFDFuncs.c.

References RV64IMACFD_csr_read(), RV64IMACFD_ctz(), and RV64IMACFD_get_field().

Referenced by RV64IMACFD_check_irq(), and RV64IMACFD_translate_exc_code().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ RV64IMACFD_check_irq()

void RV64IMACFD_check_irq ( ETISS_CPU *const  cpu,
ETISS_System *const  system,
void *const *const  plugin_pointers 
)

Definition at line 339 of file RV64IMACFDFuncs.c.

References RV64IMACFD_calc_irq_mcause(), and RV64IMACFD_raise().

Here is the call graph for this function:

◆ RV64IMACFD_csr_read()

etiss_uint64 RV64IMACFD_csr_read ( ETISS_CPU *const  cpu,
ETISS_System *const  system,
void *const *const  plugin_pointers,
etiss_uint32  csr 
)

Definition at line 62 of file RV64IMACFDFuncs.c.

References etiss_get_cycles(), etiss_get_instret(), and etiss_get_time().

Referenced by RV64IMACFD_calc_irq_mcause(), and RV64IMACFD_raise().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ RV64IMACFD_csr_write()

void RV64IMACFD_csr_write ( ETISS_CPU *const  cpu,
ETISS_System *const  system,
void *const *const  plugin_pointers,
etiss_uint32  csr,
etiss_uint64  val 
)

Definition at line 99 of file RV64IMACFDFuncs.c.

References RV64IMACFD_mstatus_mask(), and RV64IMACFD_sstatus_mask().

Referenced by RV64IMACFD_raise().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ RV64IMACFD_ctz()

etiss_uint8 RV64IMACFD_ctz ( etiss_uint64  val)

Definition at line 140 of file RV64IMACFDFuncs.c.

Referenced by RV64IMACFD_calc_irq_mcause().

Here is the caller graph for this function:

◆ RV64IMACFD_extension_enabled()

etiss_uint8 RV64IMACFD_extension_enabled ( ETISS_CPU *const  cpu,
ETISS_System *const  system,
void *const *const  plugin_pointers,
etiss_int8  extension 
)

Generated on Wed, 08 May 2024 17:36:07 +0200.

This file contains the function implementations for the RV64IMACFD core architecture.

Definition at line 9 of file RV64IMACFDFuncs.c.

Referenced by RV64IMACFD_sstatus_mask().

Here is the caller graph for this function:

◆ RV64IMACFD_get_field()

etiss_uint64 RV64IMACFD_get_field ( etiss_uint64  reg,
etiss_uint64  mask 
)

Definition at line 123 of file RV64IMACFDFuncs.c.

Referenced by RV64IMACFD_calc_irq_mcause(), RV64IMACFD_raise(), and RV64IMACFD_sstatus_mask().

Here is the caller graph for this function:

◆ RV64IMACFD_get_rm()

etiss_uint8 RV64IMACFD_get_rm ( ETISS_CPU *const  cpu,
ETISS_System *const  system,
void *const *const  plugin_pointers,
etiss_uint8  rm 
)

Definition at line 16 of file RV64IMACFDFuncs.c.

References RV64IMACFD_raise().

Here is the call graph for this function:

◆ RV64IMACFD_mstatus_mask()

etiss_uint64 RV64IMACFD_mstatus_mask ( ETISS_CPU *const  cpu,
ETISS_System *const  system,
void *const *const  plugin_pointers 
)

Definition at line 54 of file RV64IMACFDFuncs.c.

References RV64IMACFD_sstatus_mask().

Referenced by RV64IMACFD_csr_write().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ RV64IMACFD_mulh()

etiss_int64 RV64IMACFD_mulh ( etiss_int64  x,
etiss_int64  y 
)

Definition at line 349 of file RV64IMACFDFuncs.c.

References etiss::fault::x.

◆ RV64IMACFD_mulhsu()

etiss_int64 RV64IMACFD_mulhsu ( etiss_int64  x,
etiss_uint64  y 
)

Definition at line 357 of file RV64IMACFDFuncs.c.

References etiss::fault::x.

◆ RV64IMACFD_mulhu()

etiss_uint64 RV64IMACFD_mulhu ( etiss_uint64  x,
etiss_uint64  y 
)

Definition at line 365 of file RV64IMACFDFuncs.c.

References etiss::fault::x.

◆ RV64IMACFD_raise()

void RV64IMACFD_raise ( ETISS_CPU *const  cpu,
ETISS_System *const  system,
void *const *const  plugin_pointers,
etiss_int32  irq,
etiss_uint64  mcause 
)

◆ RV64IMACFD_set_field()

etiss_uint64 RV64IMACFD_set_field ( etiss_uint64  reg,
etiss_uint64  mask,
etiss_uint64  val 
)

Definition at line 133 of file RV64IMACFDFuncs.c.

Referenced by RV64IMACFD_raise().

Here is the caller graph for this function:

◆ RV64IMACFD_sstatus_mask()

etiss_uint64 RV64IMACFD_sstatus_mask ( ETISS_CPU *const  cpu,
ETISS_System *const  system,
void *const *const  plugin_pointers 
)

Definition at line 29 of file RV64IMACFDFuncs.c.

References RV64IMACFD_extension_enabled(), and RV64IMACFD_get_field().

Referenced by RV64IMACFD_csr_write(), and RV64IMACFD_mstatus_mask().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ RV64IMACFD_translate_exc_code()

void RV64IMACFD_translate_exc_code ( ETISS_CPU *const  cpu,
ETISS_System *const  system,
void *const *const  plugin_pointers,
etiss_int32  cause 
)

Definition at line 239 of file RV64IMACFDFuncs.c.

References RV64IMACFD_calc_irq_mcause(), and RV64IMACFD_raise().

Referenced by RV64IMACFDArch::handleException().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ unbox_d()

etiss_uint64 unbox_d ( etiss_uint64  )

◆ unbox_s()

etiss_uint32 unbox_s ( etiss_uint64  v)

Definition at line 436 of file fp_functions.cpp.

◆ wait()

void wait ( etiss_int32  flag)