Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions helpers.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@

#include <stdint.h>

#define MEM_F64(a) (double_from_memory(mem, (uint32_t)(a)))
#define MEM_F32(a) (*(float *)(mem + (uint32_t)(a)))
#define MEM_U32(a) (*(uint32_t *)(mem + (uint32_t)(a)))
#define MEM_S32(a) (*(int32_t *)(mem + (uint32_t)(a)))
#define MEM_U16(a) (*(uint16_t *)(mem + ((uint32_t)(a) ^ 2)))
#define MEM_S16(a) (*(int16_t *)(mem + ((uint32_t)(a) ^ 2)))
#define MEM_U8(a) (*(uint8_t *)(mem + ((uint32_t)(a) ^ 3)))
#define MEM_S8(a) (*(int8_t *)(mem + ((uint32_t)(a) ^ 3)))
#define MEM_F64(a) (double_from_memory(mem, a))
#define MEM_F32(a) (*(float *)(mem + a))
#define MEM_U32(a) (*(uint32_t *)(mem + a))
#define MEM_S32(a) (*(int32_t *)(mem + a))
#define MEM_U16(a) (*(uint16_t *)(mem + ((a) ^ 2)))
#define MEM_S16(a) (*(int16_t *)(mem + ((a) ^ 2)))
#define MEM_U8(a) (*(uint8_t *)(mem + ((a) ^ 3)))
#define MEM_S8(a) (*(int8_t *)(mem + ((a) ^ 3)))

#if !defined(__GNUC__) && !defined(__clang__)
#define __attribute__(x)
Expand Down
2 changes: 1 addition & 1 deletion libc_impl.c
Original file line number Diff line number Diff line change
Expand Up @@ -2814,7 +2814,7 @@ uint32_t wrapper_tfind(uint8_t* mem, uint32_t key_addr, uint32_t rootp_addr, uin
// qsort implementation from SGI libc, originally derived from
// https://people.ece.ubc.ca/~eddieh/glu_dox/d7/da4/qsort_8c_source.html (public domain)

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

static void qst(uint8_t* mem, uint32_t start, uint32_t end, fptr_trampoline trampoline, uint32_t compare_addr,
uint32_t sp, uint32_t size, uint32_t minSortSize, uint32_t medianOfThreeThreshold);
Expand Down
8 changes: 2 additions & 6 deletions libc_impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,9 @@ union FloatReg {
//double d;
};

struct ReturnValue {
uint64_t v0;
uint64_t v1;
};
typedef uint64_t (*fptr_trampoline)(uint8_t* mem, uint32_t sp, uint32_t a0, uint32_t a1, uint32_t a2, uint32_t a3,
uint32_t fp_dest);

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

void mmap_initial_data_range(uint8_t *mem, uint32_t start, uint32_t end);
void setup_libc_data(uint8_t *mem);
Expand Down
Loading
Loading