1 /*---------------------------------------------------------------------------*
2   Project:  TwlSDK - OS - include
3   File:     emulator.h
4 
5   Copyright 2003-2008 Nintendo.  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   $Date:: 2008-09-17#$
14   $Rev: 8556 $
15   $Author: okubata_ryoma $
16  *---------------------------------------------------------------------------*/
17 
18 #ifndef NITRO_OS_EMULATOR_H_
19 #define NITRO_OS_EMULATOR_H_
20 
21 #ifdef __cplusplus
22 extern "C" {
23 #endif
24 
25 //---- value of 'console not yet detect'
26 #define OSi_CONSOLE_NOT_DETECT    0xffffffff
27 
28 //---- running program environment
29 #define OS_CONSOLE_MASK           0xff000000
30 #define OS_CONSOLE_TWL            0x01000000 // classified by OS_CONSOLE_TWLTYPE_xxx
31 #define OS_CONSOLE_TWLDEBUGGER    0x02000000 // classified by OS_CONSOLE_BOARD_xxx
32 #define OS_CONSOLE_RESERVE1       0x04000000
33 #define OS_CONSOLE_RESERVE2       0x08000000
34 #define OS_CONSOLE_ENSATA         0x10000000
35 #define OS_CONSOLE_ISEMULATOR     0x20000000
36 #define OS_CONSOLE_ISDEBUGGER     0x40000000
37 #define OS_CONSOLE_NITRO          0x80000000
38 
39 //----  classified by the running environment
40 #define OS_CONSOLE_BOARD_MASK     0x00300000
41 #define OS_CONSOLE_BOARD_A9_A7    0x00100000
42 #define OS_CONSOLE_BOARD_A9       0x00200000
43 
44 #define OS_CONSOLE_TWLTYPE_MASK   0x00c00000
45 #define OS_CONSOLE_TWLTYPE_RETAIL 0x00800000
46 #define OS_CONSOLE_TWLTYPE_DEV    0x00400000
47 
48 #define OS_CONSOLE_EVALUATE       0x00080000
49 
50 //---- device
51 #define OS_CONSOLE_DEV_MASK       0x000fc000
52 #define OS_CONSOLE_DEV_CARTRIDGE  0x00010000
53 #define OS_CONSOLE_DEV_CARD       0x00020000
54 #define OS_CONSOLE_DEV_NAND       0x00040000
55 #define OS_CONSOLE_DEV_SDCARD     0x00080000
56 #define OS_CONSOLE_DEV_MEMORY     0x00008000
57 #define OS_CONSOLE_DEV_DOWNLOAD   0x00004000
58 
59 //---- main memory size
60 #define OS_CONSOLE_SIZE_MASK      0x0000000f
61 #define OS_CONSOLE_SIZE_4MB       0x00000001
62 #define OS_CONSOLE_SIZE_8MB       0x00000002
63 #define OS_CONSOLE_SIZE_16MB      0x00000004
64 #define OS_CONSOLE_SIZE_32MB      0x00000008
65 
66 
67 //---- for ARM7 memory checker in crt0
68 #define OS_CHIPTYPE_DEBUGGER_ADDR   (HW_SYS_CONF_BUF+4)
69 #define OS_CHIPTYPE_DEBUGGER_SIZE	1
70 #define OS_CHIPTYPE_DEBUGGER_MASK   0x3
71 
72 #define OS_CHIPTYPE_JTAG_ADDR       (HW_SYS_CONF_BUF+5)
73 #define OS_CHIPTYPE_JTAG_SIZE		1
74 #define OS_CHIPTYPE_JTAG_MASK       0x2
75 
76 #define OS_CHIPTYPE_SMX_ADDR        (HW_MMEMCHECKER_SUB)
77 #define OS_CHIPTYPE_SMX_SIZE        2
78 #define OS_CHIPTYPE_SMX_MASK        0x8000
79 
80 typedef enum
81 {
82     OS_CHIPTYPE_TWL        = 0,
83     OS_CHIPTYPE_DEBUGGER_1 = 1,
84     OS_CHIPTYPE_DEBUGGER_2 = 2,
85     OS_CHIPTYPE_EVALUATE   = 3
86 }
87 OSChipType;
88 
89 
90 /*---------------------------------------------------------------------------*
91   Name:         OS_GetConsoleType
92 
93   Description:  Get console type value
94                 This function returns a fixed value on FINALROM
95 
96   Arguments:    None
97 
98   Returns:		console type value
99  *---------------------------------------------------------------------------*/
100 u32 OS_GetConsoleType(void);
101 
102 /*---------------------------------------------------------------------------*
103   Name:         OS_GetRunningConsoleType
104 
105   Description:  Get console type value
106                 This function returns a true value in spite of on FINALROM
107 
108   Arguments:    None
109 
110   Returns:      console type value.
111  *---------------------------------------------------------------------------*/
112 u32 OS_GetRunningConsoleType(void);
113 
114 /*---------------------------------------------------------------------------*
115   Name:         OS_IsRunOnEmulator
116 
117   Description:  Detect software emulator Ensata
118 
119   Arguments:    None
120 
121   Returns:      TRUE  : running on Ensata
122                 FALSE : not running on Ensata
123  *---------------------------------------------------------------------------*/
124 BOOL OS_IsRunOnEmulator(void);
125 
126 /*---------------------------------------------------------------------------*
127   Name:         OS_IsRunOnDebugger
128 
129   Description:  Detect running on debugger.
130 
131   Arguments:    None
132 
133   Returns:      TRUE  : running on debugger
134                 FALSE : not running on debugger
135  *---------------------------------------------------------------------------*/
136 BOOL OS_IsRunOnDebugger(void);
137 
138 /*---------------------------------------------------------------------------*
139   Name:         OS_IsRunOnTWL
140 
141   Description:  check running platform
142 
143                 This function is used in only Nitro-TWL hybrid mode.
144                 (In Nitro mode and TWL limited mode, treated as constant)
145 
146   Arguments:    None
147 
148   Returns:      TRUE  : running on TWL
149                 FALSE : running on NITRO
150  *---------------------------------------------------------------------------*/
151 #ifdef SDK_NITRO
152 #define OS_IsRunOnTwl()			  (FALSE)
153 #else
154 #ifdef SDK_TWLLTD
155 #define OS_IsRunOnTwl()			  (TRUE)
156 #else
157 BOOL OS_IsRunOnTwl(void);
158 #endif
159 #endif
160 
161 //----------------------------------------------------------------
162 //---- for debug
163 #ifndef SDK_FINALROM
164 void OS_SetConsoleType(u32 type);
165 #else
166 #define OS_SetConsoleType(x)  ((void)0)
167 #endif
168 
169 //---- for internal use
170 u32 OSi_DetectDebugger(void);
171 u32 OSi_DetectEmulator(void);
172 
173 #ifndef SDK_TWLLTD
174 BOOL OSi_IsNitroModeOnTwl(void);
175 #else
176 #define OSi_IsNitroModeOnTwl()    (FALSE)
177 #endif
178 
179 
180 #ifdef __cplusplus
181 } /* extern "C" */
182 #endif
183 
184 /* NITRO_OS_EMULATOR_H_ */
185 #endif
186