sdk-core v2026.11.05
PS2 SDK - core tier (build-critical EE/IOP modules)
Loading...
Searching...
No Matches
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
17#ifndef __DEFS_H__
18#define __DEFS_H__
19
20#include <types.h>
21
22#ifdef __cplusplus
23extern "C" {
24#endif
25
26#ifndef NULL
27#define NULL ((void *)0)
28#endif
29
30#ifndef ALIGN
31#define ALIGN(x, align) (((x)+((align)-1))&~((align)-1))
32#endif
33
34#define PHYSADDR(a) (((u32)(a)) & 0x1fffffff)
35
36#define KSEG1 0xa0000000
37#define KSEG1ADDR(a) ((__typeof__(a))(((u32)(a) & 0x1fffffff) | KSEG1))
38
39#if !defined(USE_GP_REGISTER)
40#define USE_GP_REGISTER 1
41#endif
42
43static __inline__ void SetGP(void *gp)
44{
45 register void *gpReg __asm__("gp");
46
47 gpReg = gp;
48 __asm__ __volatile__(" " ::"r"(gpReg));
49}
50
51extern void *_gp;
52
53static __inline__ void *GetGP(void)
54{
55 register void *gpReg __asm__("gp");
56
57 __asm__ __volatile__(" " : "=r"(gpReg));
58 return gpReg;
59}
60
61static __inline__ void *ChangeGP(void *gp)
62{
63 void *OldGP;
64
65 OldGP = GetGP();
66 SetGP(gp);
67
68 return OldGP;
69}
70
71#define SetModuleGP() ChangeGP(&_gp)
72
73static inline void *iop_memcpy(void *dest, const void *src, int size)
74{
75 u8 *d = (u8 *)dest, *s = (u8 *)src;
76
77 while (size--)
78 *d++ = *s++;
79 return dest;
80}
81
82#ifdef __cplusplus
83}
84#endif
85
86#endif /* __DEFS_H__ */
void * _gp