diff --git a/trunk/bootrom/build/libraries/os/common/os_spinLock.c b/trunk/bootrom/build/libraries/os/common/os_spinLock.c index 4cb89f6..f875bd4 100644 --- a/trunk/bootrom/build/libraries/os/common/os_spinLock.c +++ b/trunk/bootrom/build/libraries/os/common/os_spinLock.c @@ -24,15 +24,15 @@ void _ISTDbgLib_Initialize(void); void _ISTDbgLib_AllocateEmualtor(void); void _ISTDbgLib_FreeEmulator(void); -s32 osLockByWord_IrqAndFiq(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void)); -s32 osUnlockByWord_IrqAndFiq(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void)); -s32 osTryLockByWord_IrqAndFiq(u16 lockID, OSLockWord *lockp, void (*crtlFuncp) (void)); +s32 osLockByWord_IrqAndFiq(u8 lockID, OSLockByte *lockp, void (*ctrlFuncp) (void)); +s32 osUnlockByByte_IrqAndFiq(u8 lockID, OSLockByte *lockp, void (*ctrlFuncp) (void)); +s32 osTryLockByByte_IrqAndFiq(u8 lockID, OSLockByte *lockp, void (*crtlFuncp) (void)); -static s32 i_osDoLockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void), +static s32 i_osDoLockByByte(u8 lockID, OSLockByte *lockp, void (*ctrlFuncp) (void), BOOL disableFiq); -static s32 i_osDoUnlockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void), +static s32 i_osDoUnlockByByte(u8 lockID, OSLockByte *lockp, void (*ctrlFuncp) (void), BOOL disableFIQ); -static s32 i_osDoTryLockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void), +static s32 i_osDoTryLockByByte(u8 lockID, OSLockByte *lockp, void (*ctrlFuncp) (void), BOOL disableFIQ); static void i_osAllocateCartridgeBus(void); @@ -164,7 +164,7 @@ void osInitLock(void) { static BOOL isInitialized = FALSE; #ifdef SDK_NITRO - OSLockWord *lockp; + OSLockByte *lockp; #endif if (isInitialized) @@ -189,7 +189,7 @@ void osInitLock(void) i_osSyncWithOtherProc( OSi_SYNCTYPE_RECVER, (void*)HW_INIT_LOCK_BUF ); //lockp->lockFlag = 0; - //(void)osLockByWord(OS_MAINP_SYSTEM_LOCK_ID, lockp, NULL); + //(void)osLockByByte(OS_MAINP_SYSTEM_LOCK_ID, lockp, NULL); #else // SDK_ARM9 // ロックIDカウンタ用フラグ 初期化 @@ -207,7 +207,7 @@ void osInitLock(void) // LOCK //====================================================================== /*---------------------------------------------------------------------------* - Name: i_osDoLockByWord + Name: i_osDoLockByByte Description: do spinlock. keep to try till success @@ -218,13 +218,13 @@ void osInitLock(void) Returns: OS_LOCK_SUCCESS success to lock *---------------------------------------------------------------------------*/ -static s32 i_osDoLockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void), +static s32 i_osDoLockByByte(u8 lockID, OSLockByte *lockp, void (*ctrlFuncp) (void), BOOL disableFiq) { s32 lastLockFlag; while ((lastLockFlag = - i_osDoTryLockByWord(lockID, lockp, ctrlFuncp, disableFiq)) > OS_LOCK_SUCCESS) + i_osDoTryLockByByte(lockID, lockp, ctrlFuncp, disableFiq)) > OS_LOCK_SUCCESS) { i_osWaitByLoop(); } @@ -233,7 +233,7 @@ static s32 i_osDoLockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (vo } /*---------------------------------------------------------------------------* - Name: osLockByWord + Name: osLockByByte Description: do spinlock. keep to try till success. @@ -243,13 +243,13 @@ static s32 i_osDoLockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (vo Returns: OS_LOCK_SUCCESS success to lock *---------------------------------------------------------------------------*/ -s32 osLockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void)) +s32 osLockByByte(u8 lockID, OSLockByte *lockp, void (*ctrlFuncp) (void)) { - return i_osDoLockByWord(lockID, lockp, ctrlFuncp, FALSE); + return i_osDoLockByByte(lockID, lockp, ctrlFuncp, FALSE); } /*---------------------------------------------------------------------------* - Name: osLockByWord_IrqAndFiq + Name: osLockByByte_IrqAndFiq Description: do spinlock. keep to try till success. disable irq and fiq @@ -260,9 +260,9 @@ s32 osLockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void)) Returns: OS_LOCK_SUCCESS success to lock *---------------------------------------------------------------------------*/ -s32 osLockByWord_IrqAndFiq(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void)) +s32 osLockByByte_IrqAndFiq(u8 lockID, OSLockByte *lockp, void (*ctrlFuncp) (void)) { - return i_osDoLockByWord(lockID, lockp, ctrlFuncp, TRUE); + return i_osDoLockByByte(lockID, lockp, ctrlFuncp, TRUE); } @@ -270,7 +270,7 @@ s32 osLockByWord_IrqAndFiq(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (voi // UNLOCK //====================================================================== /*---------------------------------------------------------------------------* - Name: i_osDoUnlockByWord + Name: i_osDoUnlockByByte Description: do unlock lock. @@ -282,7 +282,7 @@ s32 osLockByWord_IrqAndFiq(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (voi Returns: OS_UNLOCK_SUCCESS success OS_UNLOCK_ERROR error of unlocking lock *---------------------------------------------------------------------------*/ -static s32 i_osDoUnlockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void), +static s32 i_osDoUnlockByByte(u8 lockID, OSLockByte *lockp, void (*ctrlFuncp) (void), BOOL disableFIQ) { OSIntrMode lastInterrupts; @@ -318,7 +318,7 @@ static s32 i_osDoUnlockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) ( } /*---------------------------------------------------------------------------* - Name: osUnlockByWord + Name: osUnlockByByte Description: do unlock lock. disable irq and fiq @@ -330,19 +330,13 @@ static s32 i_osDoUnlockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) ( Returns: OS_UNLOCK_SUCCESS success OS_UNLOCK_ERROR error of unlocking lock *---------------------------------------------------------------------------*/ -s32 osUnlockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void)) +s32 osUnlockByByte(u8 lockID, OSLockByte *lockp, void (*ctrlFuncp) (void)) { - return i_osDoUnlockByWord(lockID, lockp, ctrlFuncp, FALSE); -} - -//---- for compatibility to old name ('UnLock' <-> 'Unlock') -s32 osUnLockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void)) -{ - return i_osDoUnlockByWord(lockID, lockp, ctrlFuncp, FALSE); + return i_osDoUnlockByByte(lockID, lockp, ctrlFuncp, FALSE); } /*---------------------------------------------------------------------------* - Name: osUnlockByWord_IrqAndFiq + Name: osUnlockByByte_IrqAndFiq Description: do unlock lock. @@ -353,9 +347,9 @@ s32 osUnLockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void)) Returns: OS_UNLOCK_SUCCESS success OS_UNLOCK_ERROR error of unlocking lock *---------------------------------------------------------------------------*/ -s32 osUnlockByWord_IrqAndFiq(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void)) +s32 osUnlockByByte_IrqAndFiq(u8 lockID, OSLockByte *lockp, void (*ctrlFuncp) (void)) { - return i_osDoUnlockByWord(lockID, lockp, ctrlFuncp, TRUE); + return i_osDoUnlockByByte(lockID, lockp, ctrlFuncp, TRUE); } @@ -363,7 +357,7 @@ s32 osUnlockByWord_IrqAndFiq(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (v // TRY LOCK //====================================================================== /*---------------------------------------------------------------------------* - Name: i_osDoTryLockByWord + Name: i_osDoTryLockByByte Description: try to lock spinlock only once. @@ -375,7 +369,7 @@ s32 osUnlockByWord_IrqAndFiq(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (v Returns: >0 value previous locked id OS_LOCK_SUCCESS success to lock *---------------------------------------------------------------------------*/ -static s32 i_osDoTryLockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void), +static s32 i_osDoTryLockByByte(u8 lockID, OSLockByte *lockp, void (*ctrlFuncp) (void), BOOL disableFIQ) { s32 lastLockFlag; @@ -386,7 +380,7 @@ static s32 i_osDoTryLockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) //---- Disable irq/fiq or irq lastInterrupts = (disableFIQ) ? osDisableInterrupts_IrqAndFiq() : osDisableInterrupts(); - lastLockFlag = (s32)miSwapWord(lockID, &lockp->lockFlag); + lastLockFlag = (s32)miSwapByte(lockID, &lockp->lockFlag); if (lastLockFlag == OS_LOCK_SUCCESS) { @@ -411,7 +405,7 @@ static s32 i_osDoTryLockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) } /*---------------------------------------------------------------------------* - Name: osTryLockByWord + Name: osTryLockByByte Description: try to lock spinlock only once. @@ -422,13 +416,13 @@ static s32 i_osDoTryLockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) Returns: >0 value previous locked id OS_LOCK_SUCCESS success to lock *---------------------------------------------------------------------------*/ -s32 osTryLockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void)) +s32 osTryLockByByte(u8 lockID, OSLockByte *lockp, void (*ctrlFuncp) (void)) { - return i_osDoTryLockByWord(lockID, lockp, ctrlFuncp, FALSE); + return i_osDoTryLockByByte(lockID, lockp, ctrlFuncp, FALSE); } /*---------------------------------------------------------------------------* - Name: osTryLockByWord_IrqAndFiq + Name: osTryLockByByte_IrqAndFiq Description: try to lock spinlock only once. @@ -439,9 +433,9 @@ s32 osTryLockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void)) Returns: >0 value previous locked id OS_LOCK_SUCCESS success to lock *---------------------------------------------------------------------------*/ -s32 osTryLockByWord_IrqAndFiq(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void)) +s32 osTryLockByByte_IrqAndFiq(u8 lockID, OSLockByte *lockp, void (*ctrlFuncp) (void)) { - return i_osDoTryLockByWord(lockID, lockp, ctrlFuncp, TRUE); + return i_osDoTryLockByByte(lockID, lockp, ctrlFuncp, TRUE); } @@ -457,11 +451,11 @@ s32 osTryLockByWord_IrqAndFiq(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) ( Returns: OS_LOCK_SUCCESS success to lock *---------------------------------------------------------------------------*/ -s32 osLockCard(u16 lockID) +s32 osLockCard(u8 lockID) { OSi_ASSERT_ID(lockID); - return osLockByWord(lockID, (OSLockWord *)HW_CARD_LOCK_BUF, i_osAllocateCardBus); + return osLockByByte(lockID, (OSLockByte *)HW_CARD_LOCK_BUF, i_osAllocateCardBus); } /*---------------------------------------------------------------------------* @@ -474,11 +468,11 @@ s32 osLockCard(u16 lockID) Returns: OS_UNLOCK_SUCCESS success OS_UNLOCK_ERROR error of unlocking lock *---------------------------------------------------------------------------*/ -s32 osUnlockCard(u16 lockID) +s32 osUnlockCard(u8 lockID) { OSi_ASSERT_ID(lockID); - return osUnlockByWord(lockID, (OSLockWord *)HW_CARD_LOCK_BUF, i_osFreeCardBus); + return osUnlockByByte(lockID, (OSLockByte *)HW_CARD_LOCK_BUF, i_osFreeCardBus); } /*---------------------------------------------------------------------------* @@ -491,9 +485,9 @@ s32 osUnlockCard(u16 lockID) Returns: >0 value previous locked id OS_LOCK_SUCCESS success to lock *---------------------------------------------------------------------------*/ -s32 osTryLockCard(u16 lockID) +s32 osTryLockCard(u8 lockID) { - return osTryLockByWord(lockID, (OSLockWord *)HW_CARD_LOCK_BUF, i_osAllocateCardBus); + return osTryLockByByte(lockID, (OSLockByte *)HW_CARD_LOCK_BUF, i_osAllocateCardBus); } //---------------- @@ -501,7 +495,7 @@ static void i_osAllocateCardBus(void) { #ifdef SDK_ARM11 #ifdef SDK_TWL - // preset reset flag with status of disable interrupts in i_osDoTryLockByWord + // preset reset flag with status of disable interrupts in i_osDoTryLockByByte if ( ((reg_MI_MC & REG_MI_MC_SL1_MODE_MASK) >> REG_MI_MC_SL1_MODE_SHIFT) == 0x2 ) { reg_MI_MCCNT1 |= REG_MI_MCCNT1_RESB_MASK; @@ -539,7 +533,7 @@ static void i_osFreeCardBus(void) Returns: owner id *---------------------------------------------------------------------------*/ -u16 osReadOwnerOfLockWord(OSLockWord *lockp) +u8 osReadOwnerOfLockWord(OSLockByte *lockp) { return lockp->ownerID; } @@ -648,7 +642,7 @@ LSYM(10) Returns: None. *---------------------------------------------------------------------------*/ -asm void osReleaseLockID( register u16 lockID ) +asm void osReleaseLockID( register u8 lockID ) { //#pragma unused( lockID ) diff --git a/trunk/bootrom/include/brom/os/common/spinLock.h b/trunk/bootrom/include/brom/os/common/spinLock.h index 13ea646..d0353b0 100644 --- a/trunk/bootrom/include/brom/os/common/spinLock.h +++ b/trunk/bootrom/include/brom/os/common/spinLock.h @@ -58,13 +58,12 @@ extern "C" { //---- structure of lock variable -typedef volatile struct OSLockWord +typedef volatile struct OSLockByte { - u32 lockFlag; - u16 ownerID; - u16 extension; + u8 lockFlag; + u8 ownerID; } -OSLockWord; +OSLockByte; /*---------------------------------------------------------------------------* Name: osInitLock @@ -99,8 +98,8 @@ void osInitLock(void); //・戻り値: // OS_LOCK_SUCCESS ロック成功 //---------------------------------------------------------------------- -s32 osLockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void)); -s32 osLockCard(u16 lockID); +s32 osLockByByte(u8 lockID, OSLockByte *lockp, void (*ctrlFuncp) (void)); +s32 osLockCard(u8 lockID); //---------------------------------------------------------------------- // ロックの解除 @@ -117,13 +116,8 @@ s32 osLockCard(u16 lockID); // OS_UNLOCK_SUCCESS ロック解除成功 // OS_UNLOCK_ERROR ロック解除エラー //---------------------------------------------------------------------- -s32 osUnlockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void)); -s32 osUnlockCard(u16 lockID); - -//---- for compatibility to old name ('UnLock' <-> 'Unlock') -// because isd lib calls osUnLock*, these cannot be inline. -s32 osUnLockByWord(u16 lockID, OSLockWord *lockp, void (*ctrlFuncp) (void)); -s32 osUnLockCard(u16 lockID); +s32 osUnlockByByte(u8 lockID, OSLockByte *lockp, void (*ctrlFuncp) (void)); +s32 osUnlockCard(u8 lockID); //---------------------------------------------------------------------- // ロックの試行 @@ -143,8 +137,8 @@ s32 osUnLockCard(u16 lockID); // 正 ロック中(直前に格納されていたID) // OS_LOCK_SUCCESS ロック成功 //---------------------------------------------------------------------- -s32 osTryLockByWord(u16 lockID, OSLockWord *lockp, void (*crtlFuncp) (void)); -s32 osTryLockCard(u16 lockID); +s32 osTryLockByByte(u8 lockID, OSLockByte *lockp, void (*crtlFuncp) (void)); +s32 osTryLockCard(u8 lockID); //---------------------------------------------------------------------- // ロック変数の所有モジュールIDの読み込み @@ -166,8 +160,8 @@ s32 osTryLockCard(u16 lockID); // バイトアクセスはできないことに注意して下さい。 // ですので、メインメモリ上では基本的に osReadOwnerOfLockWord() を使用して下さい。 //---------------------------------------------------------------------- -u16 osReadOwnerOfLockWord(OSLockWord *lockp); -#define osReadOwnerOfLockCard() osReadOwnerOfLockWord( (OSLockWord *)HW_CARD_LOCK_BUF ) +u8 osReadOwnerOfLockWord(OSLockByte *lockp); +#define osReadOwnerOfLockCard() osReadOwnerOfLockWord( (OSLockByte *)HW_CARD_LOCK_BUF ) @@ -201,7 +195,7 @@ s32 osGetLockID(void); Returns: None. *---------------------------------------------------------------------------*/ -void osReleaseLockID(u16 lockID); +void osReleaseLockID(u8 lockID); diff --git a/trunk/include/ctr/hw/ARM11/mmap_axi_wram.h b/trunk/include/ctr/hw/ARM11/mmap_axi_wram.h index b2be0a9..0e8575c 100644 --- a/trunk/include/ctr/hw/ARM11/mmap_axi_wram.h +++ b/trunk/include/ctr/hw/ARM11/mmap_axi_wram.h @@ -39,7 +39,7 @@ extern "C" { #define HW_AXI_WRAM_SYSRV_OFS_DABT_VENEER 0x28 #endif // SDK_ARM11 #define HW_AXI_WRAM_SYSRV_INIT_LOCK_BUF 0x30 -#define HW_AXI_WRAM_SYSRV_CARD_LOCK_BUF 0x38 +#define HW_AXI_WRAM_SYSRV_CARD_LOCK_BUF 0x34 #ifdef SDK_ARM11 #define HW_AXI_WRAM_SYSRV_OFS_START_VECTOR1 0x3c #define HW_AXI_WRAM_SYSRV_OFS_INTR_CHECK1 0x40