mirror of https://github.com/zeldaret/tp.git
OK va_list, va_start, va_arg, and va_end
This commit is contained in:
parent
d105dd9d80
commit
2e31b7160b
|
|
@ -3,4 +3,32 @@
|
|||
|
||||
#include "dolphin/types.h"
|
||||
|
||||
// not sure what the members are. OK when the struct is 12 bytes.
|
||||
typedef struct __va_list_struct {
|
||||
u8 data[12];
|
||||
};
|
||||
|
||||
typedef __va_list_struct __va_list[1];
|
||||
|
||||
extern "C" void __va_arg(void*, int);
|
||||
|
||||
#if IN_VSCODE_EDITOR
|
||||
#define __builtin_va_info(...)
|
||||
#define _var_arg_typeof(...)
|
||||
#endif
|
||||
|
||||
|
||||
// from defined-string in mwcceppc.exe:
|
||||
// __builtin_va_info: initialize the __va_list_struct
|
||||
// _var_arg_typeof: convert type to integer for __va_arg
|
||||
#define __va_start(list, fmt) __builtin_va_info(&list)
|
||||
#define __va_arg(list, type) (*((type*)__va_arg(ap, _var_arg_typeof(type))))
|
||||
#define va_start __va_start
|
||||
#define va_arg __va_arg
|
||||
#define va_end __va_end
|
||||
#define va_list __va_list
|
||||
#define __va_end(list) ((void)0)
|
||||
|
||||
#define __va_copy(a, b) (*(a) = *(b))
|
||||
|
||||
#endif /* __VA_ARG_H */
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@
|
|||
#include "dolphin/types.h"
|
||||
#include "global.h"
|
||||
#include "msl_c/string.h"
|
||||
#include "Runtime.PPCEABI.H/__va_arg.h"
|
||||
|
||||
//
|
||||
// Types:
|
||||
|
|
|
|||
|
|
@ -7,12 +7,12 @@
|
|||
#include "dol2asm.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
#undef __va_arg
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
//
|
||||
|
||||
extern "C" void __va_arg();
|
||||
|
||||
//
|
||||
// External References:
|
||||
//
|
||||
|
|
@ -25,7 +25,7 @@ extern "C" void __va_arg();
|
|||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void __va_arg() {
|
||||
asm void __va_arg(void*, int) {
|
||||
nofralloc
|
||||
#include "asm/Runtime.PPCEABI.H/__va_arg/__va_arg.s"
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue