This is an automated email from Gerrit.

Andreas Fritiofson ([email protected]) just uploaded a new patch set 
to Gerrit, which you can find at http://openocd.zylin.com/1798

-- gerrit

commit d00ae2b0e27b769229c809696438703e6446e514
Author: Andreas Fritiofson <[email protected]>
Date:   Tue Nov 5 00:09:18 2013 +0100

    Add byte-swap helpers
    
    Change-Id: I970616bb0e2bbc693165a0d311840febbd9134f1
    Signed-off-by: Andreas Fritiofson <[email protected]>

diff --git a/src/helper/types.h b/src/helper/types.h
index 3d27e83..67f4501 100644
--- a/src/helper/types.h
+++ b/src/helper/types.h
@@ -183,6 +183,46 @@ static inline void h_u16_to_be(uint8_t* buf, int val)
        buf[1] = (uint8_t) (val >> 0);
 }
 
+/**
+ * Byte-swap buffer 16-bit.
+ *
+ * Len must be even, dst and src must be either the same or non-overlapping.
+ *
+ * @param dst Destination buffer.
+ * @param src Source buffer.
+ * @param len Length of source (and destination) buffer, in bytes.
+ */
+static inline void buf_bswap16(uint8_t *dst, const uint8_t *src, size_t len)
+{
+       assert(len % 2 == 0);
+       assert(dst == src || (dst + len <= src && src + len <= dst));
+
+       for (size_t n = 0; n < len; n += 2) {
+               uint16_t x = be_to_h_u16(src + n);
+               h_u16_to_le(dst + n, x);
+       }
+}
+
+/**
+ * Byte-swap buffer 32-bit.
+ *
+ * Len must be divisible by four, dst and src must be either the same or 
non-overlapping.
+ *
+ * @param dst Destination buffer.
+ * @param src Source buffer.
+ * @param len Length of source (and destination) buffer, in bytes.
+ */
+static inline void buf_bswap32(uint8_t *dst, const uint8_t *src, size_t len)
+{
+       assert(len % 4 == 0);
+       assert(dst == src || (dst + len <= src && src + len <= dst));
+
+       for (size_t n = 0; n < len; n += 4) {
+               uint32_t x = be_to_h_u32(src + n);
+               h_u32_to_le(dst + n, x);
+       }
+}
+
 #if defined(__ECOS)
 
 /* eCos plain lacks these definition... A series of upstream patches

-- 

------------------------------------------------------------------------------
November Webinars for C, C++, Fortran Developers
Accelerate application performance with scalable programming models. Explore
techniques for threading, error checking, porting, and tuning. Get the most 
from the latest Intel processors and coprocessors. See abstracts and register
http://pubads.g.doubleclick.net/gampad/clk?id=60136231&iu=/4140/ostg.clktrk
_______________________________________________
OpenOCD-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openocd-devel

Reply via email to