I checked the following in just now

-Duane.

bash-3.2$ svn diff jtag.c
Index: jtag.c
===================================================================
--- jtag.c    (revision 1204)
+++ jtag.c    (working copy)
@@ -463,6 +463,39 @@
     int offset;
     u8 *t;
 
+    /*
+     * WARNING:
+     *    We align/round the *SIZE* per below
+     *    so that all pointers returned by
+     *    this function are reasonably well
+     *    aligned.
+     *
+     * If we did not, then an "odd-length" request would cause the
+     * *next* allocation to be at an *odd* address, and because
+     * this function has the same type of api as malloc() - we
+     * must also return pointers that have the same type of
+     * alignment.
+     *
+     * What I do not/have is a reasonable portable means
+     * to align by...
+     *
+     * The solution here, is based on these suggestions.
+     * http://gcc.gnu.org/ml/gcc-help/2008-12/msg00041.html
+     *
+     */
+    union worse_case_align {
+      int i;
+      long l;
+      float f;
+      void *v;
+    };
+#define ALIGN_SIZE  (sizeof(union worse_case_align))
+
+    // The alignment process.
+    size = (size + ALIGN_SIZE -1) & (~(ALIGN_SIZE-1));
+    // Done...
+   
+
     if (*p_page)
     {
         while ((*p_page)->next)
_______________________________________________
Openocd-development mailing list
Openocd-development@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/openocd-development

Reply via email to