/* libgcc routines for Toshiba Media Processor. Copyright (C) 2001-2014 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 . */ #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