#include "ds2_malloc.h"
#include "dma_adj.h"

#ifdef DS2_DMA

struct SPointerAdjustments PtrAdj;

void* AlignedMalloc (unsigned int Size, unsigned int Alignment, unsigned int* Adjustment)
{
	if (Alignment == 0) Alignment = 1;

	unsigned char* result = (unsigned char*) malloc(Size + Alignment);
	if (!result) {
		return result;
	} else {
		*Adjustment = Alignment - ((unsigned int) result & (Alignment - 1));
		return (void*) (result + *Adjustment);
	}
}

void AlignedFree (void* Memory, unsigned int Adjustment)
{
	free((void*) ((unsigned char*) Memory - Adjustment));
}

#endif // DS2_DMA