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,80 +557,63 @@ 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}
//---- detect memory size
#if 0
mov r4, #OS_CONSOLE_SIZE_4MB
mov r1, #0
ldr r2, =HW_MMEMCHECKER_SUB ldr r2, =HW_MMEMCHECKER_SUB
sub r3, r2, #OSi_IMAGE_DIFFERENCE
@1:
strh r1, [r2]
ldrh r12, [r3]
cmp r1, r12
bne @2
add r1, r1, #1
cmp r1, #2 // check 2 loop
bne @1
//---- 4MB
b @4
//---- 8MB or 16MB or 32MB
@2:
// check if running on twl/nitro
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 add r3, r2, #OSi_IMAGE_DIFFERENCE2
@3: mov r0, #OS_CONSOLE_SIZE_16MB
strh r1, [r2]
ldrh r12, [r3]
cmp r1, r12
movne r4, #OS_CONSOLE_SIZE_32MB /* OSi_CHECKNUM1 (0x55) 書き込みテスト */
bne @4 mov r1, #OSi_CHECKNUM1
strb r1, [r3]
add r1, r1, #1 ldr r2, =OSi_100usWAIT
cmp r1, #2 // check 2 loop @1 subs r2, r2, #4
bne @3 bcs @1
mov r4, #OS_CONSOLE_SIZE_16MB
@4: ldrb r1, [r3]
//---- check SMX_CNT cmp r1, #OSi_CHECKNUM1
bne @check_smix
/* OSi_CHECKNUM2 (0xaa) を 書き込みテスト */
mov r1, #OSi_CHECKNUM2
strb r1, [r3]
ldr r2, =OSi_100usWAIT
@2 subs r2, r2, #4
bcs @2
ldrb r1, [r3]
cmp r1, #OSi_CHECKNUM2
moveq r0, #OS_CONSOLE_SIZE_32MB
@check_smix:
/* SMIX レジスタを調査 */
ldr r3, =REG_SMX_CNT_ADDR ldr r3, =REG_SMX_CNT_ADDR
ldrh r1, [r3] ldrh r1, [r3]
and r1, r1, #OSi_DETECT_NITRO_MASK and r1, r1, #OSi_DETECT_NITRO_MASK
cmp r1, #OSi_DETECT_NITRO_VAL cmp r1, #OSi_DETECT_NITRO_VAL
orreq r4, r4, #OS_CHIPTYPE_SMX_MASK orreq r0, r0, #OS_CHIPTYPE_SMX_MASK
strb r4, [r2] /* 調査結果を格納 */
ldr r2, =HW_MMEMCHECKER_SUB
ldmfd sp!, {r4,lr} strb r0, [r2]
bx lr bx lr
} }