sdk-core v2026.11.05
PS2 SDK - core tier (build-critical EE/IOP modules)
Loading...
Searching...
No Matches
vif_registers.h
Go to the documentation of this file.
1
6
7#ifndef __VIF_REGISTERS_H__
8#define __VIF_REGISTERS_H__
9
10#include <tamtypes.h>
11
12#define VU0_MEM0_START 0x11000000
13#define VU0_MICROMEM0_START 0x11004000
14
15#define VU1_MEM1_START 0x11008000
16#define VU1_MICROMEM1_START 0x1100C000
17
18#define VIF0_FIFO 0x10004000
19#define VIF1_FIFO 0x10005000
20
21#define VIF0_STAT *(volatile u32 *)0x10003800
22#define VIF0_FBRST *(volatile u32 *)0x10003810
23#define VIF0_ERR *(volatile u32 *)0x10003820
24#define VIF0_MARK *(volatile u32 *)0x10003830
25#define VIF0_CYCLE *(volatile u32 *)0x10003840
26#define VIF0_MODE *(volatile u32 *)0x10003850
27#define VIF0_NUM *(volatile u32 *)0x10003860
28#define VIF0_MASK *(volatile u32 *)0x10003870
29#define VIF0_CODE *(volatile u32 *)0x10003880
30#define VIF0_ITOPS *(volatile u32 *)0x10003890
31#define VIF0_ITOP *(volatile u32 *)0x100038d0
32#define VIF0_TOP *(volatile u32 *)0x100038e0
33#define VIF0_R0 *(volatile u32 *)0x10003900
34#define VIF0_R1 *(volatile u32 *)0x10003910
35#define VIF0_R2 *(volatile u32 *)0x10003920
36#define VIF0_R3 *(volatile u32 *)0x10003930
37#define VIF0_C0 *(volatile u32 *)0x10003940
38#define VIF0_C1 *(volatile u32 *)0x10003950
39#define VIF0_C2 *(volatile u32 *)0x10003960
40#define VIF0_C3 *(volatile u32 *)0x10003970
41
42#define VIF1_STAT *(volatile u32 *)0x10003c00
43#define VIF1_FBRST *(volatile u32 *)0x10003c10
44#define VIF1_ERR *(volatile u32 *)0x10003c20
45#define VIF1_MARK *(volatile u32 *)0x10003c30
46#define VIF1_CYCLE *(volatile u32 *)0x10003c40
47#define VIF1_MODE *(volatile u32 *)0x10003c50
48#define VIF1_NUM *(volatile u32 *)0x10003c60
49#define VIF1_MASK *(volatile u32 *)0x10003c70
50#define VIF1_CODE *(volatile u32 *)0x10003c80
51#define VIF1_ITOPS *(volatile u32 *)0x10003c90
52#define VIF1_BASE *(volatile u32 *)0x10003ca0
53#define VIF1_OFST *(volatile u32 *)0x10003cb0
54#define VIF1_TOPS *(volatile u32 *)0x10003cc0
55#define VIF1_ITOP *(volatile u32 *)0x10003cd0
56#define VIF1_TOP *(volatile u32 *)0x10003ce0
57#define VIF1_R0 *(volatile u32 *)0x10003d00
58#define VIF1_R1 *(volatile u32 *)0x10003d10
59#define VIF1_R2 *(volatile u32 *)0x10003d20
60#define VIF1_R3 *(volatile u32 *)0x10003d30
61#define VIF1_C0 *(volatile u32 *)0x10003d40
62#define VIF1_C1 *(volatile u32 *)0x10003d50
63#define VIF1_C2 *(volatile u32 *)0x10003d60
64#define VIF1_C3 *(volatile u32 *)0x10003d70
65
66#define VIF_SET_FBRST(RST, FBK, STP, STC) \
67 (u32)((RST)&0x00000001) << 0 | (u32)((FBK)&0x00000001) << 1 | \
68 (u32)((STP)&0x00000001) << 2 | (u32)((STC)&0x00000001) << 3
69
70#define VIF_SET_ERR(MII, ME0, ME1) \
71 (u32)((MII)&0x00000001) << 0 | (u32)((ME0)&0x00000001) << 1 | \
72 (u32)((ME1)&0x00000001) << 2
73
74#define VIF_SET_MARK(MARK) \
75 (u32)((MARK)&0x0000FFFF) << 0
76
77typedef struct
78{
79 u32 vps : 2;
80 u32 vew : 1;
81 u32 vgw : 1; // vif1
82 u32 pad0 : 2;
83 u32 mrk : 1;
84 u32 dbf : 1; // vif1
85 u32 vss : 1;
86 u32 vfs : 1;
87 u32 vis : 1;
88 u32 irq : 1;
89 u32 er0 : 1;
90 u32 er1 : 1;
91 u32 pad1 : 9;
92 u32 fdr : 1; // vif1
93 u32 fqc : 5;
94 u32 pad2 : 3;
95} __attribute__((packed)) VIFSTAT;
96
97typedef struct
98{
99 u32 cl : 8;
100 u32 wl : 8;
101 u32 pad0 : 16;
102} __attribute__((packed)) VIFCYCLE;
103
104typedef struct
105{
106 u32 mode : 2;
107 u32 pad0 : 30;
108} __attribute__((packed)) VIFMODE;
109
110typedef struct
111{
112 u32 m0 : 2;
113 u32 m1 : 2;
114 u32 m2 : 2;
115 u32 m3 : 2;
116 u32 m4 : 2;
117 u32 m5 : 2;
118 u32 m6 : 2;
119 u32 m7 : 2;
120 u32 m8 : 2;
121 u32 m9 : 2;
122 u32 m10 : 2;
123 u32 m11 : 2;
124 u32 m12 : 2;
125 u32 m13 : 2;
126 u32 m14 : 2;
127 u32 m15 : 2;
128} __attribute__((packed)) VIFMASK;
129
130typedef struct
131{
132 u32 imdt : 16;
133 u32 num : 8;
134 u32 cmd : 8;
135} __attribute__((packed)) VIFCODE;
136
137typedef struct
138{
139 u32 itops : 10;
140 u32 pad0 : 22;
141} __attribute__((packed)) VIFITOPS;
142
143typedef struct
144{
145 u32 base : 10;
146 u32 pad0 : 22;
147} __attribute__((packed)) VIF1BASE; // vif1
148
149typedef struct
150{
151 u32 offset : 10;
152 u32 pad0 : 22;
153} __attribute__((packed)) VIF1OFST; // vif1
154
155typedef struct
156{
157 u32 tops : 10;
158 u32 pad0 : 22;
159} __attribute__((packed)) VIF1TOPS; // vif1
160
161typedef struct
162{
163 u32 itop : 10;
164 u32 pad0 : 22;
165} __attribute__((packed)) VIFITOP;
166
167typedef struct
168{
169 u32 top : 10;
170 u32 pad0 : 22;
171} __attribute__((packed)) VIFTOP;
172
173typedef struct
174{
175 u32 row;
176} VIFR;
177
178typedef struct
179{
180 u32 column;
181} VIFC;
182
183#endif /* __VIF_REGISTERS_H__ */