Skip to content

Commit

Permalink
fix trimarea dumper crsh on big endian machines
Browse files Browse the repository at this point in the history
  • Loading branch information
root authored and root committed Aug 20, 2022
1 parent 7302a3e commit ecf469c
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 3 deletions.
22 changes: 20 additions & 2 deletions newflasher.c
Original file line number Diff line number Diff line change
Expand Up @@ -207,12 +207,30 @@ static bool is_2021_device = false;

static unsigned int battery_level = 0;

unsigned int swap_uint32(unsigned int val) {
int is_big_endian(void)
{
union {
uint32_t i;
char c[4];
} e = { 0x01000000 };

return e.c[0];
}

unsigned int swap_uint32(unsigned int val)
{
if (is_big_endian())
return val;

val = ((val << 8) & 0xFF00FF00 ) | ((val >> 8) & 0xFF00FF);
return ((val << 16) | (val >> 16)) & 0xffffffff;
}

unsigned long long swap_uint64(unsigned long long val) {
unsigned long long swap_uint64(unsigned long long val)
{
if (is_big_endian())
return val;

val = ((val << 8) & 0xFF00FF00FF00FF00ULL) | ((val >> 8) & 0x00FF00FF00FF00FFULL);
val = ((val << 16) & 0xFFFF0000FFFF0000ULL) | ((val >> 16) & 0x0000FFFF0000FFFFULL);
return ((val << 32) | (val >> 32)) & 0xffffffffffffffffULL;
Expand Down
2 changes: 1 addition & 1 deletion version.h
Original file line number Diff line number Diff line change
@@ -1 +1 @@
#define VERSION 52
#define VERSION 54

0 comments on commit ecf469c

Please sign in to comment.