Skip to content

Commit 7649cd3

Browse files
authored
Organize libc and libm files (zeldaret#1499)
* memmove * strcpy * strcmp * memset * fmodf * fix some missing includes * Remove libc header dependencies on libultra * fix * review
1 parent 2fdcdd9 commit 7649cd3

File tree

22 files changed

+77
-59
lines changed

22 files changed

+77
-59
lines changed

Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,8 @@ $(shell mkdir -p build/baserom $(foreach dir,$(SRC_DIRS) $(ASM_DIRS) $(ASSET_BIN
207207
# directory flags
208208
build/src/boot/O2/%.o: OPTFLAGS := -O2
209209

210+
build/src/boot/libc/%.o: OPTFLAGS := -O2
211+
build/src/boot/libm/%.o: OPTFLAGS := -O2
210212
build/src/boot/libc64/%.o: OPTFLAGS := -O2
211213

212214
build/src/libultra/os/%.o: OPTFLAGS := -O1

include/PR/ultratypes.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,14 @@ typedef volatile s64 vs64;
2222
typedef float f32;
2323
typedef double f64;
2424

25+
#if !defined(_SIZE_T)
26+
#define _SIZE_T
2527
#if defined(_MIPS_SZLONG) && (_MIPS_SZLONG == 64)
2628
typedef unsigned long size_t;
2729
#else
2830
typedef unsigned int size_t;
2931
#endif
32+
#endif
3033

3134
#ifndef NULL
3235
#define NULL ((void*)0)

include/functions.h

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -65,12 +65,6 @@ void MtxConv_L2F(MtxF* mtx, Mtx* mf);
6565

6666
s32 func_80086620(OSMesgQueue* param_1, PadMgr* param_2, OSContStatus* param_3);
6767

68-
f32 fmodf(f32 dividend, f32 divisor);
69-
void* __osMemset(void* ptr, s32 val, size_t size);
70-
s32 __osStrcmp(const char* str1, const char* str2);
71-
char* __osStrcpy(char* dst, const char* src);
72-
void* __osMemcpy(void* dst, void* src, size_t size);
73-
7468
// void EnItem00_SetObject(EnItem00* this, PlayState* play, f32* shadowOffset, f32* shadowScale);
7569
// void EnItem00_Init(Actor* thisx, PlayState* play);
7670
// void EnItem00_Destroy(Actor* thisx, PlayState* play);

include/libc/math.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,6 @@ float fabsf(float f);
1717
double sqrt(double d);
1818
#pragma intrinsic(sqrt)
1919

20+
float fmodf(float dividend, float divisor);
21+
2022
#endif

include/libc/stddef.h

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,16 @@
11
#ifndef LIBC_STDDEF_H
22
#define LIBC_STDDEF_H
33

4-
#include "PR/ultratypes.h"
4+
#if !defined(_SIZE_T)
5+
#define _SIZE_T
6+
#if defined(_MIPS_SZLONG) && (_MIPS_SZLONG == 64)
7+
typedef unsigned long size_t;
8+
#else
9+
typedef unsigned int size_t;
10+
#endif
11+
#endif
512

6-
typedef s32 ptrdiff_t;
13+
typedef signed long ptrdiff_t;
714

815
#ifdef __GNUC__
916
#define offsetof(structure, member) __builtin_offsetof (structure, member)

include/libc/string.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,13 @@
33

44
#include "libc/stddef.h"
55

6-
76
const char* strchr(const char* s, int c);
87
size_t strlen(const char* s);
98
void* memcpy(void* s1, const void* s2, size_t n);
109

10+
void* memset(void* ptr, int val, size_t size);
11+
int strcmp(const char* str1, const char* str2);
12+
char* strcpy(char* dst, const char* src);
13+
void* memmove(void* dst, const void* src, size_t size);
1114

1215
#endif

spec

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -237,11 +237,11 @@ beginseg
237237
include "build/src/libultra/os/sethwinterrupt.o"
238238
include "build/asm/boot/getwatchlo.text.o"
239239
include "build/asm/boot/setwatchlo.text.o"
240-
include "build/src/boot/O2/fmodf.o"
241-
include "build/src/boot/O2/__osMemset.o"
242-
include "build/src/boot/O2/__osStrcmp.o"
243-
include "build/src/boot/O2/__osStrcpy.o"
244-
include "build/src/boot/O2/__osMemcpy.o"
240+
include "build/src/boot/libm/fmodf.o"
241+
include "build/src/boot/libc/memset.o"
242+
include "build/src/boot/libc/strcmp.o"
243+
include "build/src/boot/libc/strcpy.o"
244+
include "build/src/boot/libc/memmove.o"
245245
include "build/src/boot/build.o"
246246
endseg
247247

src/boot/O2/__osMemset.c

Lines changed: 0 additions & 11 deletions
This file was deleted.

src/boot/O2/__osMemcpy.c renamed to src/boot/libc/memmove.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
#include "global.h"
1+
#include "libc/string.h"
22

3-
void* __osMemcpy(void* dst, void* src, size_t size) {
4-
u8* _dst = dst;
5-
u8* _src = src;
6-
register s32 rem;
3+
void* memmove(void* dst, const void* src, size_t size) {
4+
unsigned char* _dst = dst;
5+
const unsigned char* _src = src;
6+
register size_t rem;
77

88
if (_dst == _src) {
99
return dst;

src/boot/libc/memset.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#include "libc/string.h"
2+
3+
void* memset(void* ptr, int val, size_t size) {
4+
unsigned char* dst = ptr;
5+
register size_t rem;
6+
7+
for (rem = size--; rem != 0; rem = size--) {
8+
*dst++ = val;
9+
}
10+
11+
return ptr;
12+
}

0 commit comments

Comments
 (0)