RAM_ARM9:0208C16C @ =============== S U B R O U T I N E =======================================
RAM_ARM9:0208C16C
RAM_ARM9:0208C16C
RAM_ARM9:0208C16C @ void __fastcall PM_GoSleepMode__(struct PMWakeUpTrigger *trigger, struct PMLogic *logic, unsigned __int16 keyPattern)
RAM_ARM9:0208C16C PM_GoSleepMode__: @ CODE XREF: sub_2035474+48p
RAM_ARM9:0208C16C
RAM_ARM9:0208C16C var_40 = -0x40
RAM_ARM9:0208C16C var_3C = -0x3C
RAM_ARM9:0208C16C var_38 = -0x38
RAM_ARM9:0208C16C var_34 = -0x34
RAM_ARM9:0208C16C var_30 = -0x30
RAM_ARM9:0208C16C var_2C = -0x2C
RAM_ARM9:0208C16C var_28 = -0x28
RAM_ARM9:0208C16C
RAM_ARM9:0208C16C F0 4F 2D E9 STMFD SP!, {R4-R11,LR}
RAM_ARM9:0208C170 1C D0 4D E2 SUB SP, SP, #0x1C
RAM_ARM9:0208C174 D8 32 9F E5 LDR R3, =0x2153020
RAM_ARM9:0208C178 00 70 A0 E1 MOV R7, R0
RAM_ARM9:0208C17C 1C 00 93 E5 LDR R0, [R3,#0x1C] @ listp
RAM_ARM9:0208C180 00 10 8D E5 STR R1, [SP]
RAM_ARM9:0208C184 04 20 8D E5 STR R2, [SP,#4]
RAM_ARM9:0208C188 01 50 A0 E3 MOV R5, #1
RAM_ARM9:0208C18C 00 40 A0 E3 MOV R4, #0
RAM_ARM9:0208C190 98 01 00 EB BL PMi_ExecuteList__
RAM_ARM9:0208C194 BC 02 9F E5 LDR R0, =0x4000208
RAM_ARM9:0208C198 B0 60 D0 E1 LDRH R6, [R0]
RAM_ARM9:0208C19C B0 40 C0 E1 STRH R4, [R0]
RAM_ARM9:0208C1A0 FE ED FF EB BL OS_DisableInterrupts__
RAM_ARM9:0208C1A4 10 00 8D E5 STR R0, [SP,#0x10]
RAM_ARM9:0208C1A8 01 00 44 E2 SUB R0, R4, #1 @ intr
RAM_ARM9:0208C1AC FF E1 FF EB BL OS_DisableIrqMask__
RAM_ARM9:0208C1B0 0C 00 8D E5 STR R0, [SP,#0xC]
RAM_ARM9:0208C1B4 AD EB FF EB BL OS_IsTickAvailable__
RAM_ARM9:0208C1B8 00 00 50 E3 CMP R0, #0
RAM_ARM9:0208C1BC 08 00 A0 13 MOVNE R0, #8
RAM_ARM9:0208C1C0 04 00 A0 01 MOVEQ R0, R4
RAM_ARM9:0208C1C4 01 07 80 E3 ORR R0, R0, #0x40000 @ intr
RAM_ARM9:0208C1C8 E1 E1 FF EB BL OS_SetIrqMask__
RAM_ARM9:0208C1CC 10 00 9D E5 LDR R0, [SP,#0x10]
RAM_ARM9:0208C1D0 F7 ED FF EB BL OS_RestoreInterrupts__
RAM_ARM9:0208C1D4 7C 12 9F E5 LDR R1, =0x4000208
RAM_ARM9:0208C1D8 08 00 17 E3 TST R7, #8
RAM_ARM9:0208C1DC B0 00 D1 E1 LDRH R0, [R1]
RAM_ARM9:0208C1E0 B0 50 C1 E1 STRH R5, [R1]
RAM_ARM9:0208C1E4 06 00 00 0A BEQ loc_208C204
RAM_ARM9:0208C1E8 4B EE FF EB BL MB_IsMultiBootChild__
RAM_ARM9:0208C1EC FE 00 80 E2 ADD R0, R0, #0xFE
RAM_ARM9:0208C1F0 FF 0C 80 E2 ADD R0, R0, #0xFF00
RAM_ARM9:0208C1F4 00 08 A0 E1 MOV R0, R0,LSL#16
RAM_ARM9:0208C1F8 20 08 A0 E1 MOV R0, R0,LSR#16
RAM_ARM9:0208C1FC 01 00 50 E3 CMP R0, #1
RAM_ARM9:0208C200 08 70 C7 93 BICLS R7, R7, #8
RAM_ARM9:0208C204
RAM_ARM9:0208C204 loc_208C204: @ CODE XREF: PM_GoSleepMode__+78j
RAM_ARM9:0208C204 10 00 17 E3 TST R7, #0x10
RAM_ARM9:0208C208 06 00 00 0A BEQ loc_208C228
RAM_ARM9:0208C20C D0 E6 FF EB BL DSi.Check__
RAM_ARM9:0208C210 00 00 50 E3 CMP R0, #0
RAM_ARM9:0208C214 02 00 00 1A BNE loc_208C224
RAM_ARM9:0208C218 52 13 00 EB BL CTRDG_IsExisting__
RAM_ARM9:0208C21C 00 00 50 E3 CMP R0, #0
RAM_ARM9:0208C220 00 00 00 1A BNE loc_208C228
RAM_ARM9:0208C224
RAM_ARM9:0208C224 loc_208C224: @ CODE XREF: PM_GoSleepMode__+A8j
RAM_ARM9:0208C224 10 70 C7 E3 BIC R7, R7, #0x10
RAM_ARM9:0208C228
RAM_ARM9:0208C228 loc_208C228: @ CODE XREF: PM_GoSleepMode__+9Cj
RAM_ARM9:0208C228 @ PM_GoSleepMode__+B4j
RAM_ARM9:0208C228 01 13 A0 E3 MOV R1, #0x4000000
RAM_ARM9:0208C22C 01 0A 81 E2 ADD R0, R1, #0x1000
RAM_ARM9:0208C230 00 B0 91 E5 LDR R11, [R1]
RAM_ARM9:0208C234 00 50 90 E5 LDR R5, [R0]
RAM_ARM9:0208C238 18 01 00 EB BL PM_GetLCDPower__
RAM_ARM9:0208C23C 14 90 8D E2 ADD R9, SP, #0x14
RAM_ARM9:0208C240 18 A0 8D E2 ADD R10, SP, #0x18
RAM_ARM9:0208C244 08 00 8D E5 STR R0, [SP,#8]
RAM_ARM9:0208C248 0A 00 A0 E1 MOV R0, R10 @ top
RAM_ARM9:0208C24C 09 10 A0 E1 MOV R1, R9 @ bottom
RAM_ARM9:0208C250 64 FF FF EB BL PM_GetBackLight__
RAM_ARM9:0208C254 00 00 50 E3 CMP R0, #0
RAM_ARM9:0208C258 07 00 00 0A BEQ loc_208C27C
RAM_ARM9:0208C25C F8 81 9F E5 LDR R8, =0x51D23
RAM_ARM9:0208C260
RAM_ARM9:0208C260 loc_208C260: @ CODE XREF: PM_GoSleepMode__+10Cj
RAM_ARM9:0208C260 08 00 A0 E1 MOV R0, R8
RAM_ARM9:0208C264 EC ED FF EB BL DSi_regUnk__
RAM_ARM9:0208C268 0A 00 A0 E1 MOV R0, R10 @ top
RAM_ARM9:0208C26C 09 10 A0 E1 MOV R1, R9 @ bottom
RAM_ARM9:0208C270 5C FF FF EB BL PM_GetBackLight__
RAM_ARM9:0208C274 00 00 50 E3 CMP R0, #0
RAM_ARM9:0208C278 F8 FF FF 1A BNE loc_208C260
RAM_ARM9:0208C27C
RAM_ARM9:0208C27C loc_208C27C: @ CODE XREF: PM_GoSleepMode__+ECj
RAM_ARM9:0208C27C 02 00 A0 E3 MOV R0, #2 @ target
RAM_ARM9:0208C280 00 10 A0 E3 MOV R1, #0 @ sw
RAM_ARM9:0208C284 D9 FE FF EB BL PM_SetBackLight__
RAM_ARM9:0208C288 00 00 50 E3 CMP R0, #0
RAM_ARM9:0208C28C 09 00 00 0A BEQ loc_208C2B8
RAM_ARM9:0208C290 C4 A1 9F E5 LDR R10, =0x51D23
RAM_ARM9:0208C294 02 90 A0 E3 MOV R9, #2
RAM_ARM9:0208C298 00 80 A0 E3 MOV R8, #0
RAM_ARM9:0208C29C
RAM_ARM9:0208C29C loc_208C29C: @ CODE XREF: PM_GoSleepMode__+148j
RAM_ARM9:0208C29C 0A 00 A0 E1 MOV R0, R10
RAM_ARM9:0208C2A0 DD ED FF EB BL DSi_regUnk__
RAM_ARM9:0208C2A4 09 00 A0 E1 MOV R0, R9 @ target
RAM_ARM9:0208C2A8 08 10 A0 E1 MOV R1, R8 @ sw
RAM_ARM9:0208C2AC CF FE FF EB BL PM_SetBackLight__
RAM_ARM9:0208C2B0 00 00 50 E3 CMP R0, #0
RAM_ARM9:0208C2B4 F8 FF FF 1A BNE loc_208C29C
RAM_ARM9:0208C2B8
RAM_ARM9:0208C2B8 loc_208C2B8: @ CODE XREF: PM_GoSleepMode__+120j
RAM_ARM9:0208C2B8 75 FD FF EB BL waitForNextVFrame__ @ //---- wait a few frames after backlight off for avoiding appearance of afterimage
RAM_ARM9:0208C2BC 01 23 A0 E3 MOV R2, #0x4000000
RAM_ARM9:0208C2C0 00 00 92 E5 LDR R0, [R2]
RAM_ARM9:0208C2C4 01 1A 82 E2 ADD R1, R2, #0x1000
RAM_ARM9:0208C2C8 03 08 C0 E3 BIC R0, R0, #0x30000
RAM_ARM9:0208C2CC 00 00 82 E5 STR R0, [R2]
RAM_ARM9:0208C2D0 00 00 91 E5 LDR R0, [R1]
RAM_ARM9:0208C2D4 01 08 C0 E3 BIC R0, R0, #0x10000
RAM_ARM9:0208C2D8 00 00 81 E5 STR R0, [R1]
RAM_ARM9:0208C2DC 6C FD FF EB BL waitForNextVFrame__
RAM_ARM9:0208C2E0 6B FD FF EB BL waitForNextVFrame__
RAM_ARM9:0208C2E4 76 FF FF EB BL readFSToDMA__
RAM_ARM9:0208C2E8 14 10 9D E5 LDR R1, [SP,#0x14]
RAM_ARM9:0208C2EC 60 01 9F E5 LDR R0, =0x2153020
RAM_ARM9:0208C2F0 00 80 A0 E3 MOV R8, #0
RAM_ARM9:0208C2F4 08 80 80 E5 STR R8, [R0,#8]
RAM_ARM9:0208C2F8 00 00 51 E3 CMP R1, #0
RAM_ARM9:0208C2FC 18 00 9D E5 LDR R0, [SP,#0x18]
RAM_ARM9:0208C300 80 80 A0 13 MOVNE R8, #0x80 @ 'Ç'
RAM_ARM9:0208C304 00 00 50 E3 CMP R0, #0
RAM_ARM9:0208C308 40 90 A0 E3 MOV R9, #0x40 @ '@'
RAM_ARM9:0208C30C 01 07 A0 E3 MOV R0, #0x40000 @ intr
RAM_ARM9:0208C310 00 90 A0 03 MOVEQ R9, #0
RAM_ARM9:0208C314 8E E1 FF EB BL OS_SetIrqMask__
RAM_ARM9:0208C318 00 10 9D E5 LDR R1, [SP]
RAM_ARM9:0208C31C 04 00 9D E5 LDR R0, [SP,#4]
RAM_ARM9:0208C320 00 10 81 E1 ORR R1, R1, R0
RAM_ARM9:0208C324 09 00 87 E1 ORR R0, R7, R9
RAM_ARM9:0208C328 08 00 80 E1 ORR R0, R0, R8
RAM_ARM9:0208C32C 00 08 A0 E1 MOV R0, R0,LSL#16
RAM_ARM9:0208C330 01 18 A0 E1 MOV R1, R1,LSL#16
RAM_ARM9:0208C334 20 08 A0 E1 MOV R0, R0,LSR#16 @ trigger
RAM_ARM9:0208C338 21 18 A0 E1 MOV R1, R1,LSR#16 @ keyIntrData
RAM_ARM9:0208C33C 23 FE FF EB BL PMi_SendSleepStart__
RAM_ARM9:0208C340 0C 81 9F E5 LDR R8, =0x2153020
RAM_ARM9:0208C344 08 00 98 E5 LDR R0, [R8,#8]
RAM_ARM9:0208C348 00 00 50 E3 CMP R0, #0
RAM_ARM9:0208C34C 03 00 00 1A BNE loc_208C360
RAM_ARM9:0208C350
RAM_ARM9:0208C350 loc_208C350: @ CODE XREF: PM_GoSleepMode__+1F0j
RAM_ARM9:0208C350 E4 EF FF EB BL OS_Halt__
RAM_ARM9:0208C354 08 00 98 E5 LDR R0, [R8,#8]
RAM_ARM9:0208C358 00 00 50 E3 CMP R0, #0
RAM_ARM9:0208C35C FB FF FF 0A BEQ loc_208C350
RAM_ARM9:0208C360
RAM_ARM9:0208C360 loc_208C360: @ CODE XREF: PM_GoSleepMode__+1E0j
RAM_ARM9:0208C360 00 80 A0 E3 MOV R8, #0
RAM_ARM9:0208C364 41 EB FF EB BL OS_IsTickAvailable__
RAM_ARM9:0208C368 00 00 50 E3 CMP R0, #0
RAM_ARM9:0208C36C 08 00 A0 13 MOVNE R0, #8
RAM_ARM9:0208C370 08 00 A0 01 MOVEQ R0, R8
RAM_ARM9:0208C374 01 07 80 E3 ORR R0, R0, #0x40000 @ intr
RAM_ARM9:0208C378 75 E1 FF EB BL OS_SetIrqMask__
RAM_ARM9:0208C37C 08 00 17 E3 TST R7, #8
RAM_ARM9:0208C380 03 00 00 0A BEQ loc_208C394
RAM_ARM9:0208C384 D4 00 9F E5 LDR R0, =0x4000214
RAM_ARM9:0208C388 00 00 90 E5 LDR R0, [R0]
RAM_ARM9:0208C38C 01 06 10 E3 TST R0, #0x100000
RAM_ARM9:0208C390 01 40 A0 13 MOVNE R4, #1
RAM_ARM9:0208C394
RAM_ARM9:0208C394 loc_208C394: @ CODE XREF: PM_GoSleepMode__+214j
RAM_ARM9:0208C394 00 00 54 E3 CMP R4, #0
RAM_ARM9:0208C398 01 70 A0 E3 MOV R7, #1
RAM_ARM9:0208C39C 19 00 00 1A BNE loc_208C408
RAM_ARM9:0208C3A0 08 00 9D E5 LDR R0, [SP,#8]
RAM_ARM9:0208C3A4 01 00 50 E3 CMP R0, #1
RAM_ARM9:0208C3A8 07 00 00 1A BNE loc_208C3CC
RAM_ARM9:0208C3AC
RAM_ARM9:0208C3AC loc_208C3AC: @ CODE XREF: PM_GoSleepMode__+258j
RAM_ARM9:0208C3AC 07 00 A0 E1 MOV R0, R7 @ sw
RAM_ARM9:0208C3B0 07 10 A0 E1 MOV R1, R7 @ led
RAM_ARM9:0208C3B4 07 20 A0 E1 MOV R2, R7 @ skip
RAM_ARM9:0208C3B8 07 30 A0 E1 MOV R3, R7 @ isSync
RAM_ARM9:0208C3BC 28 00 00 EB BL PMi_SetLCDPower__
RAM_ARM9:0208C3C0 01 00 50 E3 CMP R0, #1
RAM_ARM9:0208C3C4 F8 FF FF 1A BNE loc_208C3AC
RAM_ARM9:0208C3C8 0A 00 00 EA B loc_208C3F8
RAM_ARM9:0208C3CC @ ---------------------------------------------------------------------------
RAM_ARM9:0208C3CC
RAM_ARM9:0208C3CC loc_208C3CC: @ CODE XREF: PM_GoSleepMode__+23Cj
RAM_ARM9:0208C3CC 07 00 A0 E1 MOV R0, R7 @ status
RAM_ARM9:0208C3D0 5A FE FF EB BL PMi_SetLED__
RAM_ARM9:0208C3D4 00 00 50 E3 CMP R0, #0
RAM_ARM9:0208C3D8 06 00 00 0A BEQ loc_208C3F8
RAM_ARM9:0208C3DC 78 90 9F E5 LDR R9, =0x51D23
RAM_ARM9:0208C3E0
RAM_ARM9:0208C3E0 loc_208C3E0: @ CODE XREF: PM_GoSleepMode__+288j
RAM_ARM9:0208C3E0 09 00 A0 E1 MOV R0, R9
RAM_ARM9:0208C3E4 8C ED FF EB BL DSi_regUnk__
RAM_ARM9:0208C3E8 07 00 A0 E1 MOV R0, R7 @ status
RAM_ARM9:0208C3EC 53 FE FF EB BL PMi_SetLED__
RAM_ARM9:0208C3F0 00 00 50 E3 CMP R0, #0
RAM_ARM9:0208C3F4 F9 FF FF 1A BNE loc_208C3E0
RAM_ARM9:0208C3F8
RAM_ARM9:0208C3F8 loc_208C3F8: @ CODE XREF: PM_GoSleepMode__+25Cj
RAM_ARM9:0208C3F8 @ PM_GoSleepMode__+26Cj
RAM_ARM9:0208C3F8 01 03 A0 E3 MOV R0, #0x4000000
RAM_ARM9:0208C3FC 00 B0 80 E5 STR R11, [R0]
RAM_ARM9:0208C400 01 0A 80 E2 ADD R0, R0, #0x1000
RAM_ARM9:0208C404 00 50 80 E5 STR R5, [R0]
RAM_ARM9:0208C408
RAM_ARM9:0208C408 loc_208C408: @ CODE XREF: PM_GoSleepMode__+230j
RAM_ARM9:0208C408 36 08 A0 E3 MOV R0, #0x360000
RAM_ARM9:0208C40C 82 ED FF EB BL DSi_regUnk__
RAM_ARM9:0208C410 40 50 9F E5 LDR R5, =0x4000208
RAM_ARM9:0208C414 B0 00 D5 E1 LDRH R0, [R5]
RAM_ARM9:0208C418 0C 00 9D E5 LDR R0, [SP,#0xC] @ intr
RAM_ARM9:0208C41C B0 80 C5 E1 STRH R8, [R5]
RAM_ARM9:0208C420 4B E1 FF EB BL OS_SetIrqMask__
RAM_ARM9:0208C424 10 00 9D E5 LDR R0, [SP,#0x10]
RAM_ARM9:0208C428 61 ED FF EB BL OS_RestoreInterrupts__
RAM_ARM9:0208C42C B0 00 D5 E1 LDRH R0, [R5]
RAM_ARM9:0208C430 00 00 54 E3 CMP R4, #0
RAM_ARM9:0208C434 B0 60 C5 E1 STRH R6, [R5]
RAM_ARM9:0208C438 00 00 00 0A BEQ loc_208C440
RAM_ARM9:0208C43C 9E FE FF EB BL sub_208BEBC
RAM_ARM9:0208C440 @ ---------------------------------------------------------------------------
RAM_ARM9:0208C440
RAM_ARM9:0208C440 loc_208C440: @ CODE XREF: PM_GoSleepMode__+2CCj
RAM_ARM9:0208C440 0C 00 9F E5 LDR R0, =0x2153020
RAM_ARM9:0208C444 04 00 90 E5 LDR R0, [R0,#4] @ listp
RAM_ARM9:0208C448 EA 00 00 EB BL PMi_ExecuteList__
RAM_ARM9:0208C44C 1C D0 8D E2 ADD SP, SP, #0x1C
RAM_ARM9:0208C450 F0 8F BD E8 LDMFD SP!, {R4-R11,PC}
RAM_ARM9:0208C450 @ End of function PM_GoSleepMode__
RAM_ARM9:0208C450
RAM_ARM9:0208C450 @ ---------------------------------------------------------------------------
RAM_ARM9:0208C454 20 30 15 02 dword_208C454: .long 0x2153020 @ DATA XREF: PM_GoSleepMode__+8r
RAM_ARM9:0208C454 @ PM_GoSleepMode__+180r ...
RAM_ARM9:0208C458 08 02 00 04 dword_208C458: .long 0x4000208 @ DATA XREF: PM_GoSleepMode__+28r
RAM_ARM9:0208C458 @ PM_GoSleepMode__+68r ...
RAM_ARM9:0208C45C 23 1D 05 00 dword_208C45C: .long 0x51D23 @ DATA XREF: PM_GoSleepMode__+F0r
RAM_ARM9:0208C45C @ PM_GoSleepMode__+124r ...
RAM_ARM9:0208C460 14 02 00 04 dword_208C460: .long 0x4000214 @ DATA XREF: PM_GoSleepMode__+218r
-----------------------------------------------------------------------------------------------------------------------
void PM_GoSleepMode(PMWakeUpTrigger trigger, PMLogic logic, u16 keyPattern)
{
BOOL prepIrq; // IME
OSIntrMode prepIntrMode; // CPSR-IRQ
OSIrqMask prepIntrMask; // IE
BOOL powerOffFlag = FALSE;
PMBackLightSwitch preTop;
PMBackLightSwitch preBottom;
u32 preGX;
u32 preGXS;
PMLCDPower preLCDPower;
//---- call pre-callbacks
PMi_ExecuteList(PMi_PreSleepCallbackList);
//---- disable all interrupt
prepIrq = OS_DisableIrq(); // IME D
prepIntrMode = OS_DisableInterrupts(); // CPSR-IRQ D
prepIntrMask = OS_DisableIrqMask((1 << OS_IRQ_TABLE_MAX) - 1); // IE D
//---- interrupt setting
(void)OS_SetIrqMask(OS_IE_FIFO_RECV); // enable PXI from ARM7
(void)OS_RestoreInterrupts(prepIntrMode); // CPSR-IRQ E
(void)OS_EnableIrq(); // IME E
//---- check card trigger
if (trigger & PM_TRIGGER_CARD)
{
//---- if multi boot child, ignore card check flag
if (MB_IsMultiBootChild())
{
trigger &= ~PM_TRIGGER_CARD;
}
}
//---- check cartridge trigger
if (trigger & PM_TRIGGER_CARTRIDGE)
{
//---- if cartridge not exist, ignore cartridge check flag
if (!CTRDG_IsExisting())
{
trigger &= ~PM_TRIGGER_CARTRIDGE;
}
}
//---- remember gx state
preGX = reg_GX_DISPCNT;
preGXS = reg_GXS_DB_DISPCNT;
preLCDPower = PM_GetLCDPower();
//---- set backlight off
(void)PM_GetBackLight(&preTop, &preBottom);
(void)PM_SetBackLight(PM_LCD_ALL, PM_BACKLIGHT_OFF);
//---- wait a few frames after backlight off for avoiding appearance of afterimage
{
vu32 vcount = OS_GetVBlankCount();
while (vcount == OS_GetVBlankCount())
{
}
vcount = OS_GetVBlankCount();
reg_GX_DISPCNT = reg_GX_DISPCNT & ~REG_GX_DISPCNT_MODE_MASK; // main screen off
GXS_DispOff();
while (vcount == OS_GetVBlankCount())
{
}
vcount = OS_GetVBlankCount();
while (vcount == OS_GetVBlankCount())
{
}
}
//---- send SLEEP_START command to ARM7
{
u16 param;
param = (u16)(trigger
| preTop << PM_BACKLIGHT_RECOVER_TOP_SHIFT
| preBottom << PM_BACKLIGHT_RECOVER_BOTTOM_SHIFT);
while (PMi_SendSleepStart(param, (u16)(logic | keyPattern)) != PM_SUCCESS)
{
}
}
//==== Halt ================
OS_Halt();
//==========================
//---- wait 100ms
OS_SpinWait(PMi_LCD_POWER_WAIT_TICK);
//---- check card remove
if ((trigger & PM_TRIGGER_CARD) && (OS_GetRequestIrqMask() & OS_IE_CARD_IREQ))
{
powerOffFlag = TRUE;
}
//---- turn LCD on, and restore gx state
if (!powerOffFlag)
{
if (preLCDPower == PM_LCD_POWER_ON)
{
(void)PMi_SetLCDPower(PM_LCD_POWER_ON, PM_LED_ON, TRUE, FALSE);
}
else
{
(void)PMi_SetLED(PM_LED_ON);
}
reg_GX_DISPCNT = preGX;
reg_GXS_DB_DISPCNT = preGXS;
}
//---- restore all interrupt
(void)OS_DisableInterrupts(); // CPSR-IRQ D (IME D in it)
(void)OS_SetIrqMask(prepIntrMask); // IE R
(void)OS_RestoreInterrupts(prepIntrMode); // CPSR-IRQ R
(void)OS_RestoreIrq(prepIrq); // IME R
//---- power off if need
if (powerOffFlag)
{
(void)PM_ForceToPowerOff();
}
//---- call post-callbacks
PMi_ExecuteList(PMi_PostSleepCallbackList);
}
Comments
0 B
|👍
/👎