PS2SDK
PS2 Homebrew Libraries
defs.h
Go to the documentation of this file.
1
/*
2
# _____ ___ ____ ___ ____
3
# ____| | ____| | | |____|
4
# | ___| |____ ___| ____| | \ PS2DEV Open Source Project.
5
#-----------------------------------------------------------------------
6
# Copyright (c) 2003 Marcus R. Brown <mrbrown@0xd6.org>
7
# Licenced under Academic Free License version 2.0
8
# Review ps2sdk README & LICENSE files for further details.
9
*/
10
16
#ifndef __DEFS_H__
17
#define __DEFS_H__
18
19
#include <types.h>
20
21
#ifdef __cplusplus
22
extern
"C"
{
23
#endif
24
25
#ifndef NULL
26
#define NULL ((void *)0)
27
#endif
28
29
#ifndef ALIGN
30
#define ALIGN(x, align) (((x)+((align)-1))&~((align)-1))
31
#endif
32
33
#define PHYSADDR(a) (((u32)(a)) & 0x1fffffff)
34
35
#define KSEG1 0xa0000000
36
#define KSEG1ADDR(a) ((__typeof__(a))(((u32)(a) & 0x1fffffff) | KSEG1))
37
38
#if !defined(USE_GP_REGISTER)
39
#define USE_GP_REGISTER 1
40
#endif
41
42
static
__inline__
void
SetGP(
void
*gp)
43
{
44
register
void
*gpReg __asm__(
"gp"
);
45
46
gpReg = gp;
47
__asm__ __volatile__(
" "
::
"r"
(gpReg));
48
}
49
50
extern
void
*
_gp
;
51
52
static
__inline__
void
*GetGP(
void
)
53
{
54
register
void
*gpReg __asm__(
"gp"
);
55
56
__asm__ __volatile__(
" "
:
"=r"
(gpReg));
57
return
gpReg;
58
}
59
60
static
__inline__
void
*ChangeGP(
void
*gp)
61
{
62
void
*OldGP;
63
64
OldGP = GetGP();
65
SetGP(gp);
66
67
return
OldGP;
68
}
69
70
#define SetModuleGP() ChangeGP(&_gp)
71
72
static
inline
void
*iop_memcpy(
void
*dest,
const
void
*src,
int
size)
73
{
74
u8 *d = (u8 *)dest, *s = (u8 *)src;
75
76
while
(size--)
77
*d++ = *s++;
78
return
dest;
79
}
80
81
#ifdef __cplusplus
82
}
83
#endif
84
85
#endif
/* __DEFS_H__ */
_gp
void * _gp
iop
kernel
include
defs.h
Generated on Sat May 16 2026 16:59:26 for PS2SDK by
1.8.17