some MSL_C work (#192)

* wip

* bunch of MSL_C files

thanks to pikmin2 decomp for their work

* format / asm

* progress

* fix

* fix remove-asm to work with C files

* init / start
This commit is contained in:
TakaRikka
2022-04-24 04:02:50 -07:00
committed by GitHub
parent a1099217d6
commit 589cc12296
154 changed files with 2388 additions and 3088 deletions
+26 -26
View File
@@ -4,15 +4,15 @@
//
#include "JSystem/J2DGraph/J2DScreen.h"
#include "JSystem/JGeometry.h"
#include "dol2asm.h"
#include "dolphin/types.h"
#include "JSystem/JSupport/JSUMemoryStream.h"
#include "JSystem/J2DGraph/J2DMaterialFactory.h"
#include "JSystem/J2DGraph/J2DOrthoGraph.h"
#include "JSystem/J2DGraph/J2DPictureEx.h"
#include "JSystem/J2DGraph/J2DTextBoxEx.h"
#include "JSystem/J2DGraph/J2DWindowEx.h"
#include "JSystem/J2DGraph/J2DPictureEx.h"
#include "JSystem/J2DGraph/J2DOrthoGraph.h"
#include "JSystem/J2DGraph/J2DMaterialFactory.h"
#include "JSystem/JGeometry.h"
#include "JSystem/JSupport/JSUMemoryStream.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Forward References:
@@ -356,12 +356,12 @@ bool J2DScreen::getScreenInformation(JSURandomInputStream* stream) {
* makeHierarchyPanes__9J2DScreenFP7J2DPaneP20JSURandomInputStreamUlP10JKRArchive */
// goto can probably be replaced
s32 J2DScreen::makeHierarchyPanes(J2DPane* basePane, JSURandomInputStream* stream, u32 param_2,
JKRArchive* archive) {
JKRArchive* archive) {
J2DScrnBlockHeader header;
J2DPane* next_pane = basePane;
do {
loop:
loop:
stream->peek(&header, sizeof(J2DScrnBlockHeader));
switch (header.mTag) {
@@ -382,7 +382,7 @@ s32 J2DScreen::makeHierarchyPanes(J2DPane* basePane, JSURandomInputStream* strea
case 'TEX1':
J2DResReference* texRes = getResReference(stream, param_2);
mTexRes = texRes;
if (texRes != NULL) {
goto loop;
}
@@ -390,7 +390,7 @@ s32 J2DScreen::makeHierarchyPanes(J2DPane* basePane, JSURandomInputStream* strea
case 'FNT1':
J2DResReference* fntRes = getResReference(stream, param_2);
mFontRes = fntRes;
if (fntRes != NULL) {
goto loop;
}
@@ -407,8 +407,7 @@ s32 J2DScreen::makeHierarchyPanes(J2DPane* basePane, JSURandomInputStream* strea
} else {
next_pane = createPane(header, stream, basePane, param_2, archive);
}
}
while (next_pane != NULL);
} while (next_pane != NULL);
return 2;
}
@@ -452,7 +451,7 @@ J2DPane* J2DScreen::createPane(J2DScrnBlockHeader const& header, JSURandomInputS
case 'TBX2':
if (param_3 & 0x1F0000) {
newPane = new J2DTextBoxEx(basePane, stream, param_3, mMaterials);
break;
break;
}
newPane = new J2DTextBox(basePane, stream, param_3, mMaterials);
break;
@@ -465,7 +464,7 @@ J2DPane* J2DScreen::createPane(J2DScrnBlockHeader const& header, JSURandomInputS
stream->seek(start, JSUStreamSeekFrom_SET);
break;
}
return newPane;
}
@@ -508,7 +507,8 @@ void J2DScreen::draw(f32 param_0, f32 param_1, J2DGrafContext const* grafCtx) {
GXSetVtxDesc(GX_VA_TEX0, GX_NONE);
GXSetCullMode(GX_CULL_NONE);
GXSetNumTexGens(0);
GXSetChanCtrl(GX_COLOR0A0, GX_DISABLE, GX_SRC_REG, GX_SRC_VTX, GX_LIGHT_NULL, GX_DF_NONE, GX_AF_NONE);
GXSetChanCtrl(GX_COLOR0A0, GX_DISABLE, GX_SRC_REG, GX_SRC_VTX, GX_LIGHT_NULL, GX_DF_NONE,
GX_AF_NONE);
for (int i = 0; i < 4; i++) {
GXSetTevSwapModeTable((GXTevSwapSel)i, GX_CH_RED, GX_CH_GREEN, GX_CH_BLUE, GX_CH_ALPHA);
}
@@ -628,8 +628,7 @@ asm J2DResReference* J2DScreen::getResReference(JSURandomInputStream* param_0, u
* createMaterial__9J2DScreenFP20JSURandomInputStreamUlP10JKRArchive */
// nametab section has issues
#ifdef NONMATCHING
bool J2DScreen::createMaterial(JSURandomInputStream* stream, u32 param_1,
JKRArchive* archive) {
bool J2DScreen::createMaterial(JSURandomInputStream* stream, u32 param_1, JKRArchive* archive) {
s32 position = stream->getPosition();
J2DScrnBlockHeader header;
@@ -655,7 +654,8 @@ bool J2DScreen::createMaterial(JSURandomInputStream* stream, u32 param_1,
}
if (param_1 & 0x1F0000) {
u32 offset = buffer[0x14] << 0x18 | buffer[0x15] << 0x10 | buffer[0x16] << 8 | buffer[0x17];
u32 offset =
buffer[0x14] << 0x18 | buffer[0x15] << 0x10 | buffer[0x16] << 8 | buffer[0x17];
char* sec = (char*)buffer + offset;
u16* sec_s = (u16*)sec + *(u16*)sec;
@@ -726,7 +726,7 @@ void* J2DScreen::getNameResource(char const* resName) {
/* 802F9690-802F9704 2F3FD0 0074+00 0/0 30/30 3/3 .text animation__9J2DScreenFv */
void J2DScreen::animation() {
animationPane(mTransform);
for (u16 i = 0; i < mMaterialNum; i++) {
mMaterials[i].animation();
}
@@ -741,7 +741,7 @@ void J2DScreen::setAnimation(J2DAnmColor* anmColor) {
u16 matID = anmColor->getUpdateMaterialID(i);
if (matID < mMaterialNum) {
mMaterials[matID].setAnimation(anmColor);
}
}
}
}
@@ -755,7 +755,7 @@ void J2DScreen::setAnimation(J2DAnmTextureSRTKey* anmSRTKey) {
u16 matID = anmSRTKey->getUpdateMaterialID(i);
if (matID < mMaterialNum) {
mMaterials[matID].setAnimation(anmSRTKey);
}
}
}
}
@@ -769,7 +769,7 @@ void J2DScreen::setAnimation(J2DAnmTexPattern* anmPattern) {
u16 matID = anmPattern->getUpdateMaterialID(i);
if (matID < mMaterialNum) {
mMaterials[matID].setAnimation(anmPattern);
}
}
}
}
@@ -783,7 +783,7 @@ void J2DScreen::setAnimation(J2DAnmTevRegKey* anmRegKey) {
u16 matID = anmRegKey->getCRegUpdateMaterialID(i);
if (matID < mMaterialNum) {
mMaterials[matID].setAnimation(anmRegKey);
}
}
}
u16 kMatNum = anmRegKey->getKRegUpdateMaterialNum();
@@ -791,7 +791,7 @@ void J2DScreen::setAnimation(J2DAnmTevRegKey* anmRegKey) {
u16 matID = anmRegKey->getKRegUpdateMaterialID(i);
if (matID < mMaterialNum) {
mMaterials[matID].setAnimation(anmRegKey);
}
}
}
}
@@ -810,7 +810,7 @@ void J2DScreen::setAnimation(J2DAnmVisibilityFull* anmVisibility) {
/* 802F99E8-802F9A18 2F4328 0030+00 1/0 0/0 0/0 .text
* createPane__9J2DScreenFRC18J2DScrnBlockHeaderP20JSURandomInputStreamP7J2DPaneUl */
J2DPane* J2DScreen::createPane(J2DScrnBlockHeader const& header, JSURandomInputStream* stream,
J2DPane* basePane, u32 param_3) {
J2DPane* basePane, u32 param_3) {
return createPane(header, stream, basePane, param_3, NULL);
}
@@ -11,18 +11,18 @@
// Forward References:
//
extern "C" void fseek();
extern "C" static void _fseek();
extern "C" void ftell();
void fseek();
static void _fseek();
void ftell();
//
// External References:
//
extern "C" void __flush_buffer();
extern "C" void __end_critical_region();
extern "C" void __begin_critical_region();
extern "C" extern u8 errno[4 + 4 /* padding */];
void __flush_buffer();
void __end_critical_region();
void __begin_critical_region();
extern u8 errno[4 + 4 /* padding */];
//
// Declarations:
@@ -11,20 +11,20 @@
// Forward References:
//
extern "C" void exit();
extern "C" void abort();
extern "C" extern u8 data_804519A0[8];
void exit();
void abort();
extern u8 data_804519A0[8];
//
// External References:
//
extern "C" void _ExitProcess();
extern "C" void __destroy_global_chain();
extern "C" void __end_critical_region();
extern "C" void __begin_critical_region();
extern "C" void __kill_critical_regions();
extern "C" void raise();
void _ExitProcess();
void __destroy_global_chain();
void __end_critical_region();
void __begin_critical_region();
void __kill_critical_regions();
void raise();
SECTION_DTORS10 extern void* const __destroy_global_chain_reference;
//
@@ -35,18 +35,23 @@ SECTION_DTORS10 extern void* const __destroy_global_chain_reference;
/* 8044D440-8044D540 07A160 0100+00 2/2 0/0 0/0 .bss __atexit_funcs */
static u8 __atexit_funcs[256];
/* 80451990-80451994 000E90 0004+00 2/2 0/0 0/0 .sbss __aborting */
static u8 __aborting[4];
/* ############################################################################################## */
/* 804519A0-804519A8 000EA0 0008+00 0/0 1/1 0/0 .sbss None */
extern u8 data_804519A0[8];
u8 data_804519A0[8];
/* 80451994-80451998 000E94 0004+00 2/2 0/0 0/0 .sbss __atexit_curr_func */
static u8 __atexit_curr_func[4];
/* 8045199C-804519A0 000E9C 0004+00 2/2 0/0 0/0 .sbss __console_exit */
static u8 __console_exit[4];
/* 80451998-8045199C 000E98 0004+00 1/1 1/1 0/0 .sbss __stdio_exit */
extern u8 __stdio_exit[4];
u8 __stdio_exit[4];
/* 8045199C-804519A0 000E9C 0004+00 2/2 0/0 0/0 .sbss __console_exit */
static u8 __console_exit[4];
/* 80451994-80451998 000E94 0004+00 2/2 0/0 0/0 .sbss __atexit_curr_func */
static u8 __atexit_curr_func[4];
/* 80451990-80451994 000E90 0004+00 2/2 0/0 0/0 .sbss __aborting */
static u8 __aborting[4];
/* 803629CC-80362ABC 35D30C 00F0+00 0/0 2/2 0/0 .text exit */
#pragma push
@@ -67,8 +72,3 @@ asm void abort() {
#include "asm/MSL_C/MSL_Common/Src/abort_exit/abort.s"
}
#pragma pop
/* ############################################################################################## */
/* 804519A0-804519A8 000EA0 0008+00 0/0 1/1 0/0 .sbss None */
extern u8 data_804519A0[8];
u8 data_804519A0[8];
@@ -11,20 +11,20 @@
// Forward References:
//
extern "C" void free();
extern "C" void __pool_free();
extern "C" static void deallocate_from_fixed_pools();
extern "C" static void deallocate_from_var_pools();
void free();
void __pool_free();
static void deallocate_from_fixed_pools();
static void deallocate_from_var_pools();
//
// External References:
//
SECTION_INIT void memset();
extern "C" void __sys_free();
extern "C" void __end_critical_region();
extern "C" void __begin_critical_region();
extern "C" extern u8 data_804519A0[8];
void __sys_free();
void __end_critical_region();
void __begin_critical_region();
extern u8 data_804519A0[8];
//
// Declarations:
+181
View File
@@ -0,0 +1,181 @@
//
// Generated By: dol2asm
// Translation Unit: MSL_Common/Src/ansi_files
//
#include "MSL_C/MSL_Common/Src/ansi_files.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Forward References:
//
unsigned int __flush_all();
void __close_all();
//
// External References:
//
void free(FILE*);
void __end_critical_region(int);
void __begin_critical_region(int);
int fflush(FILE*);
void fclose(FILE*);
int __close_console(unsigned int);
int __write_console(int, int, int*, int);
int __read_console(unsigned int, unsigned int, unsigned int*);
//
// Declarations:
//
/* ############################################################################################## */
/* 8044D778-8044D878 07A498 0100+00 1/0 0/0 0/0 .bss stdin_buff */
static u8 stdin_buff[0x100];
/* 8044D678-8044D778 07A398 0100+00 1/0 0/0 0/0 .bss stdout_buff */
static u8 stdout_buff[0x100];
/* 8044D578-8044D678 07A298 0100+00 1/0 0/0 0/0 .bss stderr_buff */
static u8 stderr_buff[0x100];
/* 803D29B0-803D2AF0 -00001 0140+00 3/2 15/15 0/0 .data __files */
SECTION_DATA extern files __files = {
{0,
0,
1,
1,
2,
0,
0,
0,
0,
0,
0,
0,
0,
0,
{0, 0},
{0, 0},
0,
stdin_buff,
0x00000100,
stdin_buff,
0,
0,
0,
0,
NULL,
__read_console,
__write_console,
__close_console,
NULL,
&__files.stdout},
{1,
0,
2,
1,
2,
0,
0,
0,
0,
0,
0,
0,
0,
0,
{0, 0},
{0, 0},
0,
stdout_buff,
0x00000100,
stdout_buff,
0,
0,
0,
0,
NULL,
__read_console,
__write_console,
__close_console,
NULL,
&__files.stderr},
{2,
0,
2,
0,
2,
0,
0,
0,
0,
0,
0,
0,
0,
0,
{0, 0},
{0, 0},
0,
stderr_buff,
0x00000100,
stderr_buff,
0,
0,
0,
0,
NULL,
__read_console,
__write_console,
__close_console,
NULL,
&__files.empty},
{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {0, 0},
{0, 0}, 0, NULL, 0x00000000, NULL, 0, 0, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL},
};
/* 8036300C-8036307C 35D94C 0070+00 0/0 2/2 0/0 .text __flush_all */
unsigned int __flush_all(void) {
unsigned int ret = 0;
FILE* file = &__files.stdin;
while (file) {
if (file->file_mode.file_kind != 0 && fflush(file)) {
ret = -1;
}
file = file->next_file;
}
return ret;
}
/* 8036307C-80363124 35D9BC 00A8+00 0/0 1/1 0/0 .text __close_all */
void __close_all(void) {
FILE* file = &__files.stdin;
FILE* last_file;
__begin_critical_region(2);
while (file != NULL) {
if (file->file_mode.file_kind != CLOSED_FILE) {
fclose(file);
}
last_file = file;
file = file->next_file;
if (last_file->flag) {
free(last_file);
} else {
last_file->file_mode.file_kind = UNAVAILABLE_FILE;
if (file != NULL && file->flag) {
last_file->next_file = NULL;
}
}
}
__end_critical_region(2);
}
-142
View File
@@ -1,142 +0,0 @@
//
// Generated By: dol2asm
// Translation Unit: MSL_Common/Src/ansi_files
//
#include "MSL_C/MSL_Common/Src/ansi_files.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Forward References:
//
extern "C" void __flush_all();
extern "C" void __close_all();
//
// External References:
//
extern "C" void free();
extern "C" void __end_critical_region();
extern "C" void __begin_critical_region();
extern "C" void fflush();
extern "C" void fclose();
extern "C" bool __close_console();
extern "C" void __write_console();
extern "C" void __read_console();
//
// Declarations:
//
/* ############################################################################################## */
/* 8044D578-8044D678 07A298 0100+00 1/0 0/0 0/0 .bss stderr_buff */
extern "C" u8 stderr_buff[256];
/* 8044D678-8044D778 07A398 0100+00 1/0 0/0 0/0 .bss stdout_buff */
extern "C" u8 stdout_buff[256];
/* 8044D778-8044D878 07A498 0100+00 1/0 0/0 0/0 .bss stdin_buff */
extern "C" u8 stdin_buff[256];
/* 803D29B0-803D2AF0 -00001 0140+00 3/2 15/15 0/0 .data __files */
SECTION_DATA extern files __files = {{0,
0x0A800000,
0,
0,
0,
0,
{0, 0},
{0, 0},
0,
stdin_buff,
0x00000100,
stdin_buff,
0,
0,
0,
0,
NULL,
__read_console,
__write_console,
__close_console,
NULL,
&__files.stdout},
{1,
0x12800000,
0,
0,
0,
0,
{0, 0},
{0, 0},
0,
stdout_buff,
0x00000100,
stdout_buff,
0,
0,
0,
0,
NULL,
__read_console,
__write_console,
__close_console,
NULL,
&__files.stderr},
{2,
0x10800000,
0,
0,
0,
0,
{0, 0},
{0, 0},
0,
stderr_buff,
0x00000100,
stderr_buff,
0,
0,
0,
0,
NULL,
__read_console,
__write_console,
__close_console,
NULL,
&__files.empty},
{0, 0x00000000, 0, 0, 0, 0, {0, 0}, {0, 0},
0, NULL, 0x00000000, NULL, 0, 0, 0, 0,
NULL, NULL, NULL, NULL, NULL, NULL}};
/* 8044D578-8044D678 07A298 0100+00 1/0 0/0 0/0 .bss stderr_buff */
static u8 stderr_buff[256];
/* 8044D678-8044D778 07A398 0100+00 1/0 0/0 0/0 .bss stdout_buff */
static u8 stdout_buff[256];
/* 8044D778-8044D878 07A498 0100+00 1/0 0/0 0/0 .bss stdin_buff */
static u8 stdin_buff[256];
/* 8036300C-8036307C 35D94C 0070+00 0/0 2/2 0/0 .text __flush_all */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void __flush_all() {
nofralloc
#include "asm/MSL_C/MSL_Common/Src/ansi_files/__flush_all.s"
}
#pragma pop
/* 8036307C-80363124 35D9BC 00A8+00 0/0 1/1 0/0 .text __close_all */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void __close_all() {
nofralloc
#include "asm/MSL_C/MSL_Common/Src/ansi_files/__close_all.s"
}
#pragma pop
@@ -11,8 +11,8 @@
// Forward References:
//
extern "C" void div();
extern "C" void abs();
void div();
void abs();
//
// External References:
@@ -11,8 +11,8 @@
// Forward References:
//
extern "C" void __flush_buffer();
extern "C" void __prep_buffer();
void __flush_buffer();
void __prep_buffer();
//
// External References:
@@ -11,19 +11,19 @@
// Forward References:
//
extern "C" void __put_char();
void __put_char();
//
// External References:
//
extern "C" void __flush_buffer();
extern "C" void __prep_buffer();
extern "C" void __end_critical_region();
extern "C" void __begin_critical_region();
extern "C" void fseek();
extern "C" void __stdio_atexit();
extern "C" void fwide();
void __flush_buffer();
void __prep_buffer();
void __end_critical_region();
void __begin_critical_region();
void fseek();
void __stdio_atexit();
void fwide();
//
// Declarations:
@@ -11,7 +11,7 @@
// Forward References:
//
extern "C" extern u8 __upper_map[256];
extern unsigned char __upper_map[256];
//
// External References:
@@ -23,7 +23,7 @@ extern "C" extern u8 __upper_map[256];
/* ############################################################################################## */
/* 803D2C18-803D2D18 02FD38 0100+00 0/0 3/3 0/0 .data __ctype_map */
SECTION_DATA extern u8 __ctype_map[256] = {
SECTION_DATA extern unsigned char __ctype_map[256] = {
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01,
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
@@ -43,7 +43,7 @@ SECTION_DATA extern u8 __ctype_map[256] = {
};
/* 803D2D18-803D2E18 02FE38 0100+00 1/1 3/3 0/0 .data __lower_map */
SECTION_DATA extern u8 __lower_map[256] = {
SECTION_DATA extern unsigned char __lower_map[256] = {
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F,
0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F,
@@ -63,18 +63,19 @@ SECTION_DATA extern u8 __lower_map[256] = {
};
/* 80365470-80365494 35FDB0 0024+00 0/0 4/4 0/0 .text tolower */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm int tolower(int) {
nofralloc
#include "asm/MSL_C/MSL_Common/Src/ctype/tolower.s"
int tolower(int __c) {
{
if (__c == -1) {
return 0xffffffff;
}
return (unsigned int)__lower_map[__c & 0xff];
}
}
#pragma pop
/* ############################################################################################## */
/* 803D2E18-803D2F18 02FF38 0100+00 0/0 1/1 0/0 .data __upper_map */
SECTION_DATA extern u8 __upper_map[256] = {
SECTION_DATA extern unsigned char __upper_map[256] = {
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F,
0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F,
@@ -11,22 +11,22 @@
// Forward References:
//
extern "C" void __fwrite();
extern "C" void fwrite();
void __fwrite();
void fwrite();
//
// External References:
//
SECTION_INIT void memcpy();
extern "C" void __flush_buffer();
extern "C" void __prep_buffer();
extern "C" void __end_critical_region();
extern "C" void __begin_critical_region();
extern "C" void fseek();
extern "C" void __memrchr();
extern "C" void __stdio_atexit();
extern "C" void fwide();
void __flush_buffer();
void __prep_buffer();
void __end_critical_region();
void __begin_critical_region();
void fseek();
void __memrchr();
void __stdio_atexit();
void fwide();
//
// Declarations:
+10
View File
@@ -0,0 +1,10 @@
//
// Generated By: dol2asm
// Translation Unit: MSL_Common/Src/errno
//
#include "errno.h"
/* ############################################################################################## */
/* 804519A8-804519B0 000EA8 0004+04 0/0 6/6 0/0 .sbss errno */
int errno;
-27
View File
@@ -1,27 +0,0 @@
//
// Generated By: dol2asm
// Translation Unit: MSL_Common/Src/errno
//
#include "MSL_C/MSL_Common/Src/errno.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Forward References:
//
extern "C" extern u8 errno[4 + 4 /* padding */];
//
// External References:
//
//
// Declarations:
//
/* ############################################################################################## */
/* 804519A8-804519B0 000EA8 0004+04 0/0 6/6 0/0 .sbss errno */
extern u8 errno[4 + 4 /* padding */];
u8 errno[4 + 4 /* padding */];
@@ -11,15 +11,15 @@
// Forward References:
//
extern "C" void strnicmp();
extern "C" void stricmp();
void strnicmp();
void stricmp();
//
// External References:
//
extern "C" void __msl_strnicmp();
extern "C" extern u8 __lower_map[256];
void __msl_strnicmp();
extern u8 __lower_map[256];
//
// Declarations:
@@ -11,19 +11,19 @@
// Forward References:
//
extern "C" void __msl_strnicmp();
extern "C" void fflush();
extern "C" void fclose();
void __msl_strnicmp();
void fflush();
void fclose();
//
// External References:
//
extern "C" void free();
extern "C" void __flush_all();
extern "C" void __flush_buffer();
extern "C" void ftell();
extern "C" extern u8 __lower_map[256];
void free();
void __flush_all();
void __flush_buffer();
void ftell();
extern u8 __lower_map[256];
//
// Declarations:
@@ -11,11 +11,11 @@
// Forward References:
//
extern "C" extern u32 __float_nan;
extern "C" extern u32 __float_huge;
extern "C" extern u32 __float_max;
extern "C" extern u32 __float_epsilon;
extern "C" extern f32 data_80450AF0;
extern u32 __float_nan;
extern u32 __float_huge;
extern u32 __float_max;
extern u32 __float_epsilon;
extern f32 data_80450AF0;
//
// External References:
@@ -11,13 +11,13 @@
// Forward References:
//
extern "C" void wcstombs();
void wcstombs();
//
// External References:
//
extern "C" void strncpy();
void strncpy();
//
// Declarations:
+124
View File
@@ -0,0 +1,124 @@
//
// Generated By: dol2asm
// Translation Unit: MSL_Common/Src/mem
//
#include "MSL_C/MSL_Common/Src/mem.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Forward References:
//
unsigned char* __memrchr(unsigned char*, unsigned char, size_t);
void* memchr(unsigned char*, int, size_t);
void* memmove(void* dst, const void* src, size_t len);
//
// External References:
//
void __copy_longs_rev_unaligned(void* dst, const void* src, size_t len);
void __copy_longs_unaligned(void* dst, const void* src, size_t len);
void __copy_longs_rev_aligned(void* dst, const void* src, size_t len);
void __copy_longs_aligned(void* dst, const void* src, size_t len);
//
// Declarations:
//
/* 8036608C-803660D8 3609CC 004C+00 0/0 19/19 5/5 .text memcmp */
int memcmp(const void* __s1, const void* __s2, size_t __n) {
const unsigned char* val1 = ((const unsigned char*)__s1 - 1);
const unsigned char* val2 = ((const unsigned char*)__s2 - 1);
size_t size = __n + 1;
while (--size > 0) {
if (*++val1 != *++val2) {
return val1[0] < val2[0] ? -1 : 1;
}
}
return 0;
}
/* 803660D8-80366104 360A18 002C+00 0/0 1/1 0/0 .text __memrchr */
unsigned char* __memrchr(unsigned char* s, unsigned char c, size_t n) {
int n_count;
size_t char_check;
char_check = (unsigned char)c;
s = &s[n];
n_count = n + 1;
while (--n_count) {
if (*--s == char_check) {
return s;
}
}
return NULL;
}
/* 80366104-80366130 360A44 002C+00 0/0 1/1 0/0 .text memchr */
void* memchr(unsigned char* s, int c, size_t n) {
int n_count;
size_t char_check;
char_check = (unsigned char)c;
s = &s[-1];
n_count = n + 1;
while (--n_count) {
if (*++s == char_check) {
return s;
}
}
return NULL;
}
/* 80366130-803661FC 360A70 00CC+00 0/0 2/2 0/0 .text memmove */
void* memmove(void* dst, const void* src, size_t len) {
unsigned char* csrc;
unsigned char* cdst;
int reverse = (unsigned int)src < (unsigned int)dst;
if (len >= 32) {
if (((unsigned int)dst ^ (unsigned int)src) & 3) {
if (!reverse) {
__copy_longs_unaligned(dst, src, len);
} else {
__copy_longs_rev_unaligned(dst, src, len);
}
} else {
if (!reverse) {
__copy_longs_aligned(dst, src, len);
} else {
__copy_longs_rev_aligned(dst, src, len);
}
}
return dst;
} else {
if (!reverse) {
csrc = ((unsigned char*)src) - 1;
cdst = ((unsigned char*)dst) - 1;
len++;
while (--len > 0) {
*++cdst = *++csrc;
}
} else {
csrc = (unsigned char*)src + len;
cdst = (unsigned char*)dst + len;
len++;
while (--len > 0) {
*--cdst = *--csrc;
}
}
}
return dst;
}
-69
View File
@@ -1,69 +0,0 @@
//
// Generated By: dol2asm
// Translation Unit: MSL_Common/Src/mem
//
#include "MSL_C/MSL_Common/Src/mem.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Forward References:
//
extern "C" void __memrchr();
extern "C" void memchr();
extern "C" void memmove();
//
// External References:
//
extern "C" void __copy_longs_rev_unaligned();
extern "C" void __copy_longs_unaligned();
extern "C" void __copy_longs_rev_aligned();
extern "C" void __copy_longs_aligned();
//
// Declarations:
//
/* 8036608C-803660D8 3609CC 004C+00 0/0 19/19 5/5 .text memcmp */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm int memcmp(const void*, const void*, size_t) {
nofralloc
#include "asm/MSL_C/MSL_Common/Src/mem/memcmp.s"
}
#pragma pop
/* 803660D8-80366104 360A18 002C+00 0/0 1/1 0/0 .text __memrchr */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void __memrchr() {
nofralloc
#include "asm/MSL_C/MSL_Common/Src/mem/__memrchr.s"
}
#pragma pop
/* 80366104-80366130 360A44 002C+00 0/0 1/1 0/0 .text memchr */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void memchr() {
nofralloc
#include "asm/MSL_C/MSL_Common/Src/mem/memchr.s"
}
#pragma pop
/* 80366130-803661FC 360A70 00CC+00 0/0 2/2 0/0 .text memmove */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void memmove() {
nofralloc
#include "asm/MSL_C/MSL_Common/Src/mem/memmove.s"
}
#pragma pop
@@ -11,10 +11,10 @@
// Forward References:
//
extern "C" void __copy_longs_rev_unaligned();
extern "C" void __copy_longs_unaligned();
extern "C" void __copy_longs_rev_aligned();
extern "C" void __copy_longs_aligned();
void __copy_longs_rev_unaligned();
void __copy_longs_unaligned();
void __copy_longs_rev_aligned();
void __copy_longs_aligned();
//
// External References:
@@ -11,25 +11,20 @@
// Forward References:
//
extern "C" void __stdio_atexit();
void __stdio_atexit();
//
// External References:
//
extern "C" void __close_all();
extern "C" extern u8 __stdio_exit[4];
void __close_all(void);
extern void (*__stdio_exit)(void);
//
// Declarations:
//
/* 803664CC-803664DC 360E0C 0010+00 0/0 2/2 0/0 .text __stdio_atexit */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void __stdio_atexit() {
nofralloc
#include "asm/MSL_C/MSL_Common/Src/misc_io/__stdio_atexit.s"
void __stdio_atexit() {
__stdio_exit = __close_all;
}
#pragma pop
@@ -12,37 +12,37 @@
// Forward References:
//
extern "C" void fprintf();
extern "C" void __StringWrite();
extern "C" void __FileWrite();
extern "C" void __pformatter();
extern "C" static void float2str();
extern "C" static void round_decimal();
extern "C" static void double2hex();
extern "C" static void longlong2str();
extern "C" static void long2str();
extern "C" static void parse_format();
extern "C" extern char const* const MSL_Common_Src_printf__stringBase0;
void fprintf();
void __StringWrite();
void __FileWrite();
void __pformatter();
static void float2str();
static void round_decimal();
static void double2hex();
static void longlong2str();
static void long2str();
static void parse_format();
extern char const* const MSL_Common_Src_printf__stringBase0;
//
// External References:
//
SECTION_INIT void memcpy();
extern "C" void __div2u();
extern "C" void __mod2u();
extern "C" void __num2dec();
extern "C" void __end_critical_region();
extern "C" void __begin_critical_region();
extern "C" void fwrite();
extern "C" void wcstombs();
extern "C" void memchr();
extern "C" void strchr();
extern "C" void strcpy();
extern "C" void strlen();
extern "C" void fwide();
extern "C" extern void* __files[80];
extern "C" extern u8 __ctype_map[256];
void __div2u();
void __mod2u();
void __num2dec();
void __end_critical_region();
void __begin_critical_region();
void fwrite();
void wcstombs();
void memchr();
void strchr();
void strcpy();
void strlen();
void fwide();
extern void* __files[80];
extern u8 __ctype_map[256];
//
// Declarations:
@@ -11,7 +11,7 @@
// Forward References:
//
extern "C" void __StringRead();
void __StringRead();
//
// External References:
@@ -11,15 +11,15 @@
// Forward References:
//
extern "C" void raise();
void raise();
//
// External References:
//
extern "C" void exit();
extern "C" void __end_critical_region();
extern "C" void __begin_critical_region();
void exit();
void __end_critical_region();
void __begin_critical_region();
//
// Declarations:
+257
View File
@@ -0,0 +1,257 @@
//
// Generated By: dol2asm
// Translation Unit: MSL_Common/Src/string
//
#include "MSL_C/MSL_Common/Src/string.h"
#include "dol2asm.h"
#include "dolphin/types.h"
#define K1 0x80808080
#define K2 0xFEFEFEFF
//
// Declarations:
//
/* 803688DC-80368924 36321C 0048+00 0/0 1/1 0/0 .text strrchr */
char* strrchr(const char* str, int chr) {
const u8* p = (u8*)str - 1;
const u8* q = NULL;
u32 c = (chr & 0xFF);
u32 ch;
while (ch = *++p) {
if (ch == c) {
q = p;
}
}
if (q != NULL) {
return (char*)q;
}
return c ? NULL : (char*)p;
}
/* 80368924-80368954 363264 0030+00 0/0 3/3 0/0 .text strchr */
char* strchr(const char* str, int chr) {
const u8* p = (u8*)str - 1;
u32 c = (chr & 0xFF);
u32 ch;
while (ch = *++p) {
if (ch == c) {
return (char*)p;
}
}
return c ? NULL : (char*)p;
}
/* 80368954-80368994 363294 0040+00 0/0 6/6 0/0 .text strncmp */
int strncmp(const char* strA, const char* strB, u32 n) {
const u8* p1 = (u8*)strA - 1;
const u8* p2 = (u8*)strB - 1;
u32 c1, c2;
n++;
while (--n) {
if ((c1 = *++p1) != (c2 = *++p2)) {
return c1 - c2;
} else if (c1 == 0) {
break;
}
}
return 0;
}
/* 80368994-80368ABC 3632D4 0128+00 0/0 155/155 279/279 .text strcmp */
int strcmp(const char* strA, const char* strB) {
register u8* left = (u8*)strA;
register u8* right = (u8*)strB;
u32 align, l1, r1, x;
l1 = *left;
r1 = *right;
if (l1 - r1) {
return l1 - r1;
}
if ((align = ((int)left & 3)) != ((int)right & 3)) {
goto bytecopy;
}
if (align) {
if (l1 == 0) {
return 0;
}
for (align = 3 - align; align; align--) {
l1 = *(++left);
r1 = *(++right);
if (l1 - r1) {
return l1 - r1;
}
if (l1 == 0) {
return 0;
}
}
left++;
right++;
}
l1 = *(int*)left;
r1 = *(int*)right;
x = l1 + K2;
if (x & K1) {
goto adjust;
}
while (l1 == r1) {
l1 = *(++((int*)(left)));
r1 = *(++((int*)(right)));
x = l1 + K2;
if (x & K1) {
goto adjust;
}
}
if (l1 > r1) {
return 1;
}
return -1;
adjust:
l1 = *left;
r1 = *right;
if (l1 - r1) {
return l1 - r1;
}
bytecopy:
if (l1 == 0) {
return 0;
}
do {
l1 = *(++left);
r1 = *(++right);
if (l1 - r1) {
return l1 - r1;
}
if (l1 == 0) {
return 0;
}
} while (1);
}
/* 80368ABC-80368AE8 3633FC 002C+00 0/0 20/20 8/8 .text strcat */
char* strcat(char* dst, const char* src) {
const u8* p = (u8*)src - 1;
u8* q = (u8*)dst - 1;
while (*++q) {
}
q--;
while (*++q = *++p) {
}
return dst;
}
/* 80368AE8-80368B2C 363428 0044+00 0/0 9/9 1/1 .text strncpy */
char* strncpy(char* dst, const char* src, size_t n) {
const u8* p = (const u8*)src - 1;
u8* q = (u8*)dst - 1;
n++;
while (--n) {
if (!(*++q = *++p)) {
while (--n) {
*++q = 0;
}
break;
}
}
return dst;
}
/* 80368B2C-80368BE4 36346C 00B8+00 0/0 131/131 13/13 .text strcpy */
char* strcpy(char* dst, const char* src) {
register u8 *destb, *fromb;
register u32 w, t, align;
fromb = (u8*)src;
destb = (u8*)dst;
if ((align = ((int)fromb & 3)) != ((int)destb & 3)) {
goto bytecopy;
}
if (align) {
if ((*destb = *fromb) == 0) {
return dst;
}
for (align = 3 - align; align; align--) {
if ((*(++destb) = *(++fromb)) == 0) {
return dst;
}
}
++destb;
++fromb;
}
w = *((int*)(fromb));
t = w + K2;
t &= K1;
if (t) {
goto bytecopy;
}
--((int*)(destb));
do {
*(++((int*)(destb))) = w;
w = *(++((int*)(fromb)));
t = w + K2;
t &= K1;
if (t) {
goto adjust;
}
} while (1);
adjust:
++((int*)(destb));
bytecopy:
if ((*destb = *fromb) == 0) {
return dst;
}
do {
if ((*(++destb) = *(++fromb)) == 0) {
return dst;
}
} while (1);
return dst;
}
/* 80368BE4-80368C00 363524 001C+00 0/0 28/28 8/8 .text strlen */
u32 strlen(const char* str) {
size_t len = -1;
u8* p = (u8*)str - 1;
do {
len++;
} while (*++p);
return len;
}
-98
View File
@@ -1,98 +0,0 @@
//
// Generated By: dol2asm
// Translation Unit: MSL_Common/Src/string
//
#include "MSL_C/MSL_Common/Src/string.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// External References:
//
extern "C" void _epilog();
//
// Declarations:
//
/* 803688DC-80368924 36321C 0048+00 0/0 1/1 0/0 .text strrchr */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm char* strrchr(const char*, int) {
nofralloc
#include "asm/MSL_C/MSL_Common/Src/string/strrchr.s"
}
#pragma pop
/* 80368924-80368954 363264 0030+00 0/0 3/3 0/0 .text strchr */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm char* strchr(const char*, int) {
nofralloc
#include "asm/MSL_C/MSL_Common/Src/string/strchr.s"
}
#pragma pop
/* 80368954-80368994 363294 0040+00 0/0 6/6 0/0 .text strncmp */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm int strncmp(const char*, const char*, u32) {
nofralloc
#include "asm/MSL_C/MSL_Common/Src/string/strncmp.s"
}
#pragma pop
/* 80368994-80368ABC 3632D4 0128+00 0/0 155/155 279/279 .text strcmp */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm int strcmp(const char*, const char*) {
nofralloc
#include "asm/MSL_C/MSL_Common/Src/string/strcmp.s"
}
#pragma pop
/* 80368ABC-80368AE8 3633FC 002C+00 0/0 20/20 8/8 .text strcat */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm char* strcat(char*, const char*) {
nofralloc
#include "asm/MSL_C/MSL_Common/Src/string/strcat.s"
}
#pragma pop
/* 80368AE8-80368B2C 363428 0044+00 0/0 9/9 1/1 .text strncpy */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm char* strncpy(char*, const char*, u32) {
nofralloc
#include "asm/MSL_C/MSL_Common/Src/string/strncpy.s"
}
#pragma pop
/* 80368B2C-80368BE4 36346C 00B8+00 0/0 131/131 13/13 .text strcpy */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm char* strcpy(char*, const char*) {
nofralloc
#include "asm/MSL_C/MSL_Common/Src/string/strcpy.s"
}
#pragma pop
/* 80368BE4-80368C00 363524 001C+00 0/0 28/28 8/8 .text strlen */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm u32 strlen(const char*) {
nofralloc
#include "asm/MSL_C/MSL_Common/Src/string/strlen.s"
}
#pragma pop
@@ -11,18 +11,18 @@
// Forward References:
//
extern "C" void strtol();
extern "C" void strtoul();
extern "C" void __strtoul();
void strtol();
void strtoul();
void __strtoul();
//
// External References:
//
extern "C" void __StringRead();
extern "C" extern u8 __ctype_map[256];
extern "C" extern u8 __upper_map[256];
extern "C" extern u8 errno[4 + 4 /* padding */];
void __StringRead();
extern u8 __ctype_map[256];
extern u8 __upper_map[256];
extern u8 errno[4 + 4 /* padding */];
//
// Declarations:
+44
View File
@@ -0,0 +1,44 @@
//
// Generated By: dol2asm
// Translation Unit: MSL_Common/Src/wchar_io
//
#include "MSL_C/MSL_Common/Src/wchar_io.h"
#include "MSL_C/MSL_Common/Src/ansi_files.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Forward References:
//
int fwide(FILE* file, int mode);
//
// External References:
//
//
// Declarations:
//
/* 80369114-8036919C 363A54 0088+00 0/0 5/5 0/0 .text fwide */
int fwide(FILE* file, int mode) {
if (file == NULL || file->file_mode.file_kind == CLOSED_FILE) {
return 0;
}
switch (file->file_mode.file_orientation) {
case UNORIENTED:
if (mode > 0) {
file->file_mode.file_orientation = WIDE_ORIENTED;
} else if (mode < 0) {
file->file_mode.file_orientation = CHAR_ORIENTED;
}
return mode;
case WIDE_ORIENTED:
return 1;
case CHAR_ORIENTED:
return -1;
}
}
-32
View File
@@ -1,32 +0,0 @@
//
// Generated By: dol2asm
// Translation Unit: MSL_Common/Src/wchar_io
//
#include "MSL_C/MSL_Common/Src/wchar_io.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Forward References:
//
extern "C" void fwide();
//
// External References:
//
//
// Declarations:
//
/* 80369114-8036919C 363A54 0088+00 0/0 5/5 0/0 .text fwide */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void fwide() {
nofralloc
#include "asm/MSL_C/MSL_Common/Src/wchar_io/fwide.s"
}
#pragma pop
@@ -11,22 +11,22 @@
// Forward References:
//
extern "C" void __num2dec();
extern "C" void __num2dec_internal();
extern "C" void __two_exp();
extern "C" void __timesdec();
extern "C" extern char const* const MSL_Common_Embedded_Src_ansi_fp__stringBase0;
void __num2dec();
void __num2dec_internal();
void __two_exp();
void __timesdec();
extern char const* const MSL_Common_Embedded_Src_ansi_fp__stringBase0;
//
// External References:
//
extern "C" void __div2u();
extern "C" void __mod2u();
extern "C" void __cvt_dbl_usll();
extern "C" void frexp();
extern "C" void ldexp();
extern "C" void modf();
void __div2u();
void __mod2u();
void __cvt_dbl_usll();
void frexp();
void ldexp();
void modf();
//
// Declarations:
+61 -59
View File
@@ -3,62 +3,62 @@
#
LIBMSL_C_PPCEABI_BARE_H_A_CPP_FILES := \
libs/MSL_C/MSL_Common/Src/abort_exit.cpp \
libs/MSL_C/MSL_Common/Src/alloc.cpp \
libs/MSL_C/MSL_Common/Src/errno.cpp \
libs/MSL_C/MSL_Common/Src/ansi_files.cpp \
libs/MSL_C/MSL_Common_Embedded/Src/ansi_fp.cpp \
libs/MSL_C/MSL_Common/Src/arith.cpp \
libs/MSL_C/MSL_Common/Src/buffer_io.cpp \
libs/MSL_C/MSL_Common/Src/char_io.cpp \
libs/MSL_C/PPC_EABI/Src/critical_regions.gamecube.cpp \
libs/MSL_C/MSL_Common/Src/ctype.cpp \
libs/MSL_C/MSL_Common/Src/direct_io.cpp \
libs/MSL_C/MSL_Common/Src/file_io.cpp \
libs/MSL_C/MSL_Common/Src/FILE_POS.cpp \
libs/MSL_C/MSL_Common/Src/mbstring.cpp \
libs/MSL_C/MSL_Common/Src/mem.cpp \
libs/MSL_C/MSL_Common/Src/mem_funcs.cpp \
libs/MSL_C/MSL_Common/Src/misc_io.cpp \
libs/MSL_C/MSL_Common/Src/printf.cpp \
libs/MSL_C/MSL_Common/Src/scanf.cpp \
libs/MSL_C/MSL_Common/Src/float.cpp \
libs/MSL_C/MSL_Common/Src/signal.cpp \
libs/MSL_C/MSL_Common/Src/string.cpp \
libs/MSL_C/MSL_Common/Src/strtoul.cpp \
libs/MSL_C/MSL_Common/Src/wchar_io.cpp \
libs/MSL_C/PPC_EABI/Src/uart_console_io_gcn.cpp \
libs/MSL_C/Math/Double_precision/e_acos.cpp \
libs/MSL_C/Math/Double_precision/e_asin.cpp \
libs/MSL_C/Math/Double_precision/e_atan2.cpp \
libs/MSL_C/Math/Double_precision/e_exp.cpp \
libs/MSL_C/Math/Double_precision/e_fmod.cpp \
libs/MSL_C/Math/Double_precision/e_pow.cpp \
libs/MSL_C/Math/Double_precision/e_rem_pio2.cpp \
libs/MSL_C/Math/Double_precision/k_cos.cpp \
libs/MSL_C/Math/Double_precision/k_rem_pio2.cpp \
libs/MSL_C/Math/Double_precision/k_sin.cpp \
libs/MSL_C/Math/Double_precision/k_tan.cpp \
libs/MSL_C/Math/Double_precision/s_atan.cpp \
libs/MSL_C/Math/Double_precision/s_ceil.cpp \
libs/MSL_C/Math/Double_precision/s_copysign.cpp \
libs/MSL_C/Math/Double_precision/s_cos.cpp \
libs/MSL_C/Math/Double_precision/s_floor.cpp \
libs/MSL_C/Math/Double_precision/s_frexp.cpp \
libs/MSL_C/Math/Double_precision/s_ldexp.cpp \
libs/MSL_C/Math/Double_precision/s_modf.cpp \
libs/MSL_C/Math/Double_precision/s_sin.cpp \
libs/MSL_C/Math/Double_precision/s_tan.cpp \
libs/MSL_C/Math/Double_precision/w_acos.cpp \
libs/MSL_C/Math/Double_precision/w_asin.cpp \
libs/MSL_C/Math/Double_precision/w_atan2.cpp \
libs/MSL_C/Math/Double_precision/w_exp.cpp \
libs/MSL_C/Math/Double_precision/w_fmod.cpp \
libs/MSL_C/Math/Double_precision/w_pow.cpp \
libs/MSL_C/Math/Double_precision/e_sqrt.cpp \
libs/MSL_C/PPC_EABI/Src/math_ppc.cpp \
libs/MSL_C/Math/Double_precision/w_sqrt.cpp \
libs/MSL_C/MSL_Common/Src/extras.cpp \
libs/MSL_C/MSL_Common/Src/abort_exit.c \
libs/MSL_C/MSL_Common/Src/alloc.c \
libs/MSL_C/MSL_Common/Src/errno.c \
libs/MSL_C/MSL_Common/Src/ansi_files.c \
libs/MSL_C/MSL_Common_Embedded/Src/ansi_fp.c \
libs/MSL_C/MSL_Common/Src/arith.c \
libs/MSL_C/MSL_Common/Src/buffer_io.c \
libs/MSL_C/MSL_Common/Src/char_io.c \
libs/MSL_C/PPC_EABI/Src/critical_regions.gamecube.c \
libs/MSL_C/MSL_Common/Src/ctype.c \
libs/MSL_C/MSL_Common/Src/direct_io.c \
libs/MSL_C/MSL_Common/Src/file_io.c \
libs/MSL_C/MSL_Common/Src/FILE_POS.c \
libs/MSL_C/MSL_Common/Src/mbstring.c \
libs/MSL_C/MSL_Common/Src/mem.c \
libs/MSL_C/MSL_Common/Src/mem_funcs.c \
libs/MSL_C/MSL_Common/Src/misc_io.c \
libs/MSL_C/MSL_Common/Src/printf.c \
libs/MSL_C/MSL_Common/Src/scanf.c \
libs/MSL_C/MSL_Common/Src/float.c \
libs/MSL_C/MSL_Common/Src/signal.c \
libs/MSL_C/MSL_Common/Src/string.c \
libs/MSL_C/MSL_Common/Src/strtoul.c \
libs/MSL_C/MSL_Common/Src/wchar_io.c \
libs/MSL_C/PPC_EABI/Src/uart_console_io_gcn.c \
libs/MSL_C/Math/Double_precision/e_acos.c \
libs/MSL_C/Math/Double_precision/e_asin.c \
libs/MSL_C/Math/Double_precision/e_atan2.c \
libs/MSL_C/Math/Double_precision/e_exp.c \
libs/MSL_C/Math/Double_precision/e_fmod.c \
libs/MSL_C/Math/Double_precision/e_pow.c \
libs/MSL_C/Math/Double_precision/e_rem_pio2.c \
libs/MSL_C/Math/Double_precision/k_cos.c \
libs/MSL_C/Math/Double_precision/k_rem_pio2.c \
libs/MSL_C/Math/Double_precision/k_sin.c \
libs/MSL_C/Math/Double_precision/k_tan.c \
libs/MSL_C/Math/Double_precision/s_atan.c \
libs/MSL_C/Math/Double_precision/s_ceil.c \
libs/MSL_C/Math/Double_precision/s_copysign.c \
libs/MSL_C/Math/Double_precision/s_cos.c \
libs/MSL_C/Math/Double_precision/s_floor.c \
libs/MSL_C/Math/Double_precision/s_frexp.c \
libs/MSL_C/Math/Double_precision/s_ldexp.c \
libs/MSL_C/Math/Double_precision/s_modf.c \
libs/MSL_C/Math/Double_precision/s_sin.c \
libs/MSL_C/Math/Double_precision/s_tan.c \
libs/MSL_C/Math/Double_precision/w_acos.c \
libs/MSL_C/Math/Double_precision/w_asin.c \
libs/MSL_C/Math/Double_precision/w_atan2.c \
libs/MSL_C/Math/Double_precision/w_exp.c \
libs/MSL_C/Math/Double_precision/w_fmod.c \
libs/MSL_C/Math/Double_precision/w_pow.c \
libs/MSL_C/Math/Double_precision/e_sqrt.c \
libs/MSL_C/PPC_EABI/Src/math_ppc.c \
libs/MSL_C/Math/Double_precision/w_sqrt.c \
libs/MSL_C/MSL_Common/Src/extras.c \
LIBMSL_C_PPCEABI_BARE_H_A_O_FILES := \
$(BUILD_DIR)/libs/MSL_C/MSL_Common/Src/abort_exit.o \
@@ -119,6 +119,8 @@ LIBMSL_C_PPCEABI_BARE_H_A_O_FILES := \
$(BUILD_DIR)/libs/MSL_C/MSL_Common/Src/extras.o \
LIBMSL_C_PPCEABI_BARE_H_A_CFLAGS := \
-O4,p \
-lang=c \
LIBMSL_C_PPCEABI_BARE_H_A_LDFLAGS := \
-nodefaults \
@@ -131,9 +133,9 @@ $(BUILD_DIR)/libMSL_C.a: $(LIBMSL_C_PPCEABI_BARE_H_A_O_FILES)
@echo $(LIBMSL_C_PPCEABI_BARE_H_A_O_FILES) > build/LIBMSL_C_PPCEABI_BARE_H_A_ofiles
@$(LD) -xm l $(LIBMSL_C_PPCEABI_BARE_H_A_LDFLAGS) -o $(BUILD_DIR)/libMSL_C.a @build/LIBMSL_C_PPCEABI_BARE_H_A_ofiles
$(BUILD_DIR)/libs/MSL_C/%.o: libs/MSL_C/%.cpp
$(BUILD_DIR)/libs/MSL_C/%.o: libs/MSL_C/%.c
@mkdir -p $(@D)
@echo building... $<
@$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).cpp
@$(CC) $(CFLAGS) $(LIBMSL_C_PPCEABI_BARE_H_A_CFLAGS) -c -o $@ $(basename $@).cpp
@$(ICONV) -f UTF-8 -t CP932 < $< > $(basename $@).c
@$(CC) $(CFLAGS) $(LIBMSL_C_PPCEABI_BARE_H_A_CFLAGS) -c -o $@ $(basename $@).c
@@ -11,14 +11,14 @@
// Forward References:
//
extern "C" void __ieee754_acos();
void __ieee754_acos();
//
// External References:
//
extern "C" void sqrt();
extern "C" extern u32 __float_nan;
void sqrt();
extern u32 __float_nan;
//
// Declarations:
@@ -11,14 +11,14 @@
// Forward References:
//
extern "C" void __ieee754_asin();
void __ieee754_asin();
//
// External References:
//
extern "C" void sqrt();
extern "C" extern u32 __float_nan;
void sqrt();
extern u32 __float_nan;
//
// Declarations:
@@ -11,13 +11,13 @@
// Forward References:
//
extern "C" void __ieee754_atan2();
void __ieee754_atan2();
//
// External References:
//
extern "C" void atan();
void atan();
//
// Declarations:
@@ -11,7 +11,7 @@
// Forward References:
//
extern "C" void __ieee754_exp();
void __ieee754_exp();
//
// External References:
+167
View File
@@ -0,0 +1,167 @@
/* @(#)e_fmod.c 1.3 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*/
/*
* __ieee754_fmod(x,y)
* Return x mod y in exact arithmetic
* Method: shift and subtract
*/
#include "fdlibm.h"
#ifdef __STDC__
static const double one = 1.0, Zero[] = {
0.0,
-0.0,
};
#else
static double one = 1.0, Zero[] = {
0.0,
-0.0,
};
#endif
#ifdef __STDC__
double __ieee754_fmod(double x, double y)
#else
double __ieee754_fmod(x, y) double x, y;
#endif
{
int n, hx, hy, hz, ix, iy, sx, i;
unsigned lx, ly, lz;
hx = __HI(x); /* high word of x */
lx = __LO(x); /* low word of x */
hy = __HI(y); /* high word of y */
ly = __LO(y); /* low word of y */
sx = hx & 0x80000000; /* sign of x */
hx ^= sx; /* |x| */
hy &= 0x7fffffff; /* |y| */
/* purge off exception values */
if ((hy | ly) == 0 || (hx >= 0x7ff00000) || /* y=0,or x not finite */
((hy | ((ly | -ly) >> 31)) > 0x7ff00000)) /* or y is NaN */
return (x * y) / (x * y);
if (hx <= hy) {
if ((hx < hy) || (lx < ly))
return x; /* |x|<|y| return x */
if (lx == ly)
return Zero[(unsigned)sx >> 31]; /* |x|=|y| return x*0*/
}
/* determine ix = ilogb(x) */
if (hx < 0x00100000) { /* subnormal x */
if (hx == 0) {
for (ix = -1043, i = lx; i > 0; i <<= 1)
ix -= 1;
} else {
for (ix = -1022, i = (hx << 11); i > 0; i <<= 1)
ix -= 1;
}
} else
ix = (hx >> 20) - 1023;
/* determine iy = ilogb(y) */
if (hy < 0x00100000) { /* subnormal y */
if (hy == 0) {
for (iy = -1043, i = ly; i > 0; i <<= 1)
iy -= 1;
} else {
for (iy = -1022, i = (hy << 11); i > 0; i <<= 1)
iy -= 1;
}
} else
iy = (hy >> 20) - 1023;
/* set up {hx,lx}, {hy,ly} and align y to x */
if (ix >= -1022)
hx = 0x00100000 | (0x000fffff & hx);
else { /* subnormal x, shift x to normal */
n = -1022 - ix;
if (n <= 31) {
hx = (hx << n) | (lx >> (32 - n));
lx <<= n;
} else {
hx = lx << (n - 32);
lx = 0;
}
}
if (iy >= -1022)
hy = 0x00100000 | (0x000fffff & hy);
else { /* subnormal y, shift y to normal */
n = -1022 - iy;
if (n <= 31) {
hy = (hy << n) | (ly >> (32 - n));
ly <<= n;
} else {
hy = ly << (n - 32);
ly = 0;
}
}
/* fix point fmod */
n = ix - iy;
while (n--) {
hz = hx - hy;
lz = lx - ly;
if (lx < ly)
hz -= 1;
if (hz < 0) {
hx = hx + hx + (lx >> 31);
lx = lx + lx;
} else {
if ((hz | lz) == 0) /* return sign(x)*0 */
return Zero[(unsigned)sx >> 31];
hx = hz + hz + (lz >> 31);
lx = lz + lz;
}
}
hz = hx - hy;
lz = lx - ly;
if (lx < ly)
hz -= 1;
if (hz >= 0) {
hx = hz;
lx = lz;
}
/* convert back to floating value and restore the sign */
if ((hx | lx) == 0) /* return sign(x)*0 */
return Zero[(unsigned)sx >> 31];
while (hx < 0x00100000) { /* normalize x */
hx = hx + hx + (lx >> 31);
lx = lx + lx;
iy -= 1;
}
if (iy >= -1022) { /* normalize output */
hx = ((hx - 0x00100000) | ((iy + 1023) << 20));
__HI(x) = hx | sx;
__LO(x) = lx;
} else { /* subnormal output */
n = -1022 - iy;
if (n <= 20) {
lx = (lx >> n) | ((unsigned)hx << (32 - n));
hx >>= n;
} else if (n <= 31) {
lx = (hx << (32 - n)) | (lx >> n);
hx = sx;
} else {
lx = hx >> (n - 32);
hx = sx;
}
__HI(x) = hx | sx;
__LO(x) = lx;
x *= one; /* create necessary signal */
}
return x; /* exact output */
}
@@ -1,39 +0,0 @@
//
// Generated By: dol2asm
// Translation Unit: Math/Double_precision/e_fmod
//
#include "MSL_C/Math/Double_precision/e_fmod.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Forward References:
//
extern "C" void __ieee754_fmod();
//
// External References:
//
//
// Declarations:
//
/* ############################################################################################## */
/* 803A2370-803A2380 02E9D0 0010+00 1/1 0/0 0/0 .rodata Zero */
SECTION_RODATA static u8 const Zero[16] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x803A2370, &Zero);
/* 80369B9C-80369ED8 3644DC 033C+00 0/0 1/1 0/0 .text __ieee754_fmod */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void __ieee754_fmod() {
nofralloc
#include "asm/MSL_C/Math/Double_precision/e_fmod/__ieee754_fmod.s"
}
#pragma pop
@@ -11,16 +11,16 @@
// Forward References:
//
extern "C" void __ieee754_pow();
void __ieee754_pow();
//
// External References:
//
extern "C" void ldexp();
extern "C" void sqrt();
extern "C" extern u32 __float_nan;
extern "C" extern u8 errno[4 + 4 /* padding */];
void ldexp();
void sqrt();
extern u32 __float_nan;
extern u8 errno[4 + 4 /* padding */];
//
// Declarations:
@@ -11,13 +11,13 @@
// Forward References:
//
extern "C" void __ieee754_rem_pio2();
void __ieee754_rem_pio2();
//
// External References:
//
extern "C" void __kernel_rem_pio2();
void __kernel_rem_pio2();
//
// Declarations:
@@ -11,14 +11,14 @@
// Forward References:
//
extern "C" void __ieee754_sqrt();
void __ieee754_sqrt();
//
// External References:
//
extern "C" extern u32 __float_nan;
extern "C" extern u8 errno[4 + 4 /* padding */];
extern u32 __float_nan;
extern u8 errno[4 + 4 /* padding */];
//
// Declarations:
@@ -11,7 +11,7 @@
// Forward References:
//
extern "C" void __kernel_cos();
void __kernel_cos();
//
// External References:
@@ -11,16 +11,16 @@
// Forward References:
//
extern "C" void __kernel_rem_pio2();
void __kernel_rem_pio2();
//
// External References:
//
extern "C" void _savefpr_25();
extern "C" void _restfpr_25();
extern "C" void floor();
extern "C" void ldexp();
void _savefpr_25();
void _restfpr_25();
void floor();
void ldexp();
//
// Declarations:
@@ -11,7 +11,7 @@
// Forward References:
//
extern "C" void __kernel_sin();
void __kernel_sin();
//
// External References:
@@ -11,7 +11,7 @@
// Forward References:
//
extern "C" void __kernel_tan();
void __kernel_tan();
//
// External References:
@@ -11,7 +11,7 @@
// Forward References:
//
extern "C" void atan();
void atan();
//
// External References:
+90
View File
@@ -0,0 +1,90 @@
/* @(#)s_ceil.c 1.3 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*/
/*
* ceil(x)
* Return x rounded toward -inf to integral value
* Method:
* Bit twiddling.
* Exception:
* Inexact flag raised if x not equal to ceil(x).
*/
#include "fdlibm.h"
#ifdef __STDC__
static const double huge = 1.0e300;
#else
static double huge = 1.0e300;
#endif
#ifdef __STDC__
double ceil(double x)
#else
double ceil(x) double x;
#endif
{
int i0, i1, j0;
unsigned i, j;
i0 = __HI(x);
i1 = __LO(x);
j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
if (j0 < 20) {
if (j0 < 0) { /* raise inexact if x != 0 */
if (huge + x > 0.0) { /* return 0*sign(x) if |x|<1 */
if (i0 < 0) {
i0 = 0x80000000;
i1 = 0;
} else if ((i0 | i1) != 0) {
i0 = 0x3ff00000;
i1 = 0;
}
}
} else {
i = (0x000fffff) >> j0;
if (((i0 & i) | i1) == 0)
return x; /* x is integral */
if (huge + x > 0.0) { /* raise inexact flag */
if (i0 > 0)
i0 += (0x00100000) >> j0;
i0 &= (~i);
i1 = 0;
}
}
} else if (j0 > 51) {
if (j0 == 0x400)
return x + x; /* inf or NaN */
else
return x; /* x is integral */
} else {
i = ((unsigned)(0xffffffff)) >> (j0 - 20);
if ((i1 & i) == 0)
return x; /* x is integral */
if (huge + x > 0.0) { /* raise inexact flag */
if (i0 > 0) {
if (j0 == 20)
i0 += 1;
else {
j = i1 + (1 << (52 - j0));
if (j < i1)
i0 += 1; /* got a carry */
i1 = j;
}
}
i1 &= (~i);
}
}
__HI(x) = i0;
__LO(x) = i1;
return x;
}
@@ -1,41 +0,0 @@
//
// Generated By: dol2asm
// Translation Unit: Math/Double_precision/s_ceil
//
#include "MSL_C/Math/Double_precision/s_ceil.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Forward References:
//
extern "C" void ceil();
//
// External References:
//
//
// Declarations:
//
/* ############################################################################################## */
/* 80456AE0-80456AE8 0050E0 0008+00 1/1 0/0 0/0 .sdata2 @124 */
SECTION_SDATA2 static f64 lit_124 = 1e+300;
/* 80456AE8-80456AF0 0050E8 0008+00 1/1 0/0 0/0 .sdata2 @125 */
SECTION_SDATA2 static u8 lit_125[8] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
/* 8036BEBC-8036C000 3667FC 0144+00 0/0 2/2 0/0 .text ceil */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void ceil() {
nofralloc
#include "asm/MSL_C/Math/Double_precision/s_ceil/ceil.s"
}
#pragma pop
@@ -0,0 +1,30 @@
/* @(#)s_copysign.c 1.3 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*/
/*
* copysign(double x, double y)
* copysign(x,y) returns a value with the magnitude of x and
* with the sign bit of y.
*/
#include "fdlibm.h"
#ifdef __STDC__
double copysign(double x, double y)
#else
double copysign(x, y) double x, y;
#endif
{
__HI(x) = (__HI(x) & 0x7fffffff) | (__HI(y) & 0x80000000);
return x;
}
@@ -1,32 +0,0 @@
//
// Generated By: dol2asm
// Translation Unit: Math/Double_precision/s_copysign
//
#include "MSL_C/Math/Double_precision/s_copysign.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Forward References:
//
extern "C" void copysign();
//
// External References:
//
//
// Declarations:
//
/* 8036C000-8036C028 366940 0028+00 0/0 1/1 0/0 .text copysign */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void copysign() {
nofralloc
#include "asm/MSL_C/Math/Double_precision/s_copysign/copysign.s"
}
#pragma pop
+81
View File
@@ -0,0 +1,81 @@
/* @(#)s_cos.c 1.3 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*/
/* cos(x)
* Return cosine function of x.
*
* kernel function:
* __kernel_sin ... sine function on [-pi/4,pi/4]
* __kernel_cos ... cosine function on [-pi/4,pi/4]
* __ieee754_rem_pio2 ... argument reduction routine
*
* Method.
* Let S,C and T denote the sin, cos and tan respectively on
* [-PI/4, +PI/4]. Reduce the argument x to y1+y2 = x-k*pi/2
* in [-pi/4 , +pi/4], and let n = k mod 4.
* We have
*
* n sin(x) cos(x) tan(x)
* ----------------------------------------------------------
* 0 S C T
* 1 C -S -1/T
* 2 -S -C T
* 3 -C S -1/T
* ----------------------------------------------------------
*
* Special cases:
* Let trig be any of sin, cos, or tan.
* trig(+-INF) is NaN, with signals;
* trig(NaN) is that NaN;
*
* Accuracy:
* TRIG(x) returns trig(x) nearly rounded
*/
#include "fdlibm.h"
#ifdef __STDC__
double cos(double x)
#else
double cos(x) double x;
#endif
{
double y[2], z = 0.0;
int n, ix;
/* High word of x. */
ix = __HI(x);
/* |x| ~< pi/4 */
ix &= 0x7fffffff;
if (ix <= 0x3fe921fb)
return __kernel_cos(x, z);
/* cos(Inf or NaN) is NaN */
else if (ix >= 0x7ff00000)
return x - x;
/* argument reduction needed */
else {
n = __ieee754_rem_pio2(x, y);
switch (n & 3) {
case 0:
return __kernel_cos(y[0], y[1]);
case 1:
return -__kernel_sin(y[0], y[1], 1);
case 2:
return -__kernel_cos(y[0], y[1]);
default:
return __kernel_sin(y[0], y[1], 1);
}
}
}
@@ -1,42 +0,0 @@
//
// Generated By: dol2asm
// Translation Unit: Math/Double_precision/s_cos
//
#include "MSL_C/Math/Double_precision/s_cos.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Forward References:
//
extern "C" void cos();
//
// External References:
//
extern "C" void __ieee754_rem_pio2();
extern "C" void __kernel_cos();
extern "C" void __kernel_sin();
//
// Declarations:
//
/* ############################################################################################## */
/* 80456AF0-80456AF8 0050F0 0008+00 1/1 0/0 0/0 .sdata2 @67 */
SECTION_SDATA2 static u8 lit_67[8] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
/* 8036C028-8036C0FC 366968 00D4+00 0/0 12/12 0/0 .text cos */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void cos() {
nofralloc
#include "asm/MSL_C/Math/Double_precision/s_cos/cos.s"
}
#pragma pop
@@ -0,0 +1,89 @@
/* @(#)s_floor.c 1.3 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*/
/*
* floor(x)
* Return x rounded toward -inf to integral value
* Method:
* Bit twiddling.
* Exception:
* Inexact flag raised if x not equal to floor(x).
*/
#include "fdlibm.h"
#ifdef __STDC__
static const double huge = 1.0e300;
#else
static double huge = 1.0e300;
#endif
#ifdef __STDC__
double floor(double x)
#else
double floor(x) double x;
#endif
{
int i0, i1, j0;
unsigned i, j;
i0 = __HI(x);
i1 = __LO(x);
j0 = ((i0 >> 20) & 0x7ff) - 0x3ff;
if (j0 < 20) {
if (j0 < 0) { /* raise inexact if x != 0 */
if (huge + x > 0.0) { /* return 0*sign(x) if |x|<1 */
if (i0 >= 0) {
i0 = i1 = 0;
} else if (((i0 & 0x7fffffff) | i1) != 0) {
i0 = 0xbff00000;
i1 = 0;
}
}
} else {
i = (0x000fffff) >> j0;
if (((i0 & i) | i1) == 0)
return x; /* x is integral */
if (huge + x > 0.0) { /* raise inexact flag */
if (i0 < 0)
i0 += (0x00100000) >> j0;
i0 &= (~i);
i1 = 0;
}
}
} else if (j0 > 51) {
if (j0 == 0x400)
return x + x; /* inf or NaN */
else
return x; /* x is integral */
} else {
i = ((unsigned)(0xffffffff)) >> (j0 - 20);
if ((i1 & i) == 0)
return x; /* x is integral */
if (huge + x > 0.0) { /* raise inexact flag */
if (i0 < 0) {
if (j0 == 20)
i0 += 1;
else {
j = i1 + (1 << (52 - j0));
if (j < i1)
i0 += 1; /* got a carry */
i1 = j;
}
}
i1 &= (~i);
}
}
__HI(x) = i0;
__LO(x) = i1;
return x;
}
@@ -1,41 +0,0 @@
//
// Generated By: dol2asm
// Translation Unit: Math/Double_precision/s_floor
//
#include "MSL_C/Math/Double_precision/s_floor.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Forward References:
//
extern "C" void floor();
//
// External References:
//
//
// Declarations:
//
/* ############################################################################################## */
/* 80456AF8-80456B00 0050F8 0008+00 1/1 0/0 0/0 .sdata2 @124 */
SECTION_SDATA2 static f64 lit_124 = 1e+300;
/* 80456B00-80456B08 005100 0008+00 1/1 0/0 0/0 .sdata2 @125 */
SECTION_SDATA2 static u8 lit_125[8] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
/* 8036C0FC-8036C244 366A3C 0148+00 0/0 5/5 0/0 .text floor */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void floor() {
nofralloc
#include "asm/MSL_C/Math/Double_precision/s_floor/floor.s"
}
#pragma pop
@@ -0,0 +1,57 @@
/* @(#)s_frexp.c 1.4 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*/
/*
* for non-zero x
* x = frexp(arg,&exp);
* return a double fp quantity x such that 0.5 <= |x| <1.0
* and the corresponding binary exponent "exp". That is
* arg = x*2^exp.
* If arg is inf, 0.0, or NaN, then frexp(arg,&exp) returns arg
* with *exp=0.
*/
#include "fdlibm.h"
#ifdef __STDC__
static const double
#else
static double
#endif
two54 = 1.80143985094819840000e+16; /* 0x43500000, 0x00000000 */
#ifdef __STDC__
double frexp(double x, int* eptr)
#else
double frexp(x, eptr) double x;
int* eptr;
#endif
{
int hx, ix, lx;
hx = __HI(x);
ix = 0x7fffffff & hx;
lx = __LO(x);
*eptr = 0;
if (ix >= 0x7ff00000 || ((ix | lx) == 0))
return x; /* 0,inf,nan */
if (ix < 0x00100000) { /* subnormal */
x *= two54;
hx = __HI(x);
ix = hx & 0x7fffffff;
*eptr = -54;
}
*eptr += (ix >> 20) - 1022;
hx = (hx & 0x800fffff) | 0x3fe00000;
__HI(x) = hx;
return x;
}
@@ -1,36 +0,0 @@
//
// Generated By: dol2asm
// Translation Unit: Math/Double_precision/s_frexp
//
#include "MSL_C/Math/Double_precision/s_frexp.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Forward References:
//
extern "C" void frexp();
//
// External References:
//
//
// Declarations:
//
/* ############################################################################################## */
/* 80456B08-80456B10 005108 0008+00 1/1 0/0 0/0 .sdata2 @57 */
SECTION_SDATA2 static f64 lit_57 = 1.8014398509481984e+16;
/* 8036C244-8036C2D0 366B84 008C+00 0/0 1/1 0/0 .text frexp */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void frexp() {
nofralloc
#include "asm/MSL_C/Math/Double_precision/s_frexp/frexp.s"
}
#pragma pop
@@ -11,13 +11,13 @@
// Forward References:
//
extern "C" void ldexp();
void ldexp();
//
// External References:
//
extern "C" void copysign();
void copysign();
//
// Declarations:
+79
View File
@@ -0,0 +1,79 @@
/* @(#)s_modf.c 1.3 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*/
/*
* modf(double x, double *iptr)
* return fraction part of x, and return x's integral part in *iptr.
* Method:
* Bit twiddling.
*
* Exception:
* No exception.
*/
#include "fdlibm.h"
#ifdef __STDC__
static const double one = 1.0;
#else
static double one = 1.0;
#endif
#ifdef __STDC__
double modf(double x, double* iptr)
#else
double modf(x, iptr) double x, *iptr;
#endif
{
int i0, i1, j0;
unsigned i;
i0 = __HI(x); /* high x */
i1 = __LO(x); /* low x */
j0 = ((i0 >> 20) & 0x7ff) - 0x3ff; /* exponent of x */
if (j0 < 20) { /* integer part in high x */
if (j0 < 0) { /* |x|<1 */
__HIp(iptr) = i0 & 0x80000000;
__LOp(iptr) = 0; /* *iptr = +-0 */
return x;
} else {
i = (0x000fffff) >> j0;
if (((i0 & i) | i1) == 0) { /* x is integral */
*iptr = x;
__HI(x) &= 0x80000000;
__LO(x) = 0; /* return +-0 */
return x;
} else {
__HIp(iptr) = i0 & (~i);
__LOp(iptr) = 0;
return x - *iptr;
}
}
} else if (j0 > 51) { /* no fraction part */
*iptr = x * one;
__HI(x) &= 0x80000000;
__LO(x) = 0; /* return +-0 */
return x;
} else { /* fraction part in low x */
i = ((unsigned)(0xffffffff)) >> (j0 - 20);
if ((i1 & i) == 0) { /* x is integral */
*iptr = x;
__HI(x) &= 0x80000000;
__LO(x) = 0; /* return +-0 */
return x;
} else {
__HIp(iptr) = i0;
__LOp(iptr) = i1 & (~i);
return x - *iptr;
}
}
}
@@ -1,32 +0,0 @@
//
// Generated By: dol2asm
// Translation Unit: Math/Double_precision/s_modf
//
#include "MSL_C/Math/Double_precision/s_modf.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Forward References:
//
extern "C" void modf();
//
// External References:
//
//
// Declarations:
//
/* 8036C494-8036C590 366DD4 00FC+00 0/0 1/1 0/0 .text modf */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void modf() {
nofralloc
#include "asm/MSL_C/Math/Double_precision/s_modf/modf.s"
}
#pragma pop
+82
View File
@@ -0,0 +1,82 @@
/* @(#)s_sin.c 1.3 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*/
/* sin(x)
* Return sine function of x.
*
* kernel function:
* __kernel_sin ... sine function on [-pi/4,pi/4]
* __kernel_cos ... cose function on [-pi/4,pi/4]
* __ieee754_rem_pio2 ... argument reduction routine
*
* Method.
* Let S,C and T denote the sin, cos and tan respectively on
* [-PI/4, +PI/4]. Reduce the argument x to y1+y2 = x-k*pi/2
* in [-pi/4 , +pi/4], and let n = k mod 4.
* We have
*
* n sin(x) cos(x) tan(x)
* ----------------------------------------------------------
* 0 S C T
* 1 C -S -1/T
* 2 -S -C T
* 3 -C S -1/T
* ----------------------------------------------------------
*
* Special cases:
* Let trig be any of sin, cos, or tan.
* trig(+-INF) is NaN, with signals;
* trig(NaN) is that NaN;
*
* Accuracy:
* TRIG(x) returns trig(x) nearly rounded
*/
#include "fdlibm.h"
#ifdef __STDC__
double sin(double x)
#else
double sin(x) double x;
#endif
{
double y[2], z = 0.0;
int n, ix;
/* High word of x. */
ix = __HI(x);
/* |x| ~< pi/4 */
ix &= 0x7fffffff;
if (ix <= 0x3fe921fb)
return __kernel_sin(x, z, 0);
/* sin(Inf or NaN) is NaN */
else if (ix >= 0x7ff00000)
return x - x;
/* argument reduction needed */
else {
n = __ieee754_rem_pio2(x, y);
switch (n & 3) {
case 0:
return __kernel_sin(y[0], y[1], 1);
case 1:
return __kernel_cos(y[0], y[1]);
case 2:
return -__kernel_sin(y[0], y[1], 1);
default:
return -__kernel_cos(y[0], y[1]);
}
}
}
@@ -1,42 +0,0 @@
//
// Generated By: dol2asm
// Translation Unit: Math/Double_precision/s_sin
//
#include "MSL_C/Math/Double_precision/s_sin.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Forward References:
//
extern "C" void sin();
//
// External References:
//
extern "C" void __ieee754_rem_pio2();
extern "C" void __kernel_cos();
extern "C" void __kernel_sin();
//
// Declarations:
//
/* ############################################################################################## */
/* 80456B38-80456B40 005138 0008+00 1/1 0/0 0/0 .sdata2 @67 */
SECTION_SDATA2 static u8 lit_67[8] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
/* 8036C590-8036C668 366ED0 00D8+00 0/0 11/11 2/2 .text sin */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void sin() {
nofralloc
#include "asm/MSL_C/Math/Double_precision/s_sin/sin.s"
}
#pragma pop
+73
View File
@@ -0,0 +1,73 @@
/* @(#)s_tan.c 1.3 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*/
/* tan(x)
* Return tangent function of x.
*
* kernel function:
* __kernel_tan ... tangent function on [-pi/4,pi/4]
* __ieee754_rem_pio2 ... argument reduction routine
*
* Method.
* Let S,C and T denote the sin, cos and tan respectively on
* [-PI/4, +PI/4]. Reduce the argument x to y1+y2 = x-k*pi/2
* in [-pi/4 , +pi/4], and let n = k mod 4.
* We have
*
* n sin(x) cos(x) tan(x)
* ----------------------------------------------------------
* 0 S C T
* 1 C -S -1/T
* 2 -S -C T
* 3 -C S -1/T
* ----------------------------------------------------------
*
* Special cases:
* Let trig be any of sin, cos, or tan.
* trig(+-INF) is NaN, with signals;
* trig(NaN) is that NaN;
*
* Accuracy:
* TRIG(x) returns trig(x) nearly rounded
*/
#include "fdlibm.h"
#ifdef __STDC__
double tan(double x)
#else
double tan(x) double x;
#endif
{
double y[2], z = 0.0;
int n, ix;
/* High word of x. */
ix = __HI(x);
/* |x| ~< pi/4 */
ix &= 0x7fffffff;
if (ix <= 0x3fe921fb)
return __kernel_tan(x, z, 1);
/* tan(Inf or NaN) is NaN */
else if (ix >= 0x7ff00000)
return x - x; /* NaN */
/* argument reduction needed */
else {
n = __ieee754_rem_pio2(x, y);
return __kernel_tan(y[0], y[1], 1 - ((n & 1) << 1)); /* 1 -- n even
-1 -- n odd */
}
}
@@ -1,41 +0,0 @@
//
// Generated By: dol2asm
// Translation Unit: Math/Double_precision/s_tan
//
#include "MSL_C/Math/Double_precision/s_tan.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Forward References:
//
extern "C" void tan();
//
// External References:
//
extern "C" void __ieee754_rem_pio2();
extern "C" void __kernel_tan();
//
// Declarations:
//
/* ############################################################################################## */
/* 80456B40-80456B48 005140 0008+00 1/1 0/0 0/0 .sdata2 @58 */
SECTION_SDATA2 static u8 lit_58[8] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
/* 8036C668-8036C6E0 366FA8 0078+00 0/0 7/7 4/4 .text tan */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void tan() {
nofralloc
#include "asm/MSL_C/Math/Double_precision/s_tan/tan.s"
}
#pragma pop
@@ -0,0 +1,6 @@
#include "fdlibm.h"
/* 8036C6E0-8036C700 367020 0020+00 0/0 2/2 3/3 .text acos */
double acos(double x) {
return __ieee754_acos(x);
}
@@ -1,34 +0,0 @@
//
// Generated By: dol2asm
// Translation Unit: Math/Double_precision/w_acos
//
#include "MSL_C/Math/Double_precision/w_acos.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Forward References:
//
extern "C" void acos();
//
// External References:
//
extern "C" void __ieee754_acos();
//
// Declarations:
//
/* 8036C6E0-8036C700 367020 0020+00 0/0 2/2 3/3 .text acos */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void acos() {
nofralloc
#include "asm/MSL_C/Math/Double_precision/w_acos/acos.s"
}
#pragma pop
@@ -0,0 +1,6 @@
#include "fdlibm.h"
/* 8036C700-8036C720 367040 0020+00 0/0 2/2 0/0 .text asin */
double asin(double x) {
return __ieee754_asin(x);
}
@@ -1,34 +0,0 @@
//
// Generated By: dol2asm
// Translation Unit: Math/Double_precision/w_asin
//
#include "MSL_C/Math/Double_precision/w_asin.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Forward References:
//
extern "C" void asin();
//
// External References:
//
extern "C" void __ieee754_asin();
//
// Declarations:
//
/* 8036C700-8036C720 367040 0020+00 0/0 2/2 0/0 .text asin */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void asin() {
nofralloc
#include "asm/MSL_C/Math/Double_precision/w_asin/asin.s"
}
#pragma pop
@@ -0,0 +1,6 @@
#include "fdlibm.h"
/* 8036C720-8036C740 367060 0020+00 0/0 6/6 0/0 .text atan2 */
double atan2(double x, double y) {
return __ieee754_atan2(x, y);
}
@@ -1,34 +0,0 @@
//
// Generated By: dol2asm
// Translation Unit: Math/Double_precision/w_atan2
//
#include "MSL_C/Math/Double_precision/w_atan2.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Forward References:
//
extern "C" void atan2();
//
// External References:
//
extern "C" void __ieee754_atan2();
//
// Declarations:
//
/* 8036C720-8036C740 367060 0020+00 0/0 6/6 0/0 .text atan2 */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void atan2() {
nofralloc
#include "asm/MSL_C/Math/Double_precision/w_atan2/atan2.s"
}
#pragma pop
+6
View File
@@ -0,0 +1,6 @@
#include "fdlibm.h"
/* 8036C740-8036C760 367080 0020+00 0/0 1/1 0/0 .text exp */
double exp(double x) {
return __ieee754_exp(x);
}
@@ -1,34 +0,0 @@
//
// Generated By: dol2asm
// Translation Unit: Math/Double_precision/w_exp
//
#include "MSL_C/Math/Double_precision/w_exp.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Forward References:
//
extern "C" void exp();
//
// External References:
//
extern "C" void __ieee754_exp();
//
// Declarations:
//
/* 8036C740-8036C760 367080 0020+00 0/0 1/1 0/0 .text exp */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void exp() {
nofralloc
#include "asm/MSL_C/Math/Double_precision/w_exp/exp.s"
}
#pragma pop
@@ -0,0 +1,6 @@
#include "fdlibm.h"
/* 8036C760-8036C780 3670A0 0020+00 0/0 8/8 0/0 .text fmod */
double fmod(double x, double y) {
return __ieee754_fmod(x, y);
}
@@ -1,34 +0,0 @@
//
// Generated By: dol2asm
// Translation Unit: Math/Double_precision/w_fmod
//
#include "MSL_C/Math/Double_precision/w_fmod.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Forward References:
//
extern "C" void fmod();
//
// External References:
//
extern "C" void __ieee754_fmod();
//
// Declarations:
//
/* 8036C760-8036C780 3670A0 0020+00 0/0 8/8 0/0 .text fmod */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void fmod() {
nofralloc
#include "asm/MSL_C/Math/Double_precision/w_fmod/fmod.s"
}
#pragma pop
+6
View File
@@ -0,0 +1,6 @@
#include "fdlibm.h"
/* 8036C780-8036C7A0 3670C0 0020+00 0/0 3/3 24/24 .text pow */
double pow(double x, double y) {
return __ieee754_pow(x, y);
}
@@ -1,34 +0,0 @@
//
// Generated By: dol2asm
// Translation Unit: Math/Double_precision/w_pow
//
#include "MSL_C/Math/Double_precision/w_pow.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Forward References:
//
extern "C" void pow();
//
// External References:
//
extern "C" void __ieee754_pow();
//
// Declarations:
//
/* 8036C780-8036C7A0 3670C0 0020+00 0/0 3/3 24/24 .text pow */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void pow() {
nofralloc
#include "asm/MSL_C/Math/Double_precision/w_pow/pow.s"
}
#pragma pop
@@ -0,0 +1,6 @@
#include "fdlibm.h"
/* 8036CA54-8036CA74 367394 0020+00 0/0 8/8 1/1 .text sqrt */
double sqrt(double x) {
return __ieee754_sqrt(x);
}
@@ -1,34 +0,0 @@
//
// Generated By: dol2asm
// Translation Unit: Math/Double_precision/w_sqrt
//
#include "MSL_C/Math/Double_precision/w_sqrt.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Forward References:
//
extern "C" void sqrt();
//
// External References:
//
extern "C" void __ieee754_sqrt();
//
// Declarations:
//
/* 8036CA54-8036CA74 367394 0020+00 0/0 8/8 1/1 .text sqrt */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void sqrt() {
nofralloc
#include "asm/MSL_C/Math/Double_precision/w_sqrt/sqrt.s"
}
#pragma pop
@@ -11,9 +11,9 @@
// Forward References:
//
extern "C" void __end_critical_region();
extern "C" void __begin_critical_region();
extern "C" void __kill_critical_regions();
void __end_critical_region();
void __begin_critical_region();
void __kill_critical_regions();
//
// External References:
+42
View File
@@ -0,0 +1,42 @@
//
// Generated By: dol2asm
// Translation Unit: PPC_EABI/Src/math_ppc
//
#include "MSL_C/PPC_EABI/Src/math_ppc.h"
#include "dol2asm.h"
#include "dolphin/types.h"
#include "fdlibm.h"
//
// Forward References:
//
float tanf(float);
float sinf(float);
float cosf(float);
float acosf(float);
//
// Declarations:
//
/* 8036C9C4-8036C9E8 367304 0024+00 0/0 2/2 0/0 .text tanf */
float tanf(float x) {
return tan(x);
}
/* 8036C9E8-8036CA0C 367328 0024+00 0/0 4/4 0/0 .text sinf */
float sinf(float x) {
return sin(x);
}
/* 8036CA0C-8036CA30 36734C 0024+00 0/0 4/4 0/0 .text cosf */
float cosf(float x) {
return cos(x);
}
/* 8036CA30-8036CA54 367370 0024+00 0/0 1/1 0/0 .text acosf */
float acosf(float x) {
return acos(x);
}
-70
View File
@@ -1,70 +0,0 @@
//
// Generated By: dol2asm
// Translation Unit: PPC_EABI/Src/math_ppc
//
#include "MSL_C/PPC_EABI/Src/math_ppc.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Forward References:
//
extern "C" void tanf();
extern "C" void sinf();
extern "C" void cosf();
extern "C" void acosf();
//
// External References:
//
extern "C" void cos();
extern "C" void sin();
extern "C" void tan();
extern "C" void acos();
//
// Declarations:
//
/* 8036C9C4-8036C9E8 367304 0024+00 0/0 2/2 0/0 .text tanf */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void tanf() {
nofralloc
#include "asm/MSL_C/PPC_EABI/Src/math_ppc/tanf.s"
}
#pragma pop
/* 8036C9E8-8036CA0C 367328 0024+00 0/0 4/4 0/0 .text sinf */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void sinf() {
nofralloc
#include "asm/MSL_C/PPC_EABI/Src/math_ppc/sinf.s"
}
#pragma pop
/* 8036CA0C-8036CA30 36734C 0024+00 0/0 4/4 0/0 .text cosf */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void cosf() {
nofralloc
#include "asm/MSL_C/PPC_EABI/Src/math_ppc/cosf.s"
}
#pragma pop
/* 8036CA30-8036CA54 367370 0024+00 0/0 1/1 0/0 .text acosf */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void acosf() {
nofralloc
#include "asm/MSL_C/PPC_EABI/Src/math_ppc/acosf.s"
}
#pragma pop
@@ -0,0 +1,61 @@
//
// Generated By: dol2asm
// Translation Unit: PPC_EABI/Src/uart_console_io_gcn
//
#include "MSL_C/PPC_EABI/Src/uart_console_io_gcn.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Forward References:
//
int __close_console();
int __write_console(s32 arg0, s32 arg1, s32* arg2, s32 arg3);
//
// External References:
//
s32 OSGetConsoleType(void);
s32 InitializeUART(u32);
s32 WriteUARTN(s32, s32);
s32 __TRK_write_console(s32, s32, s32*, s32);
//
// Declarations:
//
/* 8036919C-803691A4 363ADC 0008+00 0/0 1/0 0/0 .text __close_console */
int __close_console() {
return 0;
}
/* 803691A4-80369274 363AE4 00D0+00 0/0 1/0 0/0 .text __write_console */
int __write_console(s32 param_0, s32 param_1, s32* param_2, s32 param_3) {
static int initialized;
if ((OSGetConsoleType() & 0x20000000) == 0) {
int uart_init = 0;
if (initialized == FALSE) {
uart_init = InitializeUART(0xE100);
if (uart_init == 0) {
initialized = 1;
}
}
if (uart_init != 0) {
return 1;
}
if (WriteUARTN(param_1, *param_2) != 0) {
*param_2 = 0;
return 1;
}
}
__TRK_write_console(param_0, param_1, param_2, param_3);
return 0;
}
@@ -1,47 +0,0 @@
//
// Generated By: dol2asm
// Translation Unit: PPC_EABI/Src/uart_console_io_gcn
//
#include "MSL_C/PPC_EABI/Src/uart_console_io_gcn.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Forward References:
//
extern "C" bool __close_console();
extern "C" void __write_console();
//
// External References:
//
extern "C" void OSGetConsoleType();
extern "C" void InitializeUART();
extern "C" void WriteUARTN();
extern "C" void __TRK_write_console();
//
// Declarations:
//
/* 8036919C-803691A4 363ADC 0008+00 0/0 1/0 0/0 .text __close_console */
bool __close_console() {
return false;
}
/* ############################################################################################## */
/* 804519B0-804519B8 000EB0 0004+04 1/1 0/0 0/0 .sbss initialized$60 */
static u8 initialized[4 + 4 /* padding */];
/* 803691A4-80369274 363AE4 00D0+00 0/0 1/0 0/0 .text __write_console */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void __write_console() {
nofralloc
#include "asm/MSL_C/PPC_EABI/Src/uart_console_io_gcn/__write_console.s"
}
#pragma pop