mirror of
https://github.com/linux-msm/openocd.git
synced 2026-02-25 13:15:07 -08:00
[PATCH 1/2]support64: Add functions into types and target
Add functions into types.h, target.c, target.h to operate 64bits data. Prepare for 64bits mips target. Change-Id: I668a8a5ac12ba754ae310fa6e92cfc91af850b1c Signed-off-by: Dongxue Zhang <elta.era@gmail.com> Reviewed-on: http://openocd.zylin.com/1700 Tested-by: jenkins Reviewed-by: Mathias Küster <kesmtp@freenet.de> Reviewed-by: Andreas Fritiofson <andreas.fritiofson@gmail.com>
This commit is contained in:
committed by
Andreas Fritiofson
parent
3b020c5bb3
commit
4516eebaba
@@ -110,6 +110,17 @@ typedef bool _Bool;
|
||||
* Again, note that the "buf" pointer in memory is probably unaligned.
|
||||
*/
|
||||
|
||||
static inline uint64_t le_to_h_u64(const uint8_t *buf)
|
||||
{
|
||||
return (uint64_t)((uint64_t)buf[0] |
|
||||
(uint64_t)buf[1] << 8 |
|
||||
(uint64_t)buf[2] << 16 |
|
||||
(uint64_t)buf[3] << 24 |
|
||||
(uint64_t)buf[4] << 32 |
|
||||
(uint64_t)buf[5] << 40 |
|
||||
(uint64_t)buf[6] << 48 |
|
||||
(uint64_t)buf[7] << 56);
|
||||
}
|
||||
|
||||
static inline uint32_t le_to_h_u32(const uint8_t* buf)
|
||||
{
|
||||
@@ -126,6 +137,18 @@ static inline uint16_t le_to_h_u16(const uint8_t* buf)
|
||||
return (uint16_t)(buf[0] | buf[1] << 8);
|
||||
}
|
||||
|
||||
static inline uint64_t be_to_h_u64(const uint8_t *buf)
|
||||
{
|
||||
return (uint64_t)((uint64_t)buf[7] |
|
||||
(uint64_t)buf[6] << 8 |
|
||||
(uint64_t)buf[5] << 16 |
|
||||
(uint64_t)buf[4] << 24 |
|
||||
(uint64_t)buf[3] << 32 |
|
||||
(uint64_t)buf[2] << 40 |
|
||||
(uint64_t)buf[1] << 48 |
|
||||
(uint64_t)buf[0] << 56);
|
||||
}
|
||||
|
||||
static inline uint32_t be_to_h_u32(const uint8_t* buf)
|
||||
{
|
||||
return (uint32_t)(buf[3] | buf[2] << 8 | buf[1] << 16 | buf[0] << 24);
|
||||
@@ -141,6 +164,30 @@ static inline uint16_t be_to_h_u16(const uint8_t* buf)
|
||||
return (uint16_t)(buf[1] | buf[0] << 8);
|
||||
}
|
||||
|
||||
static inline void h_u64_to_le(uint8_t *buf, int64_t val)
|
||||
{
|
||||
buf[7] = (uint8_t) (val >> 56);
|
||||
buf[6] = (uint8_t) (val >> 48);
|
||||
buf[5] = (uint8_t) (val >> 40);
|
||||
buf[4] = (uint8_t) (val >> 32);
|
||||
buf[3] = (uint8_t) (val >> 24);
|
||||
buf[2] = (uint8_t) (val >> 16);
|
||||
buf[1] = (uint8_t) (val >> 8);
|
||||
buf[0] = (uint8_t) (val >> 0);
|
||||
}
|
||||
|
||||
static inline void h_u64_to_be(uint8_t *buf, int64_t val)
|
||||
{
|
||||
buf[0] = (uint8_t) (val >> 56);
|
||||
buf[1] = (uint8_t) (val >> 48);
|
||||
buf[2] = (uint8_t) (val >> 40);
|
||||
buf[3] = (uint8_t) (val >> 32);
|
||||
buf[4] = (uint8_t) (val >> 24);
|
||||
buf[5] = (uint8_t) (val >> 16);
|
||||
buf[6] = (uint8_t) (val >> 8);
|
||||
buf[7] = (uint8_t) (val >> 0);
|
||||
}
|
||||
|
||||
static inline void h_u32_to_le(uint8_t* buf, int val)
|
||||
{
|
||||
buf[3] = (uint8_t) (val >> 24);
|
||||
|
||||
Reference in New Issue
Block a user