Skip to content

Commit c9d6d0b

Browse files
committed
Revert "Use 64-bit register values (#72)"
This reverts commit 44f94d9.
1 parent c85e307 commit c9d6d0b

File tree

4 files changed

+135
-70
lines changed

4 files changed

+135
-70
lines changed

helpers.h

+8-8
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@
33

44
#include <stdint.h>
55

6-
#define MEM_F64(a) (double_from_memory(mem, (uint32_t)(a)))
7-
#define MEM_F32(a) (*(float *)(mem + (uint32_t)(a)))
8-
#define MEM_U32(a) (*(uint32_t *)(mem + (uint32_t)(a)))
9-
#define MEM_S32(a) (*(int32_t *)(mem + (uint32_t)(a)))
10-
#define MEM_U16(a) (*(uint16_t *)(mem + ((uint32_t)(a) ^ 2)))
11-
#define MEM_S16(a) (*(int16_t *)(mem + ((uint32_t)(a) ^ 2)))
12-
#define MEM_U8(a) (*(uint8_t *)(mem + ((uint32_t)(a) ^ 3)))
13-
#define MEM_S8(a) (*(int8_t *)(mem + ((uint32_t)(a) ^ 3)))
6+
#define MEM_F64(a) (double_from_memory(mem, a))
7+
#define MEM_F32(a) (*(float *)(mem + a))
8+
#define MEM_U32(a) (*(uint32_t *)(mem + a))
9+
#define MEM_S32(a) (*(int32_t *)(mem + a))
10+
#define MEM_U16(a) (*(uint16_t *)(mem + ((a) ^ 2)))
11+
#define MEM_S16(a) (*(int16_t *)(mem + ((a) ^ 2)))
12+
#define MEM_U8(a) (*(uint8_t *)(mem + ((a) ^ 3)))
13+
#define MEM_S8(a) (*(int8_t *)(mem + ((a) ^ 3)))
1414

1515
#if !defined(__GNUC__) && !defined(__clang__)
1616
#define __attribute__(x)

libc_impl.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -2814,7 +2814,7 @@ uint32_t wrapper_tfind(uint8_t* mem, uint32_t key_addr, uint32_t rootp_addr, uin
28142814
// qsort implementation from SGI libc, originally derived from
28152815
// https://people.ece.ubc.ca/~eddieh/glu_dox/d7/da4/qsort_8c_source.html (public domain)
28162816

2817-
#define CMP(x, y) ((int32_t)(trampoline(mem, sp, (x), (y), 0, 0, compare_addr).v0))
2817+
#define CMP(x, y) (int32_t)(trampoline(mem, sp, (x), (y), 0, 0, compare_addr) >> 32)
28182818

28192819
static void qst(uint8_t* mem, uint32_t start, uint32_t end, fptr_trampoline trampoline, uint32_t compare_addr,
28202820
uint32_t sp, uint32_t size, uint32_t minSortSize, uint32_t medianOfThreeThreshold);

libc_impl.h

+2-6
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,9 @@ union FloatReg {
99
//double d;
1010
};
1111

12-
struct ReturnValue {
13-
uint64_t v0;
14-
uint64_t v1;
15-
};
12+
typedef uint64_t (*fptr_trampoline)(uint8_t* mem, uint32_t sp, uint32_t a0, uint32_t a1, uint32_t a2, uint32_t a3,
13+
uint32_t fp_dest);
1614

17-
typedef struct ReturnValue (*fptr_trampoline)(uint8_t* mem, uint32_t sp, uint64_t a0, uint64_t a1, uint64_t a2, uint64_t a3,
18-
uint32_t fp_dest);
1915

2016
void mmap_initial_data_range(uint8_t *mem, uint32_t start, uint32_t end);
2117
void setup_libc_data(uint8_t *mem);

0 commit comments

Comments
 (0)