blob: 88196f629c62469c49dc2e8a18d7f7a44c0be0fc [file] [log] [blame]
/*
* Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include "le.h"
uint8_t load_u8_le(const void *base, size_t offset)
{
const uint8_t *v = (const uint8_t*)base + offset;
uint8_t r = v[0];
return r;
}
uint16_t load_u16_le(const void *base, size_t offset)
{
const uint8_t *v = (const uint8_t*)base + offset;
uint16_t r = 0;
r |= (uint16_t)v[0];
r |= (uint16_t)v[1] << 8;
return r;
}
uint32_t load_u32_le(const void *base, size_t offset)
{
const uint8_t *v = (const uint8_t*)base + offset;
uint32_t r = 0;
r |= (uint32_t)v[0];
r |= (uint32_t)v[1] << 8;
r |= (uint32_t)v[2] << 16;
r |= (uint32_t)v[3] << 24;
return r;
}
uint64_t load_u64_le(const void *base, size_t offset)
{
const uint8_t *v = (const uint8_t*)base + offset;
uint64_t r = 0;
r |= (uint64_t)v[0];
r |= (uint64_t)v[1] << 8;
r |= (uint64_t)v[2] << 16;
r |= (uint64_t)v[3] << 24;
r |= (uint64_t)v[4] << 32;
r |= (uint64_t)v[5] << 40;
r |= (uint64_t)v[6] << 48;
r |= (uint64_t)v[7] << 56;
return r;
}
void store_u8_le(void *base, size_t offset, uint8_t val)
{
uint8_t *v = (uint8_t*)base + offset;
v[0] = val;
}
void store_u16_le(void *base, size_t offset, uint16_t val)
{
uint8_t *v = (uint8_t*)base + offset;
v[0] = (uint8_t)(val & 0xff);
v[1] = (uint8_t)((val >> 8) & 0xff);
}
void store_u32_le(void *base, size_t offset, uint32_t val)
{
uint8_t *v = (uint8_t*)base + offset;
v[0] = (uint8_t)(val & 0xff);
v[1] = (uint8_t)((val >> 8) & 0xff);
v[2] = (uint8_t)((val >> 16) & 0xff);
v[3] = (uint8_t)((val >> 24) & 0xff);
}
void store_u64_le(void *base, size_t offset, uint64_t val)
{
uint8_t *v = (uint8_t*)base + offset;
v[0] = (uint8_t)(val & 0xff);
v[1] = (uint8_t)((val >> 8) & 0xff);
v[2] = (uint8_t)((val >> 16) & 0xff);
v[3] = (uint8_t)((val >> 24) & 0xff);
v[4] = (uint8_t)((val >> 32) & 0xff);
v[5] = (uint8_t)((val >> 40) & 0xff);
v[6] = (uint8_t)((val >> 48) & 0xff);
v[7] = (uint8_t)((val >> 56) & 0xff);
}