mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
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:
parent
53786510bb
commit
85fa19095e
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------*
|
/*---------------------------------------------------------------------------*
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user