Nugget
Loading...
Searching...
No Matches
Classes | Macros | Typedefs
gte-latency-lzcs.c File Reference
#include "common/hardware/cop2.h"
#include "common/syscalls/syscalls.h"
#include "exotic/cester.h"
Include dependency graph for gte-latency-lzcs.c:

Classes

struct  lzc_case_t
 

Macros

#define GTE_LATENCY_LZCS_HELPERS_DEFINED
 
#define MAX_N   8
 
#define DRAIN   24
 
#define LZC_STR_(x)   #x
 
#define LZC_STR(x)   LZC_STR_(x)
 
#define MK_LZC_FN(N)
 
#define KSEG1(p)   ((lzc_probe_fn)(((uint32_t)(p)) | 0xa0000000u))
 
#define NCASES   ((int)(sizeof(g_cases) / sizeof(g_cases[0])))
 
#define CESTER_NO_SIGNAL
 
#define CESTER_NO_TIME
 
#define EXIT_SUCCESS   0
 
#define EXIT_FAILURE   1
 

Typedefs

typedef uint32_t(* lzc_probe_fn) (uint32_t, uint32_t)
 

Macro Definition Documentation

◆ CESTER_NO_SIGNAL

#define CESTER_NO_SIGNAL

◆ CESTER_NO_TIME

#define CESTER_NO_TIME

◆ DRAIN

#define DRAIN   24

◆ EXIT_FAILURE

#define EXIT_FAILURE   1

◆ EXIT_SUCCESS

#define EXIT_SUCCESS   0

◆ GTE_LATENCY_LZCS_HELPERS_DEFINED

#define GTE_LATENCY_LZCS_HELPERS_DEFINED

◆ KSEG1

#define KSEG1 (   p)    ((lzc_probe_fn)(((uint32_t)(p)) | 0xa0000000u))

◆ LZC_STR

#define LZC_STR (   x)    LZC_STR_(x)

◆ LZC_STR_

#define LZC_STR_ (   x)    #x

◆ MAX_N

#define MAX_N   8

◆ MK_LZC_FN

#define MK_LZC_FN (   N)
Value:
uint32_t __attribute__((noinline)) \
lzc_probe_##N(uint32_t poison, uint32_t value) { \
__asm__ volatile( \
".set push\n\t" \
".set noreorder\n\t" \
"mtc2 %1, $30\n\t" \
".rept " LZC_STR(DRAIN) "\n\tnop\n\t.endr\n\t" \
"mtc2 %2, $30\n\t" \
".rept " #N "\n\tnop\n\t.endr\n\t" \
"mfc2 %0, $31\n\t" \
"nop\n\t" \
"nop\n\t" \
".set pop\n\t" \
: "=&r"(out) \
: "r"(poison), "r"(value)); \
return out; \
}
uint32_t out
Definition cpu.c:62
fptr __preinit_array_start[] __attribute__((weak))
Definition cxxglue.c:76
#define DRAIN
Definition gte-latency-lzcs.c:71
#define LZC_STR(x)
Definition gte-latency-lzcs.c:74
static int value
Definition syscalls.h:535
void uint32_t(classId, spec)

◆ NCASES

#define NCASES   ((int)(sizeof(g_cases) / sizeof(g_cases[0])))

Typedef Documentation

◆ lzc_probe_fn

typedef uint32_t(* lzc_probe_fn) (uint32_t, uint32_t)