2024-05-11 23:24:13 +02:00
|
|
|
package perf
|
|
|
|
|
|
|
|
|
|
import "core:c"
|
|
|
|
|
import sce "../common"
|
|
|
|
|
|
|
|
|
|
foreign import perf "system:ScePerf_stub"
|
|
|
|
|
|
|
|
|
|
SCE_PERF_ARM_PMON_THREAD_ID_SELF :: (sce.SCE_KERNEL_THREAD_ID_SELF)
|
|
|
|
|
|
|
|
|
|
_ScePerfArmPmonEventCode :: enum c.int {
|
|
|
|
|
SOFT_INCREMENT = 0x00,
|
|
|
|
|
ICACHE_MISS = 0x01,
|
|
|
|
|
ITLB_MISS = 0x02,
|
|
|
|
|
DCACHE_MISS = 0x03,
|
|
|
|
|
DCACHE_ACCESS = 0x04,
|
|
|
|
|
DTLB_MISS = 0x05,
|
|
|
|
|
DATA_READ = 0x06,
|
|
|
|
|
DATA_WRITE = 0x07,
|
|
|
|
|
EXCEPTION_TAKEN = 0x09,
|
|
|
|
|
EXCEPTION_RETURN = 0x0A,
|
|
|
|
|
WRITE_CONTEXTID = 0x0B,
|
|
|
|
|
SOFT_CHANGEPC = 0x0C,
|
|
|
|
|
IMMEDIATE_BRANCH = 0x0D,
|
|
|
|
|
UNALIGNED = 0x0F,
|
|
|
|
|
BRANCH_MISPREDICT = 0x10,
|
|
|
|
|
CYCLE_COUNT = 0x11,
|
|
|
|
|
PREDICT_BRANCH = 0x12,
|
|
|
|
|
COHERENT_LF_MISS = 0x50,
|
|
|
|
|
COHERENT_LF_HIT = 0x51,
|
|
|
|
|
ICACHE_STALL = 0x60,
|
|
|
|
|
DCACHE_STALL = 0x61,
|
|
|
|
|
MAINTLB_STALL = 0x62,
|
|
|
|
|
STREX_PASSED = 0x63,
|
|
|
|
|
STREX_FAILED = 0x64,
|
|
|
|
|
DATA_EVICTION = 0x65,
|
|
|
|
|
ISSUE_NO_DISPATCH = 0x66,
|
|
|
|
|
ISSUE_EMPTY = 0x67,
|
|
|
|
|
INST_RENAME = 0x68,
|
|
|
|
|
PREDICT_FUNC_RET = 0x6E,
|
|
|
|
|
MAIN_PIPE = 0x70,
|
|
|
|
|
SECOND_PIPE = 0x71,
|
|
|
|
|
LS_PIPE = 0x72,
|
|
|
|
|
FPU_RENAME = 0x73,
|
|
|
|
|
NEON_RENAME = 0x74,
|
|
|
|
|
PLD_STALL = 0x80,
|
|
|
|
|
WRITE_STALL = 0x81,
|
|
|
|
|
INST_MAINTLB_STALL = 0x82,
|
|
|
|
|
DATA_MAINTLB_STALL = 0x83,
|
|
|
|
|
INST_UTLB_STALL = 0x84,
|
|
|
|
|
DATA_UTLB_STALL = 0x85,
|
|
|
|
|
DMB_STALL = 0x86,
|
|
|
|
|
INTEGER_CLOCK = 0x8A,
|
|
|
|
|
DATAENGINE_CLOCK = 0x8B,
|
|
|
|
|
ISB = 0x90,
|
|
|
|
|
DSB = 0x91,
|
|
|
|
|
DMB = 0x92,
|
|
|
|
|
EXT_INTERRUPT = 0x93,
|
|
|
|
|
PLE_LINE_REQ_COMPLETED = 0xA0,
|
|
|
|
|
PLE_CHANNEL_SKIPPED = 0xA1,
|
|
|
|
|
PLE_FIFO_FLUSH = 0xA2,
|
|
|
|
|
PLE_REQ_COMPLETED = 0xA3,
|
|
|
|
|
PLE_FIFO_OVERFLOW = 0xA4,
|
|
|
|
|
PLE_REQ_PROGRAMMED = 0xA5
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
foreign perf {
|
2024-05-13 16:04:23 +02:00
|
|
|
scePerfArmPmonReset :: proc(thid: sce.UID) -> c.int ---
|
|
|
|
|
scePerfArmPmonSelectEvent :: proc(thid: sce.UID, counter: sce.UInt32, event_code: sce.UInt8) -> c.int ---
|
|
|
|
|
scePerfArmPmonStart :: proc(thid: sce.UID) -> c.int ---
|
|
|
|
|
scePerfArmPmonStop :: proc(thid: sce.UID) -> c.int ---
|
|
|
|
|
scePerfArmPmonGetCounterValue :: proc(thid: sce.UID, counter: sce.UInt32, value: ^sce.UInt32) -> c.int ---
|
|
|
|
|
scePerfArmPmonSetCounterValue :: proc(thid: sce.UID, counter: sce.UInt32, value: sce.UInt32) -> c.int ---
|
|
|
|
|
scePerfArmPmonSoftwareIncrement :: proc(mask: sce.UInt32) -> c.int ---
|
2024-05-11 23:24:13 +02:00
|
|
|
|
2024-05-13 16:04:23 +02:00
|
|
|
scePerfGetTimebaseValue :: proc() -> sce.UInt64 ---
|
|
|
|
|
scePerfGetTimebaseFrequency :: proc() -> sce.UInt32 ---
|
2024-05-11 23:24:13 +02:00
|
|
|
}
|