summaryrefslogtreecommitdiff
path: root/firmware/buffer.c
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/buffer.c')
-rw-r--r--firmware/buffer.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/firmware/buffer.c b/firmware/buffer.c
index a1a9b05..c317cec 100644
--- a/firmware/buffer.c
+++ b/firmware/buffer.c
@@ -61,7 +61,7 @@ void buffer_init(void)
void *buffer_alloc(size_t size)
{
- void *retval = audiobuf;
+ void *retval;
#ifdef BUFFER_ALLOC_DEBUG
struct buffer_start_marker *start;
struct buffer_end_marker *end;
@@ -70,6 +70,11 @@ void *buffer_alloc(size_t size)
/* 32-bit aligned */
size = (size + 3) & ~3;
+ /* Other code touches audiobuf. Make sure it stays aligned */
+ audiobuf = (void *)(((unsigned long)audiobuf + 3) & ~3);
+
+ retval = audiobuf;
+
#ifdef BUFFER_ALLOC_DEBUG
retval +=sizeof(struct buffer_start_marker);
if(size>0)