SGDK
A free and open development kit for the Sega Mega Drive
Loading...
Searching...
No Matches
memory.h
Go to the documentation of this file.
1
19
20#ifndef _MEMORY_H_
21#define _MEMORY_H_
22
23// asics memory address definitions
24#include "memory_base.h"
25
30#define GET_DWORDFROMPBYTE(src) ((src[0] << 24) | (src[1] << 16) | (src[2] << 8) | (src[3] << 0))
35#define GET_DWORDFROMPBYTE_LI(src) ((src[0] << 0) | (src[1] << 8) | (src[2] << 16) | (src[3] << 24))
40#define GET_WORDFROMPBYTE(src) ((src[0] << 8) | (src[1] << 0))
45#define GET_WORDFROMPBYTE_LI(src) ((src[0] << 0) | (src[1] << 8))
50#define GET_DWORDFROMPWORD(src) ((src[0] << 16) | (src[1] << 0))
55#define GET_DWORDFROMPWORD_LI(src) ((src[0] << 0) | (src[1] << 16))
56
57
62#define SWAP_u8(x, y) \
63{ \
64 u8 swp; \
65 \
66 swp = x; \
67 x = y; \
68 y = swp; \
69}
70
75#define SWAP_s8(x, y) \
76{ \
77 s8 swp; \
78 \
79 swp = x; \
80 x = y; \
81 y = swp; \
82}
83
88#define SWAP_u16(x, y) \
89{ \
90 u16 swp; \
91 \
92 swp = x; \
93 x = y; \
94 y = swp; \
95}
96
101#define SWAP_s16(x, y) \
102{ \
103 s16 swp; \
104 \
105 swp = x; \
106 x = y; \
107 y = swp; \
108}
109
114#define SWAP_u32(x, y) \
115{ \
116 u32 swp; \
117 \
118 swp = x; \
119 x = y; \
120 y = swp; \
121}
122
127#define SWAP_s32(x, y) \
128{ \
129 s32 swp; \
130 \
131 swp = x; \
132 x = y; \
133 y = swp; \
134}
135
136
137#if (ENABLE_NEWLIB == 0)
138// enable standard libc compatibility
139#define malloc(x) MEM_alloc(x)
140#define free(x) MEM_free(x)
141#endif // ENABLE_NEWLIB
142
143
148u16 MEM_getFree(void);
159
171void MEM_free(void *ptr);
186void* MEM_alloc(u16 size);
203 void* MEM_allocAt(u32 addr, u16 size);
204
210void MEM_pack(void);
217void MEM_dump(void);
218
219#if (ENABLE_NEWLIB == 0)
233void memset(void *to, u8 value, u16 len);
234#endif // ENABLE_NEWLIB
235
249void memsetU16(u16 *to, u16 value, u16 len);
263void memsetU32(u32 *to, u32 value, u16 len);
264
265#if (ENABLE_NEWLIB == 0)
280void memcpy(void *to, const void *from, u16 len);
281#endif // ENABLE_NEWLIB
282
286#define memcpyU16(to, from, len) _Pragma("GCC error \"This method is deprecated, use memcpy(..) instead.\"")
290#define memcpyU32(to, from, len) _Pragma("GCC error \"This method is deprecated, use memcpy(..) instead.\"")
294#define fastMemset(to, value, len) _Pragma("GCC error \"This method is deprecated, use memset(..) instead.\"")
298#define fastMemsetU16(to, value, len) _Pragma("GCC error \"This method is deprecated, use memsetU16(..) instead.\"")
302#define fastMemsetU32(to, value, len) _Pragma("GCC error \"This method is deprecated, use memsetU32(..) instead.\"")
306#define astMemcpy(to, from, len) _Pragma("GCC error \"This method is deprecated, use memcpy(..) instead.\"")
310#define fastMemcpyU16(to, from, len) _Pragma("GCC error \"This method is deprecated, use memcpy(..) instead.\"")
314#define fastMemcpyU32(to, from, len) _Pragma("GCC error \"This method is deprecated, use memcpy(..) instead.\"")
315
316
317#endif // _MEMORY_H_
void * MEM_alloc(u16 size)
Allocate memory block.
Definition memory.c:259
void MEM_pack(void)
Pack all free blocks and reset allocation search from start of heap. You can call this method before...
Definition memory.c:409
void memcpy(void *to, const void *from, u16 len)
Copy block of memory.
void memset(void *to, u8 value, u16 len)
Fill block of memory.
void MEM_free(void *ptr)
Deallocate space in memory.
Definition memory.c:386
u16 MEM_getLargestFreeBlock(void)
Return largest free memory block in bytes.
Definition memory.c:208
void * MEM_allocAt(u32 addr, u16 size)
Allocate memory block at a specific address (useful for short addressing or fixed low level working a...
Definition memory.c:324
void MEM_dump(void)
Show memory dump.
Definition memory.c:462
u16 MEM_getAllocated(void)
Return allocated memory in bytes.
Definition memory.c:237
void memsetU16(u16 *to, u16 value, u16 len)
Fill block of memory (optimized for u16)
void memsetU32(u32 *to, u32 value, u16 len)
Fill block of memory (optimized for u32)
u16 MEM_getFree(void)
Return available memory in bytes.
Definition memory.c:186
Memory base definition.
unsigned long u32
Definition types.h:105
unsigned short u16
Definition types.h:100
unsigned char u8
Definition types.h:95