From 30a98afceb0a9229049ce130c58a7103ea95196c Mon Sep 17 00:00:00 2001 From: nico Date: Thu, 5 Jul 2007 16:25:20 +0000 Subject: [PATCH] The problem on target was due to alignment issues, so add alignment checks. There might be more required. I don't understand why, but the linked list test still fails on target because of move_handle(). git-svn-id: svn://jdgordon.mine.nu/mob@34 9862a28c-4e93-4879-ac26-10afcf840a8f --- plugin/buffering.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/plugin/buffering.c b/plugin/buffering.c index 12c0ebd..30e9e3b 100644 --- a/plugin/buffering.c +++ b/plugin/buffering.c @@ -88,6 +88,9 @@ static struct memory_handle *add_handle(void) return NULL; } + /* make sure buf_widx is 32-bit aligned so that the handle struct is. */ + buf_widx = (RINGBUF_ADD(buf_widx, 3)) & ~3; + struct memory_handle *new_handle = (struct memory_handle *)(buffer + buf_widx); buf_widx = RINGBUF_ADD(buf_widx, data_size); @@ -178,6 +181,9 @@ static struct memory_handle *find_handle(int handle_id) Return a pointer to the new location of the handle */ static struct memory_handle *move_handle(size_t newpos, struct memory_handle *h) { + /* make sure buf_widx is 32-bit aligned so that the handle struct is. */ + newpos = (RINGBUF_ADD(newpos, 3)) & ~3; + struct memory_handle *dest = (struct memory_handle *)(buffer + newpos); /* Invalidate the cache to prevent it from keeping the old location of h */ @@ -499,14 +505,16 @@ bool test_ll(void) return false; /* int m2id = m2->id; - m2 = move_handle(m2->data + 1024*1024, m2); + m2 = move_handle(RINGBUF_ADD(m2->data, 1024*100), m2); + rb->logf("m2id: %d, m2->id: %d", m2id, m2->id); if (cur_handle != m4 || first_handle != m1 || m1->next != m2 || m2->next != m3 || find_handle(m2id) != m2) return false; int m1id = m1->id; - m1 = move_handle(m1->data + 1024*1024*3, m1); + m1 = move_handle(RINGBUF_ADD(m1->data, 1024*100*3), m1); + rb->logf("m1id: %d, m1->id: %d", m1id, m1->id); if (cur_handle != m4 || first_handle != m1 || m1->next != m2 || find_handle(m1id) != m1) -- 2.11.4.GIT