INITi_DetectMainMemorySizeを最新のSDKのものに更新

git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1161 b08762b0-b915-fc4b-9d8c-17b2551a87ff
This commit is contained in:
yutaka 2008-04-16 07:12:03 +00:00
parent 53786510bb
commit 85fa19095e

View File

@ -557,81 +557,64 @@ static asm void INITi_CopySysConfig( void )
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*
Name: INITi_DetectMainMemorySize Name: INITi_DetectMainMemorySize
Description: 調
Description: detect main memory size. 調 (u16*)HW_MMEMCHECER_SUB
result is written into (u32*)HW_MMEMCHECKER_SUB. [OS_CONSOLE_SIZE_16MB|OS_CONSOLE_SIZE_32B]
value is [OS_CONSOLE_SIZE_4MB|OS_CONSOLE_SIZE_8MB| NOTE: NITRO
OS_CONSOLE_SIZE_16MB|OS_CONSOLE_SIZE_32MB] Arguments:
Returns:
Arguments: None.
Returns: None.
*---------------------------------------------------------------------------*/ *---------------------------------------------------------------------------*/
#define OSi_IMAGE_DIFFERENCE 0x400000 #define OSi_IMAGE_DIFFERENCE2 0xb000000
#define OSi_IMAGE_DIFFERENCE2 0xb000000 #define OSi_DETECT_NITRO_MASK (REG_SND_SMX_CNT_E_MASK | REG_SND_SMX_CNT_FSEL_MASK)
#define OSi_DETECT_NITRO_MASK (REG_SND_SMX_CNT_E_MASK | REG_SND_SMX_CNT_FSEL_MASK) #define OSi_DETECT_NITRO_VAL (REG_SND_SMX_CNT_E_MASK)
#define OSi_DETECT_NITRO_VAL (REG_SND_SMX_CNT_E_MASK)
static asm void INITi_DetectMainMemorySize( void ) #define OSi_CHECKNUM1 0x55
#define OSi_CHECKNUM2 0xaa
#define OSi_100usWAIT 3352 // 100us = 3351.4cycles(33.514MHz)
static asm void
INITi_DetectMainMemorySize(void)
{ {
stmfd sp!, {r4,lr} ldr r2, =HW_MMEMCHECKER_SUB
add r3, r2, #OSi_IMAGE_DIFFERENCE2
mov r0, #OS_CONSOLE_SIZE_16MB
//---- detect memory size /* OSi_CHECKNUM1 (0x55) 書き込みテスト */
#if 0 mov r1, #OSi_CHECKNUM1
mov r4, #OS_CONSOLE_SIZE_4MB strb r1, [r3]
mov r1, #0
ldr r2, =HW_MMEMCHECKER_SUB ldr r2, =OSi_100usWAIT
sub r3, r2, #OSi_IMAGE_DIFFERENCE @1 subs r2, r2, #4
@1: bcs @1
strh r1, [r2]
ldrh r12, [r3]
cmp r1, r12
bne @2
add r1, r1, #1 ldrb r1, [r3]
cmp r1, #2 // check 2 loop cmp r1, #OSi_CHECKNUM1
bne @1 bne @check_smix
//---- 4MB /* OSi_CHECKNUM2 (0xaa) を 書き込みテスト */
b @4 mov r1, #OSi_CHECKNUM2
strb r1, [r3]
//---- 8MB or 16MB or 32MB ldr r2, =OSi_100usWAIT
@2: @2 subs r2, r2, #4
// check if running on twl/nitro bcs @2
bl INITi_IsRunOnTwl
movne r4, #OS_CONSOLE_SIZE_8MB
bne @4
#else
ldr r2, =HW_MMEMCHECKER_SUB
#endif
//---- 16MB or 32MB
mov r1, #0
add r3, r2, #OSi_IMAGE_DIFFERENCE2
@3:
strh r1, [r2]
ldrh r12, [r3]
cmp r1, r12
movne r4, #OS_CONSOLE_SIZE_32MB ldrb r1, [r3]
bne @4 cmp r1, #OSi_CHECKNUM2
moveq r0, #OS_CONSOLE_SIZE_32MB
add r1, r1, #1 @check_smix:
cmp r1, #2 // check 2 loop /* SMIX レジスタを調査 */
bne @3 ldr r3, =REG_SMX_CNT_ADDR
mov r4, #OS_CONSOLE_SIZE_16MB ldrh r1, [r3]
@4: and r1, r1, #OSi_DETECT_NITRO_MASK
//---- check SMX_CNT cmp r1, #OSi_DETECT_NITRO_VAL
ldr r3, =REG_SMX_CNT_ADDR orreq r0, r0, #OS_CHIPTYPE_SMX_MASK
ldrh r1, [r3]
and r1, r1, #OSi_DETECT_NITRO_MASK
cmp r1, #OSi_DETECT_NITRO_VAL
orreq r4, r4, #OS_CHIPTYPE_SMX_MASK
strb r4, [r2] /* 調査結果を格納 */
ldr r2, =HW_MMEMCHECKER_SUB
ldmfd sp!, {r4,lr} strb r0, [r2]
bx lr bx lr
} }
/*---------------------------------------------------------------------------* /*---------------------------------------------------------------------------*