OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libgcc/] [config/] [mep/] [lib1funcs.S] - Rev 734

Compare with Previous | Blame | View Log

/* libgcc routines for Toshiba Media Processor.
   Copyright (C) 2001, 2002, 2005, 2009 Free Software Foundation, Inc.

This file is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 3 of the License, or (at your
option) any later version.
  
This file is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
General Public License for more details.
  
Under Section 7 of GPL version 3, you are granted additional
permissions described in the GCC Runtime Library Exception, version
3.1, as published by the Free Software Foundation.

You should have received a copy of the GNU General Public License and
a 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/>.  */

#define SAVEALL \
        add3    $sp, $sp, -16*4 ; \
        sw      $0, ($sp) ; \
        sw      $1, 4($sp) ; \
        sw      $2, 8($sp) ; \
        sw      $3, 12($sp) ; \
        sw      $4, 16($sp) ; \
        sw      $5, 20($sp) ; \
        sw      $6, 24($sp) ; \
        sw      $7, 28($sp) ; \
        sw      $8, 32($sp) ; \
        sw      $9, 36($sp) ; \
        sw      $10, 40($sp) ; \
        sw      $11, 44($sp) ; \
        sw      $12, 48($sp) ; \
        sw      $13, 52($sp) ; \
        sw      $14, 56($sp) ; \
        ldc     $5, $lp ; \
        add     $5, 3 ; \
        mov     $6, -4 ; \
        and     $5, $6

#define RESTOREALL \
        stc     $5, $lp ; \
        lw      $14, 56($sp) ; \
        lw      $13, 52($sp) ; \
        lw      $12, 48($sp) ; \
        lw      $11, 44($sp) ; \
        lw      $10, 40($sp) ; \
        lw      $9, 36($sp) ; \
        lw      $8, 32($sp) ; \
        lw      $7, 28($sp) ; \
        lw      $6, 24($sp) ; \
        lw      $5, 20($sp) ; \
        lw      $4, 16($sp) ; \
        lw      $3, 12($sp) ; \
        lw      $2, 8($sp) ; \
        lw      $1, 4($sp) ; \
        lw      $0, ($sp) ; \
        add3    $sp, $sp, 16*4 ; \
        ret

#ifdef L_mep_profile
        .text
        .global __mep_mcount
__mep_mcount:
        SAVEALL
        ldc     $1, $lp
        mov     $2, $0
        bsr     __mep_mcount_2
        RESTOREALL
#endif

#ifdef L_mep_bb_init_trace
        .text
        .global __mep_bb_init_trace_func
__mep_bb_init_trace_func:
        SAVEALL
        lw      $1, ($5)
        lw      $2, 4($5)
        add     $5, 8
        bsr     __bb_init_trace_func
        RESTOREALL
#endif

#ifdef L_mep_bb_init
        .text
        .global __mep_bb_init_func
__mep_bb_init_func:
        SAVEALL
        lw      $1, ($5)
        add     $5, 4
        bsr     __bb_init_func
        RESTOREALL
#endif

#ifdef L_mep_bb_trace
        .text
        .global __mep_bb_trace_func
__mep_bb_trace_func:
        SAVEALL
        movu    $3, __bb
        lw      $1, ($5)
        sw      $1, ($3)
        lw      $2, 4($5)
        sw      $2, 4($3)
        add     $5, 8
        bsr     __bb_trace_func
        RESTOREALL
#endif

#ifdef L_mep_bb_increment
        .text
        .global __mep_bb_increment_func
__mep_bb_increment_func:
        SAVEALL
        lw      $1, ($5)
        lw      $0, ($1)
        add     $0, 1
        sw      $0, ($1)
        add     $5, 4
        RESTOREALL
#endif

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.