summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--apps/codecs/libtremor/oggmalloc.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/apps/codecs/libtremor/oggmalloc.c b/apps/codecs/libtremor/oggmalloc.c
index 3d60370641..3a5fecf910 100644
--- a/apps/codecs/libtremor/oggmalloc.c
+++ b/apps/codecs/libtremor/oggmalloc.c
@@ -61,7 +61,7 @@ void ogg_free(void* ptr)
}
/* Allocate IRAM buffer */
-static unsigned char iram_buff[IRAM_IBSS_SIZE] IBSS_ATTR __attribute__ ((aligned (16)));
+static unsigned char iram_buff[IRAM_IBSS_SIZE] IBSS_ATTR MEM_ALIGN_ATTR;
static size_t iram_remain;
void iram_malloc_init(void){
@@ -70,14 +70,13 @@ void iram_malloc_init(void){
void *iram_malloc(size_t size){
void* x;
-
- /* always ensure 16-byte aligned */
- if(size&0x0f)
- size=(size-(size&0x0f))+16;
-
+
+ /* always ensure alignment to CACHEALIGN_SIZE byte */
+ size = (size + (CACHEALIGN_SIZE-1)) & ~(CACHEALIGN_SIZE-1);
+
if(size>iram_remain)
return NULL;
-
+
x = &iram_buff[IRAM_IBSS_SIZE-iram_remain];
iram_remain-=size;