I use the following function in my code with uVision 4.70 __asm void SetPOWCON( u16 u16POWCON) // POWCON register value { Z_PLL EQU 0xFFFF0400 // PLL base address R_NUM EQU 0x12345678 // Random Number for Dummy Multiplication LDR r3,=R_NUM // Load random number for multiplication LDR r1,=Z_PLL // Load base address of PLL / POWCON related MMRs MOV r2,#1 // POWKEY0 = 1 STR r2,[r1,#4] STR r0,[r1,#8] // Set POWCON value MOV r0,#0xf4 // POWKEY1 = 0xF4 STR r0,[r1,#0xc] UMLAL r2,r0,r3,r1 BX lr }