summaryrefslogtreecommitdiff
path: root/src/dolphin/os/OSArena.c
blob: 089262a8f12baecbebd2ba78a388fb2b6109dcfd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include "dolphin/os/OSArena.h"
#include "dolphin/os/OSAlloc.h"

static void* __OSArenaHi;

void* OSGetArenaHi(void) {
    return __OSArenaHi;
}

static void* __OSArenaLo = (void*)0xFFFFFFFF;

void* OSGetArenaLo(void) {
    return __OSArenaLo;
}

void OSSetArenaHi(void* hi) {
    __OSArenaHi = hi;
}

void OSSetArenaLo(void* lo) {
    __OSArenaLo = lo;
}

void* OSAllocFromArenaLo(u32 size, s32 alignment) {
    u8* blk_start = OSRoundUpPtr(__OSArenaLo, alignment);
    u8* blk_end = blk_start + size;
    blk_end = OSRoundUpPtr(blk_end, alignment);

    __OSArenaLo = blk_end;
    return blk_start;
}