fix LPC812 PWM

Dependents:   IR_LED_Send

Fork of mbed-dev by mbed official

Revision:
0:9b334a45a8ff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/targets/cmsis/TARGET_NXP/TARGET_LPC23XX/TOOLCHAIN_GCC_CR/vector_functions.S	Thu Oct 01 15:25:22 2015 +0300
@@ -0,0 +1,149 @@
+/* .include "vector_defns.h" */
+
+
+
+.section .privileged_code, "ax"
+.arm
+
+
+.weak __mbed_fiq
+.weak __mbed_undef
+.weak __mbed_prefetch_abort
+.weak __mbed_data_abort
+.weak __mbed_irq
+.weak __mbed_swi
+.weak __mbed_dcc_irq
+.weak __mbed_reset
+.global __mbed_init_realmonitor
+/*  .global __mbed_init */
+
+
+
+
+__mbed_fiq:
+        B __mbed_fiq
+__mbed_undef:
+        LDR PC, =0x7fffffa0
+__mbed_prefetch_abort:
+        LDR PC, =0x7fffffb0
+__mbed_data_abort:
+        LDR PC, =0x7fffffc0
+__mbed_irq:
+        MSR CPSR_c, #0x1F|0x80|0x40
+        
+        STMDB sp!, {r0-r3,r12,lr}
+        
+        MOV r0, #0xFFFFFF00
+        LDR r0, [r0]
+        
+        MOV lr, pc
+        BX r0
+        
+        MOV r0, #0xFFFFFF00
+        STR r0, [r0] 
+        
+        LDMFD sp!,{r0-r3,r12,lr}
+        
+        MSR CPSR_c, #0x12|0x80|0x40
+        
+        SUBS pc, lr, #4
+__mbed_swi:
+        STMFD sp!, {a4, r4, ip, lr}
+        
+        LDR r4, =0x40000040
+        
+        LDR a4, =0x00940000
+        LDR PC, =0x7ffff820
+__mbed_dcc_irq:
+        LDMFD sp!,{r0-r3,r12,lr}
+        
+        MSR CPSR_c, #0x12|0x80|0x40
+        
+        SUB lr, lr, #4 
+        STMFD sp!, {ip,lr} 
+        
+        LDR LR, =0xfffff000
+        STR LR, [LR, #0xf00]
+        
+        LDR PC, =0x7fffffe0
+/*
+ __mbed_reset is called after reset
+ we setup the stacks and realmonitor, then call Reset_Handler like on M3
+*/
+
+.section .text, "ax"
+.arm
+.global Reset_handler
+Reset_Handler:   
+        .extern __libc_init_array
+        .extern  SystemInit
+        .extern  __wrap_main
+        LDR     R0, =SystemInit
+        MOV     LR, PC       
+        BX      R0
+
+        LDR     R0, =__libc_init_array
+        MOV     LR, PC       
+        BX      R0
+
+        LDR     R0, =__wrap_main
+        BX      R0
+
+__mbed_reset:
+        LDR R0, =( __SRAM_segment_end__ )
+        
+        MSR CPSR_c, #0x1B|0x80|0x40
+        MOV SP, R0
+        SUB R0, R0, #0x00000040
+        
+        MSR CPSR_c, #0x17|0x80|0x40
+        MOV SP, R0
+        SUB R0, R0, #0x00000040
+        
+        MSR CPSR_c, #0x11|0x80|0x40
+        MOV SP, R0
+        SUB R0, R0, #0x00000000
+        
+        MSR CPSR_c, #0x12|0x80|0x40
+        MOV SP, R0
+        SUB R0, R0, #0x00000040
+        
+        MSR CPSR_c, #0x13|0x80|0x40
+        MOV SP, R0
+        SUB R0, R0, #0x00000040
+        
+        MSR CPSR_c, #0x10
+        MOV SP, R0
+        
+/*  Relocate .data section (Copy from ROM to RAM) */
+        LDR     R1, =__text_end__        /* _etext */ 
+        LDR     R2, =__data_start__      /* _data  */
+        LDR     R3, =__data_end__        /* _edata */ 
+        CMP     R2, R3
+        BEQ     DataIsEmpty
+LoopRel:        CMP     R2, R3 
+        LDRLO   R0, [R1], #4 
+        STRLO   R0, [R2], #4 
+        BLO     LoopRel 
+DataIsEmpty:
+
+/*   Clear .bss section (Zero init) */
+        MOV     R0, #0 
+        LDR     R1, =__bss_start__ 
+        LDR     R2, =__bss_end__ 
+        CMP     R1,R2
+        BEQ     BSSIsEmpty
+LoopZI:         CMP     R1, R2 
+        STRLO   R0, [R1], #4 
+        BLO     LoopZI 
+BSSIsEmpty:
+
+
+/* Init realmonitor */
+        LDR R0, =__mbed_init_realmonitor
+        MOV LR, PC
+        BX R0
+        
+/* Go to Reset_Handler */ 
+        LDR     R0, =Reset_Handler
+        BX R0