Force Cortex-M3/4 reset from assembly
You are setting bit 2 (SYSRESETREQ) of the AIRCR resgister to force a reset of all systems but the debug logic. However, you need to allow writing to the register, writing 0x5FA to VECTKEY, otherwise the write is ignored. But you are doing that. Hmmm. 

Try writing 0X05FA0004

From the ST manual:

Bit 1 VECTCLRACTIVE
Reserved for Debug use. This bit reads as 0. When writing to the register you must write 0 to
this bit, otherwise behavior is unpredictable.
Bit 0 VECTRESET
Reserved for Debug use. This bit reads as 0. When writing to the register you must write 0 to
this bit, otherwise behavior is unpredictable.