ctr_firmware/trunk/bootrom/include/brom/swi/swi.h
nakasima 89f91e6a66 ヘッダファイル群&スタートアップコード追加。
git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-09-30%20-%20paladin.7z/paladin/ctr_firmware@41 b871894f-2f95-9b40-918c-086798483c85
2008-11-28 09:23:30 +00:00

189 lines
7.0 KiB
C
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*---------------------------------------------------------------------------*
Project: CtrBrom - swi - include
File: swi.h
Copyright 2008 Nintendo. All rights reserved.
These coded instructions, statements, and computer programs contain
proprietary information of Nintendo of America Inc. and/or Nintendo
Company Ltd., and are protected by Federal copyright law. They may
not be disclosed to third parties or copied or duplicated in any form,
in whole or in part, without the prior written consent of Nintendo.
$Log: $
$NoKeywords: $
*---------------------------------------------------------------------------*/
#ifndef BROM_SWI_SWI_H_
#define BROM_SWI_SWI_H_
#include <brom/misc.h>
#include <brom/types.h>
#include <brom/memorymap.h>
#include <ctr/ioreg.h>
#include <brom/os.h>
#if 0
#include <brom/mi/stream.h>
#include <brom/mi/uncompress.h>
#include <firm/os/common/systemCall.h>
#endif
#ifdef __cplusplus
extern "C" {
#endif
void SWI_Halt( void );
void SWI_WaitByLoop( s32 count );
void SWI_WaitIntr( BOOL clear, OSIrqMask mask );
void SWI_WaitVBlankIntr( void );
void SWI_CpuSet( const void* src, void* dest, u32 dmaCntData );
void SWI_CpuSetFast( const void* src, void* dest, u32 dmaCntData );
void SWI_UnPackBits32( const void* src, void* dest, const MIUnpackBitsParam *paramp );
void SWI_UnCompLZ77Byte( const void* src, void* dest );
void SWI_UnCompRLByte( const void* src, void* dest );
s32 SWI_DivS32( s32 number, s32 denom );
u16 SWI_SqrtU32( u32 src );
u16 SWI_GetCRC16( u32 start, const u16 *datap, u32 size );
s32 SWI_UnCompHuffman( const u8 *srcp, u32 *destp, u8 *tableBufp, const MIReadStreamCallbacks *scb );
s32 SWI_UnCompLZ77Short( const u8 *srcp, u16 *destp, const void *paramp, const MIReadStreamCallbacks *scb );
s32 SWI_UnCompRLShort( const u8 *srcp, u16 *destp, const void *paramp, const MIReadStreamCallbacks *scb );
s32 SWI_UnCompLZ77Stream( const u8 *srcp, u8 *destp, const void *paramp, const MIReadStreamCallbacks *scb );
u32 SWI_GetSinTable( s32 index );
u32 SWI_GetPitchTable( s32 index);
u32 SWI_GetVolumeTable( s32 index );
void SWIi_Terminate( void );
#ifdef SDK_ARM9
void SWI_SetPauseReg( u32 w );
void SWI_UnDiffByte2Byte( const void *src, void *dest );
void SWI_UnDiffShort2Short( const void *src, void *dest );
#else // SDK_ARM7
void SWI_Sleep( void );
void SWI_SetPauseHi( u32 dummy0, u32 dummy1, u8 b );
void SWI_SetPauseCheckFlag( void );
void SWI_ChangeSoundBias16( u32 UpDown, u32 stepLoops );
#endif
/*---------------------------------------------------------------------------*
Name: SWI_CpuClear
Description: clear memory by SWI_CpuSet
<20>ECPU<50><55>RAM<41>N<EFBFBD><4E><EFBFBD>A<EFBFBD><41><EFBFBD>܂<EFBFBD><DC82>B
<20>E<EFBFBD>N<EFBFBD><4E><EFBFBD>A<EFBFBD>f<EFBFBD>[<5B>^<5E>̓X<CD83>^<5E>b<EFBFBD>N<EFBFBD>ɒu<C992><75><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>f<EFBFBD>X<EFBFBD>e<EFBFBD>B<EFBFBD>l<EFBFBD>[<5B>V<EFBFBD><56><EFBFBD><EFBFBD><EFBFBD>փR<D683>s<EFBFBD>[<5B><><EFBFBD>܂<EFBFBD><DC82>B
<20>E<EFBFBD><45><EFBFBD><EFBFBD><EFBFBD>F
data <20>N<EFBFBD><4E><EFBFBD>A<EFBFBD>f<EFBFBD>[<5B>^
destp <20>f<EFBFBD>X<EFBFBD>e<EFBFBD>B<EFBFBD>l<EFBFBD>[<5B>V<EFBFBD><56><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD>h<EFBFBD><68><EFBFBD>X
size <20>N<EFBFBD><4E><EFBFBD>A<EFBFBD>o<EFBFBD>C<EFBFBD>g<EFBFBD><67>
bit <20>]<5D><><EFBFBD>r<EFBFBD>b<EFBFBD>g<EFBFBD><67><EFBFBD>i16|32<33>j
Arguments: data : clear data
destp : destination address
size : clear size ( by byte )
bit : bit width ( 16 or 32 )
Returns: None
*---------------------------------------------------------------------------*/
#define SWI_CpuClear( data, destp, size, bit ) \
do{ \
vu##bit tmp = (vu##bit )(data); \
SWI_CpuSet((u8 *)&(tmp), (u8 *)(destp), ( \
MI_DMA_SRC_FIX | \
MI_DMA_##bit##BIT_BUS | ((size)/((bit)/8) & 0x1fffff))); \
} while(0)
/*---------------------------------------------------------------------------*
Name: SWI_CpuCopy
Description: copy memory by SWI_CpuSet
<20>ECPU<50>ŃR<C583>s<EFBFBD>[<5B><><EFBFBD>܂<EFBFBD><DC82>B
<20>E<EFBFBD><45><EFBFBD><EFBFBD><EFBFBD>F
srcp : <20>\<5C>[<5B>X<EFBFBD>A<EFBFBD>h<EFBFBD><68><EFBFBD>X
destp : <20>f<EFBFBD>X<EFBFBD>e<EFBFBD>B<EFBFBD>l<EFBFBD>[<5B>V<EFBFBD><56><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD>h<EFBFBD><68><EFBFBD>X
size : <20>]<5D><><EFBFBD>o<EFBFBD>C<EFBFBD>g<EFBFBD><67>
bit : <20>]<5D><><EFBFBD>r<EFBFBD>b<EFBFBD>g<EFBFBD><67><EFBFBD>i16|32<33>j
Arguments: srcp : source address
destp : destination address
size : size to copy ( by byte )
bit : bit width ( 16 or 32 )
Returns: None
*---------------------------------------------------------------------------*/
#define SWI_CpuCopy( srcp, destp, size, bit ) \
\
SWI_CpuSet((u8 *)(srcp), (u8 *)(destp), ( \
MI_DMA_SRC_INC | \
MI_DMA_##bit##BIT_BUS | ((size)/((bit)/8) & 0x1fffff)))
/*---------------------------------------------------------------------------*
Name: SWI_CpuClearFast
Description: clear memory by SWI_CpuSetFast quickly
<20>ECPU<50>ō<EFBFBD><C58D><EFBFBD><EFBFBD><EFBFBD>RAM<41>N<EFBFBD><4E><EFBFBD>A<EFBFBD><41><EFBFBD><EFBFBD><EFBFBD>V<EFBFBD>X<EFBFBD>e<EFBFBD><65><EFBFBD>R<EFBFBD>[<5B><><EFBFBD><EFBFBD><EFBFBD>Ăяo<D18F><6F><EFBFBD>܂<EFBFBD><DC82>B
<20>E<EFBFBD>N<EFBFBD><4E><EFBFBD>A<EFBFBD>f<EFBFBD>[<5B>^<5E>̓X<CD83>^<5E>b<EFBFBD>N<EFBFBD>ɒu<C992><75><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>f<EFBFBD>X<EFBFBD>e<EFBFBD>B<EFBFBD>l<EFBFBD>[<5B>V<EFBFBD><56><EFBFBD><EFBFBD><EFBFBD>փR<D683>s<EFBFBD>[<5B><><EFBFBD>܂<EFBFBD><DC82>B
<20>E32Byte<74>P<EFBFBD>ʂŃA<C583>N<EFBFBD>Z<EFBFBD>X<EFBFBD>”\<5C>Ȏ<EFBFBD><C88E>ɂ<EFBFBD>32Byte<74>P<EFBFBD>ʂ̕<CA82><CC95><EFBFBD><EFBFBD>X<EFBFBD>g<EFBFBD>A<EFBFBD><41><EFBFBD>߂<EFBFBD><DF82>g<EFBFBD>p<EFBFBD><70><EFBFBD><EFBFBD><EFBFBD>A
<20>[<5B><><EFBFBD><EFBFBD>4Byte<74>P<EFBFBD>ʂŃA<C583>N<EFBFBD>Z<EFBFBD>X<EFBFBD><58><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><DC82>B
<20>E<EFBFBD><45><EFBFBD><EFBFBD><EFBFBD>F
data <20>N<EFBFBD><4E><EFBFBD>A<EFBFBD>f<EFBFBD>[<5B>^
destp <20>f<EFBFBD>X<EFBFBD>e<EFBFBD>B<EFBFBD>l<EFBFBD>[<5B>V<EFBFBD><56><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD>h<EFBFBD><68><EFBFBD>X
size <20>N<EFBFBD><4E><EFBFBD>A<EFBFBD>o<EFBFBD>C<EFBFBD>g<EFBFBD><67>
Arguments: data : clear data
destp : destination address
size : clear size ( by byte )
Returns: None
*---------------------------------------------------------------------------*/
#define SWI_CpuClearFast( data, destp, size ) \
do{ \
vu32 tmp = (vu32 )(data); \
SWI_CpuSetFast((u8 *)&(tmp), (u8 *)(destp), ( \
MI_DMA_SRC_FIX | ((size)/(32/8) & 0x1fffff))); \
} while(0)
/*---------------------------------------------------------------------------*
Name: SWI_CpuCopyFast
Description: clear memory by SWI_CpuSetFast quickly
<20>ECPU<50>ō<EFBFBD><C58D><EFBFBD><EFBFBD>ɃR<C983>s<EFBFBD>[<5B><><EFBFBD>܂<EFBFBD><DC82>B
<20>E32Byte<74>P<EFBFBD>ʂŃA<C583>N<EFBFBD>Z<EFBFBD>X<EFBFBD>”\<5C>Ȏ<EFBFBD><C88E>ɂ͕<C982><CD95><EFBFBD><EFBFBD><EFBFBD><EFBFBD>[<5B>h<EFBFBD>^<5E>X<EFBFBD>g<EFBFBD>A<EFBFBD><41><EFBFBD>߂<EFBFBD><DF82>g<EFBFBD>p<EFBFBD><70><EFBFBD><EFBFBD><EFBFBD>A
<20>[<5B><><EFBFBD><EFBFBD>4Byte<74>P<EFBFBD>ʂŃA<C583>N<EFBFBD>Z<EFBFBD>X<EFBFBD><58><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><DC82>B
<20>E<EFBFBD><45><EFBFBD><EFBFBD><EFBFBD>F
srcp <20>\<5C>[<5B>X<EFBFBD>A<EFBFBD>h<EFBFBD><68><EFBFBD>X
destp <20>f<EFBFBD>X<EFBFBD>e<EFBFBD>B<EFBFBD>l<EFBFBD>[<5B>V<EFBFBD><56><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD>h<EFBFBD><68><EFBFBD>X
size <20>]<5D><><EFBFBD>o<EFBFBD>C<EFBFBD>g<EFBFBD><67>
Arguments: srcp : source address
destp : destination address
size : size to copy ( by byte )
Returns: None
*---------------------------------------------------------------------------*/
#define SWI_CpuCopyFast( srcp, destp, size ) \
\
SWI_CpuSetFast((u8 *)(srcp), (u8 *)(destp), ( \
MI_DMA_SRC_INC | ((size)/(32/8) & 0x1fffff)))
#ifdef __cplusplus
} /* extern "C" */
#endif
/* BROM_SWI_SWI_H_ */
#endif