summaryrefslogtreecommitdiff
path: root/lib/ultralib/src/rmon/rmonint.h
diff options
context:
space:
mode:
authorAnghelo Carvajal <angheloalf95@gmail.com>2023-03-28 23:42:56 -0300
committerGitHub <noreply@github.com>2023-03-29 03:42:56 +0100
commitd66a21685f45d130f980e8a5ec7b08cfe189e40b (patch)
treef11b3b09dc5772e419fe08d3d0ead4e778def57f /lib/ultralib/src/rmon/rmonint.h
parent6a5e64cc4c26398cc607bb02cdc12a056ddf42d1 (diff)
Initial repo setup (#1)
* git subrepo clone git@github.com:ethteck/splat.git tools/splat subrepo: subdir: "tools/splat" merged: "4fec014" upstream: origin: "git@github.com:ethteck/splat.git" branch: "master" commit: "4fec014" git-subrepo: version: "0.4.3" origin: "https://github.com/ingydotnet/git-subrepo.git" commit: "2f68596" * gitignore * decompress_baserom.py * Initial yaml * run flib * more yaml stuff * Builds an uncompressed ROM * setup ido download * git subrepo clone git@github.com:simonlindholm/asm-differ.git tools/asm-differ subrepo: subdir: "tools/asm-differ" merged: "ae40866" upstream: origin: "git@github.com:simonlindholm/asm-differ.git" branch: "main" commit: "ae40866" git-subrepo: version: "0.4.3" origin: "https://github.com/ingydotnet/git-subrepo.git" commit: "2f68596" * git subrepo clone git@github.com:simonlindholm/asm-processor.git tools/asm-processor subrepo: subdir: "tools/asm-processor" merged: "bbd86ea" upstream: origin: "git@github.com:simonlindholm/asm-processor.git" branch: "main" commit: "bbd86ea" git-subrepo: version: "0.4.3" origin: "https://github.com/ingydotnet/git-subrepo.git" commit: "2f68596" * git subrepo clone (merge) git@github.com:EllipticEllipsis/fado.git tools/fado subrepo: subdir: "tools/fado" merged: "8d896ee" upstream: origin: "git@github.com:EllipticEllipsis/fado.git" branch: "master" commit: "8d896ee" git-subrepo: version: "0.4.3" origin: "https://github.com/ingydotnet/git-subrepo.git" commit: "2f68596" * setup ido in makefile * data and rodata * add automatic file splits * bootstrap most symbol_addrs * git subrepo clone --branch=irix git@github.com:hensldm/ultralib.git lib/ultralib subrepo: subdir: "lib/ultralib" merged: "0d1e095" upstream: origin: "git@github.com:hensldm/ultralib.git" branch: "irix" commit: "0d1e095" git-subrepo: version: "0.4.3" origin: "https://github.com/ingydotnet/git-subrepo.git" commit: "2f68596" * setup ido building * various tooling * git subrepo pull tools/asm-differ subrepo: subdir: "tools/asm-differ" merged: "857b398" upstream: origin: "git@github.com:simonlindholm/asm-differ.git" branch: "main" commit: "857b398" git-subrepo: version: "0.4.3" origin: "https://github.com/ingydotnet/git-subrepo.git" commit: "2f68596" * Change defines to match IDO * review * newlin * update gitignore * Windows error * D_01000000 * yeet settings.json * yeet * git subrepo clone git@github.com:decompals/ultralib.git lib/ultralib subrepo: subdir: "lib/ultralib" merged: "d03b2a3" upstream: origin: "git@github.com:decompals/ultralib.git" branch: "main" commit: "d03b2a3" git-subrepo: version: "0.4.3" origin: "https://github.com/ingydotnet/git-subrepo.git" commit: "2f68596" * clangformat and clangtidy * Setup a bunch of headers * bootstrap boot and code functions and variables headers * global.h * update format.py includes * -D_MIPS_SZLONG=32 * format.py: --verbose * Update tools/decompress_baserom.py Co-authored-by: Derek Hensley <hensley.derek58@gmail.com> * Add libc to global.h * review * yeet saved_regs * yeet headers * yeet _MSC_VER * more header cleanup * add readme licensing note --------- Co-authored-by: Derek Hensley <hensley.derek58@gmail.com>
Diffstat (limited to 'lib/ultralib/src/rmon/rmonint.h')
-rw-r--r--lib/ultralib/src/rmon/rmonint.h169
1 files changed, 169 insertions, 0 deletions
diff --git a/lib/ultralib/src/rmon/rmonint.h b/lib/ultralib/src/rmon/rmonint.h
new file mode 100644
index 0000000..350b779
--- /dev/null
+++ b/lib/ultralib/src/rmon/rmonint.h
@@ -0,0 +1,169 @@
+#ifndef _RMONINT_H
+#define _RMONINT_H
+
+#include "dbgproto.h"
+#include "PR/os_internal.h"
+
+/* mips */
+
+#define MIPS_LWC2_OPCODE 50
+#define MIPS_SWC2_OPCODE 58
+
+#define MIPS_LW_OPCODE 35
+#define MIPS_SW_OPCODE 43
+
+#define MIPS_BREAK_OPCODE 0xD
+#define MIPS_BREAK_MASK 0xFC00003F
+
+#define MIPS_BREAK(code) \
+ ((((code) & 0xFFFFF) << 6) | MIPS_BREAK_OPCODE)
+
+/* R4300 General Purpose Register Indices */
+#define GREG_IDX_ZERO 0
+#define GREG_IDX_AT 1
+#define GREG_IDX_T9 25
+#define GREG_IDX_K0 26
+#define GREG_IDX_GP 28
+#define GREG_IDX_RA 31
+#define GREG_IDX_LO 32
+#define GREG_IDX_HI 33
+#define GREG_IDX_CAUSE 34
+#define GREG_IDX_PC 35
+#define GREG_IDX_SR 36
+
+/* RSP Scalar Register Indices */
+#define SREG_IDX_ZERO 0
+#define SREG_IDX_RA 31
+#define SREG_IDX_DRAM_ADDR (32 + 0)
+#define SREG_IDX_MEM_ADDR (32 + 1)
+#define SREG_IDX_RD_LEN (32 + 2)
+#define SREG_IDX_PC (32 + 3)
+#define SREG_IDX_WR_LEN (32 + 4)
+#define SREG_IDX_STATUS (32 + 5)
+#define SREG_IDX_DMA_FULL (32 + 6)
+#define SREG_IDX_DMA_BUSY (32 + 7)
+
+/* RSP Vector Register Properties */
+#define VREG_NUM 32
+#define VREG_SIZE 0x10
+
+/* rmon */
+
+#define RMON_MESG_CPU_BREAK 2
+#define RMON_MESG_SP_BREAK 4
+#define RMON_MESG_FAULT 8
+
+#define RMON_CPU 0
+#define RMON_RSP 1
+
+/* "thread id" for rsp */
+#define RMON_TID_RSP 1000
+/* "thread priority" for rsp */
+#define RMON_PRI_RSP 42
+
+/* "thread id" for no thread running */
+#define RMON_TID_NOTHREAD 1003
+
+#define RMON_PID_CPU 1002
+#define RMON_PID_RSP 1001
+
+/* Largest serviceable read/write memory request */
+#define RMON_MAX_XFER_SIZE 1024
+
+/* rmonmain */
+
+void __rmonSendHeader(KKHeader* const block, u32 blockSize, u32 type);
+void __rmonSendReply(KKHeader* const block, u32 blockSize, u32 replyType);
+void __rmonSendData(char* const block, unsigned int blockSize);
+
+extern int __rmonActive;
+
+/* rmonmisc */
+
+void __rmonInit(void);
+void __rmonPanic(void);
+
+extern OSMesgQueue __rmonMQ;
+
+/* rmonmem */
+
+void __rmonWriteWordTo(u32* addr, u32 val);
+u32 __rmonReadWordAt(u32* addr);
+void __rmonMemcpy(u8* dest, u8* srce, u32 count);
+void __rmonCopyWords(u32* dest, u32* srce, u32 count);
+
+extern u8 __rmonUtilityBuffer[256];
+
+/* rmonsio */
+
+void __rmonSendFault(OSThread* thread);
+void __rmonIOflush(void);
+void __rmonIOputw(u32 word);
+void __rmonIOhandler(void);
+
+extern void* __osRdb_DbgRead_Buf;
+extern u8 rmonRdbReadBuf[];
+
+/* rmonrcp */
+
+int __rmonRCPrunning(void);
+void __rmonIdleRCP(void);
+void __rmonStepRCP(void);
+void __rmonRunRCP(void);
+
+/* rmonbrk */
+
+u32 __rmonGetBranchTarget(int method, int thread, char* addr);
+int __rmonSetSingleStep(int thread, u32* instptr);
+void __rmonGetExceptionStatus(KKStatusEvent* reply);
+void __rmonHitBreak(void);
+void __rmonHitSpBreak(void);
+void __rmonHitCpuFault(void);
+
+extern u8 __rmonRcpAtBreak;
+
+/* rmonregs */
+
+u32 __rmonGetRegisterContents(int method, int threadNumber, int regNumber);
+
+/* rmontask */
+
+void __rmonMaskIdleThreadInts(void);
+OSThread* __rmonGetTCB(int threadNumber);
+int __rmonStopUserThreads(int whichThread);
+int __rmonGetThreadStatus(int method, int id, KKStatusEvent* reply);
+
+/* rmoncmds */
+
+int __rmonExecute(KKHeader* request);
+
+/* commands */
+
+typedef int (*FUNPTR)();
+
+int __rmonLoadProgram(KKHeader* req);
+int __rmonListProcesses(KKHeader* req);
+int __rmonGetExeName(KKHeader* req);
+int __rmonListThreads(KKHeader* req);
+int __rmonThreadStatus(KKHeader* req);
+int __rmonStopThread(KKHeader* req);
+int __rmonRunThread(KKHeader* req);
+int __rmonSetFault(KKHeader* req);
+int __rmonGetRegionCount(KKHeader* req);
+int __rmonGetRegions(KKHeader* req);
+int __rmonGetGRegisters(KKHeader* req);
+int __rmonSetGRegisters(KKHeader* req);
+int __rmonGetFRegisters(KKHeader* req);
+int __rmonSetFRegisters(KKHeader* req);
+int __rmonReadMem(KKHeader* req);
+int __rmonWriteMem(KKHeader* req);
+int __rmonSetBreak(KKHeader* req);
+int __rmonClearBreak(KKHeader* req);
+int __rmonListBreak(KKHeader* req);
+int __rmonSetComm(KKHeader* req);
+int __rmonGetSRegs(KKHeader* req);
+int __rmonSetSRegs(KKHeader* req);
+int __rmonGetVRegs(KKHeader* req);
+int __rmonSetVRegs(KKHeader* req);
+
+#endif