sdk-core v2026.11.05
PS2 SDK - core tier (build-critical EE/IOP modules)
Loading...
Searching...
No Matches
tamtypes.h
Go to the documentation of this file.
1/*
2# _____ ___ ____ ___ ____
3# ____| | ____| | | |____|
4# | ___| |____ ___| ____| | \ PS2DEV Open Source Project.
5#-----------------------------------------------------------------------
6# Copyright 2001-2004, ps2dev - http://www.ps2dev.org
7# Licenced under Academic Free License version 2.0
8# Review ps2sdk README & LICENSE files for further details.
9*/
10
16
17#ifndef __TAMTYPES_H__
18#define __TAMTYPES_H__
19
20#if !defined(_EE) && !defined(_IOP)
21#error Either _EE or _IOP must be defined!
22#endif
23
24typedef unsigned char u8;
25typedef unsigned short u16;
26
27typedef volatile u8 vu8;
28typedef volatile u16 vu16;
29
30#ifdef _EE
31typedef unsigned int u32;
32#if __GNUC__ > 3
33typedef unsigned long long u64;
34#else
35typedef unsigned long u64;
36#endif
37typedef unsigned int u128 __attribute__((mode(TI)));
38
39typedef volatile u32 vu32;
40typedef volatile u64 vu64;
41typedef volatile u128 vu128 __attribute__((mode(TI)));
42#endif
43
44#ifdef _IOP
45typedef unsigned long u32;
46typedef unsigned long long u64;
47
48typedef volatile u32 vu32;
49typedef volatile u64 vu64;
50#endif
51
52typedef signed char s8;
53typedef signed short s16;
54
55typedef volatile s8 vs8;
56typedef volatile s16 vs16;
57
58#ifdef _EE
59typedef signed int s32;
60#if __GNUC__ > 3
61typedef signed long long s64;
62#else
63typedef signed long s64;
64#endif
65typedef signed int s128 __attribute__((mode(TI)));
66
67typedef volatile s32 vs32;
68typedef volatile s64 vs64;
69typedef volatile s128 vs128 __attribute__((mode(TI)));
70#endif
71
72#ifdef _IOP
73typedef signed long s32;
74typedef signed long long s64;
75
76typedef volatile s32 vs32;
77typedef volatile s64 vs64;
78#endif
79
80/* Pointers are 32-bit on both EE and IOP. */
81typedef u32 uiptr;
82typedef s32 siptr;
83
84typedef volatile u32 vuiptr;
85typedef volatile s32 vsiptr;
86
87#ifdef _EE
88typedef union
89{
90 u128 qw;
91 u8 b[16];
92 u16 hw[8];
93 u32 sw[4];
94 u64 dw[2];
95} qword_t;
96
97#endif
98
99#ifndef NULL
100#define NULL (void *)0
101#endif
102
103static inline u8 _lb(u32 addr)
104{
105 return *(vu8 *)addr;
106}
107static inline u16 _lh(u32 addr) { return *(vu16 *)addr; }
108static inline u32 _lw(u32 addr) { return *(vu32 *)addr; }
109
110static inline void _sb(u8 val, u32 addr) { *(vu8 *)addr = val; }
111static inline void _sh(u16 val, u32 addr) { *(vu16 *)addr = val; }
112static inline void _sw(u32 val, u32 addr) { *(vu32 *)addr = val; }
113
114#ifdef _EE
115static inline u64 _ld(u32 addr)
116{
117 return *(vu64 *)addr;
118}
119static inline u128 _lq(u32 addr) { return *(vu128 *)addr; }
120static inline void _sd(u64 val, u32 addr) { *(vu64 *)addr = val; }
121static inline void _sq(u128 val, u32 addr) { *(vu128 *)addr = val; }
122#endif
123
124#endif /* __TAMTYPES_H__ */