2 ; Port of uClibc for TMS320C6000 DSP architecture
3 ; Copyright (C) 2004 Texas Instruments Incorporated
4 ; Author of TMS320C6000 port: Aurelien Jacquiot
6 ; This program is free software; you can redistribute it and/or modify it
7 ; under the terms of the GNU Library General Public License as published by
8 ; the Free Software Foundation; either version 2 of the License, or (at your
9 ; option) any later version.
11 ; This program is distributed in the hope that it will be useful, but WITHOUT
12 ; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 ; FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License
16 ; You should have received a copy of the GNU Library General Public License
17 ; along with this program; if not, see <http://www.gnu.org/licenses/>.
23 .if 1 /* was: .if (CONFIG_UCLIBC_SHARED == 0) */
25 MVKL .S1 ___curr_eh_stack_entry,A6
27 MVKH .S1 ___curr_eh_stack_entry,A6
28 || CMPGT .L1 A3,4,A0 ; A0 set if C++ exceptions case
32 MVKL .S2 (___curr_eh_stack_entry - $bss)/4,B6
34 MVKH .S2 (___curr_eh_stack_entry - $bss)/4,B6
35 || CMPGT .L1 A3,4,A0 ; A0 set if C++ exceptions case
37 LDW .D2T1 *+B14[B6],A2
44 MVK .L2 1,B4 ; indicate to ___sigjmp_save to save signal mask
45 || MV .D2X A4,B6 ; jmp_buf address
46 || STW .D1T2 B3,*+A4(48) ; return address
49 [A0] CMPEQ .L1 A4,A2,A0 ; A0 set if C++ exceptions case
52 || STW .D2T2 B10,*+B6(4)
53 ||[!A0] B .S1 __sigjmp_save ; branch to ___sigjmp_save in 5 cycles
57 || STW .D2T2 B11,*+B6(12)
58 STW .D1T1 A12,*+A4(16)
59 || STW .D2T2 B12,*+B6(20)
60 STW .D1T1 A13,*+A4(24)
61 || STW .D2T2 B13,*+B6(28)
62 STW .D1T1 A14,*+A4(32)
63 || STW .D2T2 B14,*+B6(36)
64 STW .D1T1 A15,*+A4(40)
65 || STW .D2T2 B15,*+B6(44)
66 ||[A0] ZERO .L1 A4 ; returns 0 for the C++ case