1 /*---------------------------------------------------------------------------* 2 Project: Horizon 3 File: dsp_Types.h 4 5 Copyright (C)2009 Nintendo Co., Ltd. All rights reserved. 6 7 These coded instructions, statements, and computer programs contain 8 proprietary information of Nintendo of America Inc. and/or Nintendo 9 Company Ltd., and are protected by Federal copyright law. They may 10 not be disclosed to third parties or copied or duplicated in any form, 11 in whole or in part, without the prior written consent of Nintendo. 12 13 $Rev: 25972 $ 14 *---------------------------------------------------------------------------*/ 15 16 #ifndef NN_DSP_CTR_DSP_TYPES_H_ 17 #define NN_DSP_CTR_DSP_TYPES_H_ 18 19 #ifndef CTR_DSP 20 /*---------------------------------------------------------------------------* 21 * includes 22 *---------------------------------------------------------------------------*/ 23 #include <nn/types.h> 24 25 /*---------------------------------------------------------------------------* 26 * namespaces 27 *---------------------------------------------------------------------------*/ 28 namespace nn { 29 namespace dsp { 30 namespace CTR { 31 #else 32 #include <dsp/types.h> 33 #endif // CTR_DSP 34 35 /*---------------------------------------------------------------------------*/ 36 /* declarations */ 37 38 // プロセッサ間通信のデータ共有に使用する型定義。 39 typedef u16 DSPAddr; // DSP内でアドレスを表現する型 (2バイト1ワード) 40 typedef u16 DSPWord; // DSP内でサイズを表現する型 (2バイト1ワード) 41 typedef u16 DSPByte; // DSP内でバイト単位を表現する型 (1バイト1ワード) 42 typedef u32 DSPWord32; // DSP内でサイズを表現する型 (2バイト1ワード) 43 typedef u32 DSPByte32; // DSP内でバイト単位を表現する型 (1バイト1ワード) 44 typedef u32 DSPAddrInARM; // DSP内アドレスをバイト単位に変換した型 45 46 // 明示的な型変換マクロ。 47 #define NN_DSP_ADDR_TO_ARM(address) (u32)((address) << 1) 48 #define NN_DSP_ADDR_TO_DSP(address) (u16)((u32)(address) >> 1) 49 #define NN_DSP_WORD_TO_ARM(word) (u16)((word) << 1) 50 #define NN_DSP_WORD_TO_DSP(word) (u16)((word) >> 1) 51 #define NN_DSP_WORD_TO_ARM32(word) (u32)((word) << 1) 52 #define NN_DSP_WORD_TO_DSP32(word) (u32)((word) >> 1) 53 #define NN_DSP_32BIT_TO_ARM(value) (u32)(((u32)(value) >> 16) | ((u32)(value) << 16)) 54 #define NN_DSP_32BIT_TO_DSP(value) (u32)(((u32)(value) >> 16) | ((u32)(value) << 16)) 55 #ifdef NN_SYSTEM_PROCESS 56 #define NN_DSP_BYTE_TO_UNIT(byte) (u16)(byte) 57 #define NN_DSP_UNIT_TO_BYTE(unit) (u16)(unit) 58 #else 59 #define NN_DSP_BYTE_TO_UNIT(byte) (u16)((byte) >> 1) 60 #define NN_DSP_UNIT_TO_BYTE(unit) (u16)((unit) << 1) 61 #endif // #ifdef NN_SYSTEM_PROCESS 62 63 // ネイティブなsizeof(char)のサイズ。 (DSP側では2, ARM側では1) 64 #define NN_DSP_WORD_UNIT (3 - sizeof(DSPWord)) 65 66 #ifndef CTR_DSP 67 } // namespace CTR { 68 } // namespace dsp { 69 } // namespace nn { 70 #endif // CTR_DSP 71 72 #endif // ifndef NN_DSP_CTR_DSP_TYPES_H_ 73