forked from len0rd/rockbox
Use MEM_ALIGN_ATTR and CACHEALIGN_SIZE in oggmalloc to ensure optimal alignment.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29833 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
9c33dca647
commit
e720724b95
1 changed files with 6 additions and 7 deletions
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue