SSBM Decomp
Loading...
Searching...
No Matches
targimpl.c File Reference
#include "targimpl.h"
#include "metrotrk.h"

Data Structures

struct  TRKExceptionStatus
struct  TRKStepStatus

Macros

#define BOOTINFO   0x80000000
#define MEM2_CACHED   0x90000000
#define DB_EXCEPTION_MASK   0x44
#define INSTR_NOP   0x60000000
 Instruction macros.
#define INSTR_BLR   0x4E800020
#define INSTR_PSQ_ST(psr, offset, rDest, w, gqr)
#define INSTR_PSQ_L(psr, offset, rSrc, w, gqr)
#define INSTR_STW(rSrc, offset, rDest)
#define INSTR_LWZ(rDest, offset, rSrc)
#define INSTR_STFD(fprSrc, offset, rDest)
#define INSTR_LFD(fprDest, offset, rSrc)
#define INSTR_MFSPR(rDest, spr)
#define INSTR_MTSPR(spr, rSrc)
#define ALTIVEC_VECTOR_REG_ACCESS_MIN   0
#define ALTIVEC_VECTOR_REG_ACCESS_MAX   31
#define ALTIVEC_VSCR_ACCESS   32
#define ALTIVEC_VRSAVE_SPR_ACCESS   33
#define SUPPORT_TRAP   0x0FE00000
#define CURRENT_CONTEXT_ADDR   0xD4
#define FPU_CONTEXT_ADDR   0xD8
#define ROOT_THREAD_ADDR   0xDC
#define PREVIOUS_THREAD_ADDR   0xE0
#define CURRENT_THREAD_ADDR   0xE4
#define FP_FPSCR_ACCESS   32
#define FP_FPECR_ACCESS   33
#define ACTIVE_THREAD_QUEUE   (BOOTINFO + ROOT_THREAD_ADDR)
#define CURRENT_THREAD   (BOOTINFO + CURRENT_THREAD_ADDR)
#define INVALID_THREAD(thread)

Typedefs

typedef void(* RegAccessFunc) (void *srcDestPtr, u128 val)

Functions

static bool TRKTargetCheckStep (void)
static void TRKExceptionHandler (u16)
void TRKInterruptHandlerEnableInterrupts (void)
static void GetThreadInfo (int *, int *)
ASM u32 __TRK_get_MSR (void)
ASM void __TRK_set_MSR (register u32 val)
static DSError TRKValidMemory32 (const void *addr, size_t length, int readWriteable)
static ASM void TRK_ppc_memcpy (void *dest, const void *src, int n, u32 param_4, u32 param_5)
DSError TRKTargetAccessMemory (void *data, u32 start, size_t *length, MemoryAccessOptions accessOptions, bool read)
static DSError TRKTargetReadInstruction (void *data, u32 start)
DSError TRKTargetAccessDefault (u32 firstRegister, u32 lastRegister, MessageBuffer *b, size_t *registersLengthPtr, bool read)
DSError TRKTargetAccessFP (u32 firstRegister, u32 lastRegister, MessageBuffer *b, size_t *registerStorageSize, s32 read)
DSError TRKTargetAccessExtended1 (u32 firstRegister, u32 lastRegister, MessageBuffer *b, size_t *registerStorageSize, s32 read)
DSError TRKTargetAccessExtended2 (u32 firstRegister, u32 lastRegister, MessageBuffer *b, size_t *registersLengthPtr, bool read)
DSError TRKTargetVersions (DSVersions *version)
DSError TRKTargetSupportMask (DSSupportMask *mask)
DSError TRKTargetCPUType (DSCPUType *cpuType)
void TRKUARTInterruptHandler (void)
ASM void TRKInterruptHandler (register u16 val)
static ASM void TRKExceptionHandler (register u16 id)
void TRKPostInterruptEvent (void)
ASM void TRKSwapAndGo (void)
DSError TRKTargetInterrupt (NubEvent *event)
DSError TRKTargetAddStopInfo (MessageBuffer *arg0)
void TRKTargetAddExceptionInfo (MessageBuffer *b)
static DSError TRKTargetEnableTrace (bool enable)
bool TRKTargetStepDone (void)
DSError TRKTargetDoStep (void)
DSError TRKTargetSingleStep (u32 count, bool stepOver)
DSError TRKTargetStepOutOfRange (u32 rangeStart, u32 rangeEnd, bool stepOver)
u32 TRKTargetGetPC (void)
DSError TRKTargetSupportRequest (void)
DSError TRKTargetFlushCache (u8 arg0, u32 arg1, u32 arg2)
bool TRKTargetStopped (void)
void TRKTargetSetStopped (bool val)
DSError TRKTargetStop (void)
DSError TRKPPCAccessSPR (void *srcDestPtr, u32 spr, bool read)
DSError TRKPPCAccessPairedSingleRegister (void *srcDestPtr, u32 psr, bool read)
DSError TRKPPCAccessFPRegister (void *srcDestPtr, u32 fpr, bool read)
DSError TRKPPCAccessSpecialReg (void *srcDestPtr, u32 *instructionData, bool read)
void TRKTargetSetInputPendingPtr (void *ptr)
u32 ConvertAddress (u32 addr)

Variables

OSThreadQueue __OSActiveThreadQueue
OSThread * __OSCurrentThread
ProcessorState_PPC gTRKCPUState
ProcessorRestoreFlags_PPC gTRKRestoreFlags = { false, false }
TRKState_PPC gTRKState
static TRKExceptionStatus gTRKExceptionStatus = { { 0, 0, 0 }, true, false }
static TRKStepStatus gTRKStepStatus = { 0, kDSStepIntoCount, 0, 0, 0 }
u128 TRKvalue128_temp
static u16 TRK_saved_exceptionID = 0
Default_PPC gTRKSaveState

Macro Definition Documentation

◆ BOOTINFO

#define BOOTINFO   0x80000000

◆ MEM2_CACHED

#define MEM2_CACHED   0x90000000

◆ DB_EXCEPTION_MASK

#define DB_EXCEPTION_MASK   0x44

◆ INSTR_NOP

#define INSTR_NOP   0x60000000

Instruction macros.

◆ INSTR_BLR

#define INSTR_BLR   0x4E800020

◆ INSTR_PSQ_ST

#define INSTR_PSQ_ST ( psr,
offset,
rDest,
w,
gqr )
Value:
(0xF0000000 | (psr << 21) | (rDest << 16) | (w << 15) | (gqr << 12) | \
offset)

◆ INSTR_PSQ_L

#define INSTR_PSQ_L ( psr,
offset,
rSrc,
w,
gqr )
Value:
(0xE0000000 | (psr << 21) | (rSrc << 16) | (w << 15) | (gqr << 12) | \
offset)

◆ INSTR_STW

#define INSTR_STW ( rSrc,
offset,
rDest )
Value:
(0x90000000 | (rSrc << 21) | (rDest << 16) | offset)

◆ INSTR_LWZ

#define INSTR_LWZ ( rDest,
offset,
rSrc )
Value:
(0x80000000 | (rDest << 21) | (rSrc << 16) | offset)

◆ INSTR_STFD

#define INSTR_STFD ( fprSrc,
offset,
rDest )
Value:
(0xD8000000 | (fprSrc << 21) | (rDest << 16) | offset)

◆ INSTR_LFD

#define INSTR_LFD ( fprDest,
offset,
rSrc )
Value:
(0xC8000000 | (fprDest << 21) | (rSrc << 16) | offset)

◆ INSTR_MFSPR

#define INSTR_MFSPR ( rDest,
spr )
Value:
(0x7C000000 | (rDest << 21) | ((spr & 0xFE0) << 6) | \
((spr & 0x1F) << 16) | 0x2A6)

◆ INSTR_MTSPR

#define INSTR_MTSPR ( spr,
rSrc )
Value:
(0x7C000000 | (rSrc << 21) | ((spr & 0xFE0) << 6) | \
((spr & 0x1F) << 16) | 0x3A6)

◆ ALTIVEC_VECTOR_REG_ACCESS_MIN

#define ALTIVEC_VECTOR_REG_ACCESS_MIN   0

◆ ALTIVEC_VECTOR_REG_ACCESS_MAX

#define ALTIVEC_VECTOR_REG_ACCESS_MAX   31

◆ ALTIVEC_VSCR_ACCESS

#define ALTIVEC_VSCR_ACCESS   32

◆ ALTIVEC_VRSAVE_SPR_ACCESS

#define ALTIVEC_VRSAVE_SPR_ACCESS   33

◆ SUPPORT_TRAP

#define SUPPORT_TRAP   0x0FE00000

◆ CURRENT_CONTEXT_ADDR

#define CURRENT_CONTEXT_ADDR   0xD4

◆ FPU_CONTEXT_ADDR

#define FPU_CONTEXT_ADDR   0xD8

◆ ROOT_THREAD_ADDR

#define ROOT_THREAD_ADDR   0xDC

◆ PREVIOUS_THREAD_ADDR

#define PREVIOUS_THREAD_ADDR   0xE0

◆ CURRENT_THREAD_ADDR

#define CURRENT_THREAD_ADDR   0xE4

◆ FP_FPSCR_ACCESS

#define FP_FPSCR_ACCESS   32

◆ FP_FPECR_ACCESS

#define FP_FPECR_ACCESS   33

◆ ACTIVE_THREAD_QUEUE

#define ACTIVE_THREAD_QUEUE   (BOOTINFO + ROOT_THREAD_ADDR)

◆ CURRENT_THREAD

#define CURRENT_THREAD   (BOOTINFO + CURRENT_THREAD_ADDR)

◆ INVALID_THREAD

#define INVALID_THREAD ( thread)
Value:
((u32) thread == 0xFFFFFFFF || thread == NULL || \
(u32) thread == 0x80000000)
#define NULL
Definition stddef.h:19

Typedef Documentation

◆ RegAccessFunc

typedef void(* RegAccessFunc) (void *srcDestPtr, u128 val)

Function Documentation

◆ TRKTargetCheckStep()

bool TRKTargetCheckStep ( void )
static

◆ TRKExceptionHandler() [1/2]

void TRKExceptionHandler ( u16 )
static

◆ TRKInterruptHandlerEnableInterrupts()

ASM void TRKInterruptHandlerEnableInterrupts ( void )

◆ GetThreadInfo()

void GetThreadInfo ( int * r3,
int * r4 )
static

◆ __TRK_get_MSR()

ASM u32 __TRK_get_MSR ( void )

◆ __TRK_set_MSR()

ASM void __TRK_set_MSR ( register u32 val)

◆ TRKValidMemory32()

DSError TRKValidMemory32 ( const void * addr,
size_t length,
int readWriteable )
static

◆ TRK_ppc_memcpy()

ASM void TRK_ppc_memcpy ( void * dest,
const void * src,
int n,
u32 param_4,
u32 param_5 )
static

◆ TRKTargetAccessMemory()

DSError TRKTargetAccessMemory ( void * data,
u32 start,
size_t * length,
MemoryAccessOptions accessOptions,
bool read )

◆ TRKTargetReadInstruction()

DSError TRKTargetReadInstruction ( void * data,
u32 start )
static

◆ TRKTargetAccessDefault()

DSError TRKTargetAccessDefault ( u32 firstRegister,
u32 lastRegister,
MessageBuffer * b,
size_t * registersLengthPtr,
bool read )

◆ TRKTargetAccessFP()

DSError TRKTargetAccessFP ( u32 firstRegister,
u32 lastRegister,
MessageBuffer * b,
size_t * registerStorageSize,
s32 read )

◆ TRKTargetAccessExtended1()

DSError TRKTargetAccessExtended1 ( u32 firstRegister,
u32 lastRegister,
MessageBuffer * b,
size_t * registerStorageSize,
s32 read )

◆ TRKTargetAccessExtended2()

DSError TRKTargetAccessExtended2 ( u32 firstRegister,
u32 lastRegister,
MessageBuffer * b,
size_t * registersLengthPtr,
bool read )

◆ TRKTargetVersions()

DSError TRKTargetVersions ( DSVersions * version)

◆ TRKTargetSupportMask()

DSError TRKTargetSupportMask ( DSSupportMask * mask)

◆ TRKTargetCPUType()

DSError TRKTargetCPUType ( DSCPUType * cpuType)

◆ TRKUARTInterruptHandler()

void TRKUARTInterruptHandler ( void )

◆ TRKInterruptHandler()

ASM void TRKInterruptHandler ( register u16 val)

◆ TRKExceptionHandler() [2/2]

ASM void TRKExceptionHandler ( register u16 id)
static

◆ TRKPostInterruptEvent()

void TRKPostInterruptEvent ( void )

◆ TRKSwapAndGo()

ASM void TRKSwapAndGo ( void )

◆ TRKTargetInterrupt()

DSError TRKTargetInterrupt ( NubEvent * event)

◆ TRKTargetAddStopInfo()

DSError TRKTargetAddStopInfo ( MessageBuffer * arg0)

◆ TRKTargetAddExceptionInfo()

void TRKTargetAddExceptionInfo ( MessageBuffer * b)

◆ TRKTargetEnableTrace()

DSError TRKTargetEnableTrace ( bool enable)
static

◆ TRKTargetStepDone()

bool TRKTargetStepDone ( void )

◆ TRKTargetDoStep()

DSError TRKTargetDoStep ( void )

◆ TRKTargetSingleStep()

DSError TRKTargetSingleStep ( u32 count,
bool stepOver )

◆ TRKTargetStepOutOfRange()

DSError TRKTargetStepOutOfRange ( u32 rangeStart,
u32 rangeEnd,
bool stepOver )

◆ TRKTargetGetPC()

u32 TRKTargetGetPC ( void )

◆ TRKTargetSupportRequest()

DSError TRKTargetSupportRequest ( void )

◆ TRKTargetFlushCache()

DSError TRKTargetFlushCache ( u8 arg0,
u32 arg1,
u32 arg2 )

◆ TRKTargetStopped()

bool TRKTargetStopped ( void )

◆ TRKTargetSetStopped()

void TRKTargetSetStopped ( bool val)

◆ TRKTargetStop()

DSError TRKTargetStop ( void )

◆ TRKPPCAccessSPR()

DSError TRKPPCAccessSPR ( void * srcDestPtr,
u32 spr,
bool read )

◆ TRKPPCAccessPairedSingleRegister()

DSError TRKPPCAccessPairedSingleRegister ( void * srcDestPtr,
u32 psr,
bool read )

◆ TRKPPCAccessFPRegister()

DSError TRKPPCAccessFPRegister ( void * srcDestPtr,
u32 fpr,
bool read )

◆ TRKPPCAccessSpecialReg()

DSError TRKPPCAccessSpecialReg ( void * srcDestPtr,
u32 * instructionData,
bool read )

◆ TRKTargetSetInputPendingPtr()

void TRKTargetSetInputPendingPtr ( void * ptr)

◆ ConvertAddress()

u32 ConvertAddress ( u32 addr)

Variable Documentation

◆ __OSActiveThreadQueue

OSThreadQueue __OSActiveThreadQueue

◆ __OSCurrentThread

OSThread* __OSCurrentThread

◆ gTRKCPUState

ProcessorState_PPC gTRKCPUState

◆ gTRKRestoreFlags

ProcessorRestoreFlags_PPC gTRKRestoreFlags = { false, false }

◆ gTRKState

TRKState_PPC gTRKState

◆ gTRKExceptionStatus

TRKExceptionStatus gTRKExceptionStatus = { { 0, 0, 0 }, true, false }
static

◆ gTRKStepStatus

TRKStepStatus gTRKStepStatus = { 0, kDSStepIntoCount, 0, 0, 0 }
static

◆ TRKvalue128_temp

u128 TRKvalue128_temp

◆ TRK_saved_exceptionID

u16 TRK_saved_exceptionID = 0
static

◆ gTRKSaveState

Default_PPC gTRKSaveState