URL
https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk
Subversion Repositories openrisc_me
[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.5.1/] [gcc/] [config/] [fr30/] [lib1funcs.asm] - Rev 282
Compare with Previous | Blame | View Log
/* libgcc routines for the FR30.Copyright (C) 1998, 1999, 2009 Free Software Foundation, Inc.This file is part of GCC.GCC is free software; you can redistribute it and/or modify itunder the terms of the GNU General Public License as published by theFree Software Foundation; either version 3, or (at your option) anylater version.This file is distributed in the hope that it will be useful, butWITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNUGeneral Public License for more details.Under Section 7 of GPL version 3, you are granted additionalpermissions described in the GCC Runtime Library Exception, version3.1, as published by the Free Software Foundation.You should have received a copy of the GNU General Public License anda copy of the GCC Runtime Library Exception along with this program;see the files COPYING3 and COPYING.RUNTIME respectively. If not, see<http://www.gnu.org/licenses/>. */.macro FUNC_START name.text.globl __\name.type __\name, @function__\name:.endm.macro FUNC_END name.size __\name, . - __\name.endm.macro DIV_BODY reg number.if \numberDIV_BODY \reg, "\number - 1"div1 \reg.endif.endm#ifdef L_udivsi3FUNC_START udivsi3;; Perform an unsiged division of r4 / r5 and place the result in r4.;; Does not handle overflow yet...mov r4, mdldiv0u r5DIV_BODY r5 32mov mdl, r4retFUNC_END udivsi3#endif /* L_udivsi3 */#ifdef L_divsi3FUNC_START divsi3;; Perform a siged division of r4 / r5 and place the result in r4.;; Does not handle overflow yet...mov r4, mdldiv0s r5DIV_BODY r5 32div2 r5div3div4smov mdl, r4retFUNC_END divsi3#endif /* L_divsi3 */#ifdef L_umodsi3FUNC_START umodsi3;; Perform an unsiged division of r4 / r5 and places the remainder in r4.;; Does not handle overflow yet...mov r4, mdldiv0u r5DIV_BODY r5 32mov mdh, r4retFUNC_END umodsi3#endif /* L_umodsi3 */#ifdef L_modsi3FUNC_START modsi3;; Perform a siged division of r4 / r5 and place the remainder in r4.;; Does not handle overflow yet...mov r4, mdldiv0s r5DIV_BODY r5 32div2 r5div3div4smov mdh, r4retFUNC_END modsi3#endif /* L_modsi3 */#ifdef L_negsi2FUNC_START negsi2ldi:8 #0, r0sub r4, r0mov r0, r4retFUNC_END negsi2#endif /* L_negsi2 */#ifdef L_one_cmplsi2FUNC_START one_cmplsi2ldi:8 #0xff, r0extsb r0eor r0, r4retFUNC_END one_cmplsi2#endif /* L_one_cmplsi2 */
