SSBM Decomp
Loading...
Searching...
No Matches
ar.h
Go to the documentation of this file.
1#ifndef _DOLPHIN_AR_H_
2#define _DOLPHIN_AR_H_
3
4#include <dolphin/types.h>
5
6struct ARQRequest;
7
8typedef void (*ARQCallback)(struct ARQRequest*);
9
10struct ARQRequest {
11 /* 0x00 */ struct ARQRequest* next;
12 /* 0x04 */ uintptr_t owner;
13 /* 0x08 */ u32 type;
14 /* 0x0C */ u32 priority;
15 /* 0x10 */ u32 source;
16 /* 0x14 */ u32 dest;
17 /* 0x18 */ u32 length;
19};
20
21#define ARQ_DMA_ALIGNMENT 32
22
23#define ARAM_DIR_MRAM_TO_ARAM 0x00
24#define ARAM_DIR_ARAM_TO_MRAM 0x01
25
26#define ARStartDMARead(mmem, aram, len) \
27 ARStartDMA(ARAM_DIR_ARAM_TO_MRAM, mmem, aram, len)
28#define ARStartDMAWrite(mmem, aram, len) \
29 ARStartDMA(ARAM_DIR_MRAM_TO_ARAM, mmem, aram, len)
30
31typedef struct ARQRequest ARQRequest;
32
33#define ARQ_TYPE_MRAM_TO_ARAM ARAM_DIR_MRAM_TO_ARAM
34#define ARQ_TYPE_ARAM_TO_MRAM ARAM_DIR_ARAM_TO_MRAM
35
36#define ARQ_PRIORITY_LOW 0
37#define ARQ_PRIORITY_HIGH 1
38
39// ar.c
42void ARStartDMA(u32 type, u32 mainmem_addr, u32 aram_addr, u32 length);
45int ARCheckInit(void);
46u32 ARInit(u32* stack_index_addr, u32 num_entries);
47void ARReset(void);
48void ARSetSize(void);
50u32 ARGetSize(void);
51
52// arq.c
53void ARQInit(void);
54void ARQReset(void);
55void ARQPostRequest(struct ARQRequest* request, uintptr_t owner, u32 type,
58void ARQRemoveRequest(struct ARQRequest* request);
60void ARQFlushQueue(void);
63
64#endif
size_t size
Definition __os.h:98
ARQCallback ARRegisterDMACallback(ARQCallback callback)
Definition ar.c:20
void ARQReset(void)
Definition arq.c:121
u32 ARGetBaseAddress(void)
Definition ar.c:146
int ARCheckInit(void)
Definition ar.c:99
u32 ARGetSize(void)
Definition ar.c:151
void ARQRemoveRequest(struct ARQRequest *request)
Definition arq.c:177
void ARReset(void)
Definition ar.c:134
void ARStartDMA(u32 type, u32 mainmem_addr, u32 aram_addr, u32 length)
Definition ar.c:43
void ARQFlushQueue(void)
Definition arq.c:245
u32 ARQGetChunkSize(void)
Definition arq.c:272
void(* ARQCallback)(struct ARQRequest *)
Definition ar.h:8
void ARQSetChunkSize(u32 size)
Definition arq.c:260
u32 ARFree(u32 *length)
Definition ar.c:84
void ARQInit(void)
Definition arq.c:107
void ARQRemoveOwnerRequest(uintptr_t owner)
Definition arq.c:211
u32 ARInit(u32 *stack_index_addr, u32 num_entries)
Definition ar.c:104
u32 ARAlloc(u32 length)
Definition ar.c:64
u32 ARGetDMAStatus(void)
Definition ar.c:32
void ARQPostRequest(struct ARQRequest *request, uintptr_t owner, u32 type, u32 priority, u32 source, u32 dest, u32 length, ARQCallback callback)
Definition arq.c:126
void ARSetSize(void)
Definition ar.c:139
static void callback(HSD_GObj *gobj)
Definition ftdonkeyspeciallw.c:90
unsigned int u32
Definition types.h:13
__UINTPTR_TYPE__ uintptr_t
Definition stddef.h:13
Definition ar.h:10
struct ARQRequest * next
Definition ar.h:11
uintptr_t owner
Definition ar.h:12
ARQCallback callback
Definition ar.h:18
u32 priority
Definition ar.h:14
u32 length
Definition ar.h:17
u32 source
Definition ar.h:15
u32 dest
Definition ar.h:16
u32 type
Definition ar.h:13