diff options
| author | dzzxzz <[email protected]> | 2010-04-20 03:26:11 +0000 |
|---|---|---|
| committer | dzzxzz <[email protected]> | 2010-04-20 03:26:11 +0000 |
| commit | 367015d3fd38f477df028455715ce2a5b589bf74 (patch) | |
| tree | b034d9fd0eaaa55d65642fdfb133d2d2e86ec0b9 /bsp/m16c62p | |
| parent | 7e0ad698a38c87498d0ebba527aa71540b2bfa09 (diff) | |
move peripheral ISR from libcpu/m16c/context.asm to bsp/interrupts.s34
git-svn-id: https://rt-thread.googlecode.com/svn/trunk@658 bbd45198-f89e-11dd-88c7-29a3b14d5316
Diffstat (limited to 'bsp/m16c62p')
| -rw-r--r-- | bsp/m16c62p/interrupts.s34 | 69 | ||||
| -rw-r--r-- | bsp/m16c62p/rtt2m16c.ewp | 3 |
2 files changed, 72 insertions, 0 deletions
diff --git a/bsp/m16c62p/interrupts.s34 b/bsp/m16c62p/interrupts.s34 new file mode 100644 index 0000000000..d2f0bec954 --- /dev/null +++ b/bsp/m16c62p/interrupts.s34 @@ -0,0 +1,69 @@ +/*
+ * File : interrupt.s34
+ * This file is part of RT-Thread RTOS
+ * COPYRIGHT (C) 2009, RT-Thread Development Team
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rt-thread.org/license/LICENSE
+ *
+ * Change Logs:
+ * Date Author Notes
+ * 2010-04-20 fify the first version
+ *
+ * For : Renesas M16C
+ * Toolchain : IAR's EW for M16C v3.401
+*/
+
+ PUBLIC rt_hw_timer_handler
+ PUBLIC rt_hw_uart0_receive_handler
+
+ EXTERN rt_thread_switch_interrput_flag
+ EXTERN rt_interrupt_from_thread
+ EXTERN rt_interrupt_to_thread
+ EXTERN rt_interrupt_enter
+ EXTERN rt_interrupt_leave
+ EXTERN rt_tick_increase
+ EXTERN u0rec_handler
+
+ RSEG CSTACK
+ RSEG ISTACK
+ RSEG CODE:CODE:NOROOT(2)
+
+rt_hw_context_switch_interrupt_do
+ MOV.W #0, rt_thread_switch_interrput_flag
+ MOV.W rt_interrupt_from_thread, A0
+ STC ISP, [A0]
+
+ MOV.W rt_interrupt_to_thread, A0
+ LDC [A0], ISP
+ POPM R0,R1,R2,R3,A0,A1,SB,FB ; Restore all processor registers from the new task's stack
+ REIT
+
+ .EVEN
+rt_hw_timer_handler:
+ PUSHM R0,R1,R2,R3,A0,A1,SB,FB ; Save current task's registers
+ JSR rt_interrupt_enter
+ JSR rt_tick_increase
+ JSR rt_interrupt_leave
+
+ CMP.W #1,rt_thread_switch_interrput_flag
+ JEQ rt_hw_context_switch_interrupt_do
+
+ POPM R0,R1,R2,R3,A0,A1,SB,FB ; Restore current task's registers
+ REIT ; Return from interrup
+
+ .EVEN
+rt_hw_uart0_receive_handler:
+ PUSHM R0,R1,R2,R3,A0,A1,SB,FB ; Save current task's registers
+ JSR rt_interrupt_enter
+ JSR u0rec_handler
+ JSR rt_interrupt_leave
+
+ CMP.W #1, rt_thread_switch_interrput_flag
+ JEQ rt_hw_context_switch_interrupt_do
+
+ POPM R0,R1,R2,R3,A0,A1,SB,FB ; Restore current task's registers
+ REIT ; Return from interrup
+
+ END
diff --git a/bsp/m16c62p/rtt2m16c.ewp b/bsp/m16c62p/rtt2m16c.ewp index 86d9d6de5c..8bb437f6d2 100644 --- a/bsp/m16c62p/rtt2m16c.ewp +++ b/bsp/m16c62p/rtt2m16c.ewp @@ -1774,6 +1774,9 @@ <name>$PROJ_DIR$\cstartup.s34</name>
</file>
<file>
+ <name>$PROJ_DIR$\interrupts.s34</name>
+ </file>
+ <file>
<name>$PROJ_DIR$\lnkm30627fhp.xcl</name>
</file>
<file>
|
