blob: 88196f629c62469c49dc2e8a18d7f7a44c0be0fc [file] [log] [blame]
Julian Hall201ce462021-04-29 11:05:34 +01001/*
2 * Copyright (c) 2021, Arm Limited and Contributors. All rights reserved.
3 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
7#include "le.h"
8
9uint8_t load_u8_le(const void *base, size_t offset)
10{
11 const uint8_t *v = (const uint8_t*)base + offset;
12 uint8_t r = v[0];
13
14 return r;
15}
16
17uint16_t load_u16_le(const void *base, size_t offset)
18{
19 const uint8_t *v = (const uint8_t*)base + offset;
20 uint16_t r = 0;
21 r |= (uint16_t)v[0];
22 r |= (uint16_t)v[1] << 8;
23
24 return r;
25}
26
27uint32_t load_u32_le(const void *base, size_t offset)
28{
29 const uint8_t *v = (const uint8_t*)base + offset;
30 uint32_t r = 0;
31 r |= (uint32_t)v[0];
32 r |= (uint32_t)v[1] << 8;
33 r |= (uint32_t)v[2] << 16;
34 r |= (uint32_t)v[3] << 24;
35
36 return r;
37}
38
39uint64_t load_u64_le(const void *base, size_t offset)
40{
41 const uint8_t *v = (const uint8_t*)base + offset;
42 uint64_t r = 0;
43 r |= (uint64_t)v[0];
44 r |= (uint64_t)v[1] << 8;
45 r |= (uint64_t)v[2] << 16;
46 r |= (uint64_t)v[3] << 24;
47 r |= (uint64_t)v[4] << 32;
48 r |= (uint64_t)v[5] << 40;
49 r |= (uint64_t)v[6] << 48;
50 r |= (uint64_t)v[7] << 56;
51
52 return r;
53}
54
55void store_u8_le(void *base, size_t offset, uint8_t val)
56{
57 uint8_t *v = (uint8_t*)base + offset;
58 v[0] = val;
59}
60
61void store_u16_le(void *base, size_t offset, uint16_t val)
62{
63 uint8_t *v = (uint8_t*)base + offset;
64
65 v[0] = (uint8_t)(val & 0xff);
66 v[1] = (uint8_t)((val >> 8) & 0xff);
67}
68
69void store_u32_le(void *base, size_t offset, uint32_t val)
70{
71 uint8_t *v = (uint8_t*)base + offset;
72
73 v[0] = (uint8_t)(val & 0xff);
74 v[1] = (uint8_t)((val >> 8) & 0xff);
75 v[2] = (uint8_t)((val >> 16) & 0xff);
76 v[3] = (uint8_t)((val >> 24) & 0xff);
77}
78
79void store_u64_le(void *base, size_t offset, uint64_t val)
80{
81 uint8_t *v = (uint8_t*)base + offset;
82
83 v[0] = (uint8_t)(val & 0xff);
84 v[1] = (uint8_t)((val >> 8) & 0xff);
85 v[2] = (uint8_t)((val >> 16) & 0xff);
86 v[3] = (uint8_t)((val >> 24) & 0xff);
87 v[4] = (uint8_t)((val >> 32) & 0xff);
88 v[5] = (uint8_t)((val >> 40) & 0xff);
89 v[6] = (uint8_t)((val >> 48) & 0xff);
90 v[7] = (uint8_t)((val >> 56) & 0xff);
91}