Mercurial > hg > CbC > CbC_gcc
comparison gcc/config/m32c/m32c-lib1.S @ 67:f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
author | nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 22 Mar 2011 17:18:12 +0900 |
parents | a06113de4d67 |
children |
comparison
equal
deleted
inserted
replaced
65:65488c3d617d | 67:f6334be47118 |
---|---|
1 /* libgcc routines for R8C/M16C/M32C | 1 /* libgcc routines for R8C/M16C/M32C |
2 Copyright (C) 2005, 2009 | 2 Copyright (C) 2005, 2009, 2010 |
3 Free Software Foundation, Inc. | 3 Free Software Foundation, Inc. |
4 Contributed by Red Hat. | 4 Contributed by Red Hat. |
5 | 5 |
6 This file is part of GCC. | 6 This file is part of GCC. |
7 | 7 |
202 mov.w #0,r0 | 202 mov.w #0,r0 |
203 exitd | 203 exitd |
204 #endif | 204 #endif |
205 | 205 |
206 #ifdef L__m32c_jsri16 | 206 #ifdef L__m32c_jsri16 |
207 .data | 207 .text |
208 m32c_jsri_addr: | 208 #ifdef A16 |
209 .byte 0, 0, 0 | |
210 m32c_jsri_ret: | |
211 .byte 0, 0, 0 | |
212 | |
213 .text | |
214 .global m32c_jsri16 | 209 .global m32c_jsri16 |
215 m32c_jsri16: | 210 m32c_jsri16: |
216 pop.w m32c_jsri_ret | 211 add.w #-1, sp |
217 pop.b m32c_jsri_ret+2 | 212 |
218 pop.w m32c_jsri_addr | 213 /* Read the address (16 bits) and return address (24 bits) off |
219 push.b m32c_jsri_ret+2 | 214 the stack. */ |
220 push.w m32c_jsri_ret | 215 mov.w 4[sp], r0 |
221 jmpi.a m32c_jsri_addr | 216 mov.w 1[sp], r3 |
222 | 217 mov.b 3[sp], a0 /* This zero-extends, so the high byte has |
223 #endif | 218 zero in it. */ |
219 | |
220 /* Write the return address, then new address, to the stack. */ | |
221 mov.w a0, 1[sp] /* Just to get the zero in 2[sp]. */ | |
222 mov.w r0, 0[sp] | |
223 mov.w r3, 3[sp] | |
224 mov.b a0, 5[sp] | |
225 | |
226 /* This "returns" to the target address, leaving the pending | |
227 return address on the stack. */ | |
228 rts | |
229 #endif | |
230 | |
231 #endif |