diff options
author | tbsaunde <tbsaunde@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-09-09 02:11:06 +0000 |
---|---|---|
committer | tbsaunde <tbsaunde@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-09-09 02:11:06 +0000 |
commit | f67c2dde7b676e237578daf7ad170ffb7be38e32 (patch) | |
tree | 80c8154f269c0eeb0bc93c7b691cfaee43d17f1d /libgcc | |
parent | c92e0c4d06bc8146081109605180a050b3c50eb9 (diff) | |
download | gcc-f67c2dde7b676e237578daf7ad170ffb7be38e32.tar.gz |
remove picochip
contrib/ChangeLog:
2014-09-08 Trevor Saunders <tsaunders@mozilla.com>
* compare-all-tests: Don't test picochip.
* config-list.mk: Likewise.
gcc/ChangeLog:
2014-09-08 Trevor Saunders <tsaunders@mozilla.com>
* common/config/picochip/picochip-common.c: Remove.
* config.gcc: Remove support for picochip.
* config/picochip/constraints.md: Remove.
* config/picochip/dfa_space.md: Remove.
* config/picochip/dfa_speed.md: Remove.
* config/picochip/picochip-protos.h: Remove.
* config/picochip/picochip.c: Remove.
* config/picochip/picochip.h: Remove.
* config/picochip/picochip.md: Remove.
* config/picochip/picochip.opt: Remove.
* config/picochip/predicates.md: Remove.
* config/picochip/t-picochip: Remove.
* doc/md.texi: Don't document picochi.
libgcc/ChangeLog:
2014-09-08 Trevor Saunders <tsaunders@mozilla.com>
* config.host: Remove picochip support.
* config/picochip/adddi3.S: Remove.
* config/picochip/ashlsi3.S: Remove.
* config/picochip/ashlsi3.c: Remove.
* config/picochip/ashrsi3.S: Remove.
* config/picochip/ashrsi3.c: Remove.
* config/picochip/clzsi2.S: Remove.
* config/picochip/cmpsi2.S: Remove.
* config/picochip/divmod15.S: Remove.
* config/picochip/divmodhi4.S: Remove.
* config/picochip/divmodsi4.S: Remove.
* config/picochip/lib1funcs.S: Remove.
* config/picochip/longjmp.S: Remove.
* config/picochip/lshrsi3.S: Remove.
* config/picochip/lshrsi3.c: Remove.
* config/picochip/parityhi2.S: Remove.
* config/picochip/popcounthi2.S: Remove.
* config/picochip/setjmp.S: Remove.
* config/picochip/subdi3.S: Remove.
* config/picochip/t-picochip: Remove.
* config/picochip/ucmpsi2.S: Remove.
* config/picochip/udivmodhi4.S: Remove.
* config/picochip/udivmodsi4.S: Remove.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@215039 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libgcc')
24 files changed, 26 insertions, 3937 deletions
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog index b53f2e82473..531bdcaa238 100644 --- a/libgcc/ChangeLog +++ b/libgcc/ChangeLog @@ -1,3 +1,29 @@ +2014-09-08 Trevor Saunders <tsaunders@mozilla.com> + + * config.host: Remove picochip support. + * config/picochip/adddi3.S: Remove. + * config/picochip/ashlsi3.S: Remove. + * config/picochip/ashlsi3.c: Remove. + * config/picochip/ashrsi3.S: Remove. + * config/picochip/ashrsi3.c: Remove. + * config/picochip/clzsi2.S: Remove. + * config/picochip/cmpsi2.S: Remove. + * config/picochip/divmod15.S: Remove. + * config/picochip/divmodhi4.S: Remove. + * config/picochip/divmodsi4.S: Remove. + * config/picochip/lib1funcs.S: Remove. + * config/picochip/longjmp.S: Remove. + * config/picochip/lshrsi3.S: Remove. + * config/picochip/lshrsi3.c: Remove. + * config/picochip/parityhi2.S: Remove. + * config/picochip/popcounthi2.S: Remove. + * config/picochip/setjmp.S: Remove. + * config/picochip/subdi3.S: Remove. + * config/picochip/t-picochip: Remove. + * config/picochip/ucmpsi2.S: Remove. + * config/picochip/udivmodhi4.S: Remove. + * config/picochip/udivmodsi4.S: Remove. + 2014-09-08 Joseph Myers <joseph@codesourcery.com> * libgcc2.c (SF_SIZE): Change all uses to __LIBGCC_SF_MANT_DIG__. diff --git a/libgcc/config.host b/libgcc/config.host index 0550c343445..6ea18874132 100644 --- a/libgcc/config.host +++ b/libgcc/config.host @@ -928,9 +928,6 @@ nios2-*-*) pdp11-*-*) tmake_file="pdp11/t-pdp11 t-fdpbit" ;; -picochip-*-*) - tmake_file="picochip/t-picochip t-fpbit" - ;; powerpc-*-darwin*) case ${host} in *-*-darwin9* | *-*-darwin[12][0-9]*) diff --git a/libgcc/config/picochip/adddi3.S b/libgcc/config/picochip/adddi3.S deleted file mode 100644 index 1e79c798a89..00000000000 --- a/libgcc/config/picochip/adddi3.S +++ /dev/null @@ -1,194 +0,0 @@ -// picoChip ASM file -// -// Support for 64-bit addition. -// -// Copyright (C) 2003-2014 Free Software Foundation, Inc. -// Contributed by Picochip Ltd. -// Maintained by Hariharan Sandanagobalane (hariharan@picochip.com) -// -// 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, 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/>. - -.section .text - -.align 8 -.global __adddi3 -__adddi3: -_picoMark_FUNCTION_BEGIN= - -// picoChip Function Prologue : &__adddi3 = 12 bytes - - // The first operand of add is completely in registers r[2-5] - // The second operand of sub is in stack FP(0-3) - // and result need to be written pointed to by the register r0. - // All we need to do is to load the appropriate values, add them - // appropriately (with add or addc ) and then store the values back. - - ldw (FP)0, r1 - stl r[7:6], (FP)-1 - add.0 r2, r1, r6 - ldw (FP)1, r1 - addc.0 r3, r1, r7 - ldl (FP)1, r[3:2] - stl r[7:6], (r0)0 - addc.0 r4, r2, r6 - addc.0 r5, r3, r7 - stl r[7:6], (r0)1 - jr (r12) -=-> ldl (FP)-1, r[7:6] - -_picoMark_FUNCTION_END= - -// picoChip Function Epilogue : __adddi3 - - -//============================================================================ -// All DWARF information between this marker, and the END OF DWARF -// marker should be included in the source file. Search for -// FUNCTION_STACK_SIZE_GOES_HERE and FUNCTION NAME GOES HERE, and -// provide the relevant information. Add markers called -// _picoMark_FUNCTION_BEGIN and _picoMark_FUNCTION_END around the -// function in question. -//============================================================================ - -//============================================================================ -// Frame information. -//============================================================================ - -.section .debug_frame -_picoMark_DebugFrame= - -// Common CIE header. -.unalignedInitLong _picoMark_CieEnd-_picoMark_CieBegin -_picoMark_CieBegin= -.unalignedInitLong 0xffffffff -.initByte 0x1 // CIE Version -.ascii 16#0# // CIE Augmentation -.uleb128 0x1 // CIE Code Alignment Factor -.sleb128 2 // CIE Data Alignment Factor -.initByte 0xc // CIE RA Column -.initByte 0xc // DW_CFA_def_cfa -.uleb128 0xd -.uleb128 0x0 -.align 2 -_picoMark_CieEnd= - -// FDE -_picoMark_LSFDE0I900821033007563= -.unalignedInitLong _picoMark_FdeEnd-_picoMark_FdeBegin -_picoMark_FdeBegin= -.unalignedInitLong _picoMark_DebugFrame // FDE CIE offset -.unalignedInitWord _picoMark_FUNCTION_BEGIN // FDE initial location -.unalignedInitWord _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN -.initByte 0xe // DW_CFA_def_cfa_offset -.uleb128 0xe // <-- FUNCTION_STACK_SIZE_GOES_HERE -.initByte 0x4 // DW_CFA_advance_loc4 -.unalignedInitLong _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN -.initByte 0xe // DW_CFA_def_cfa_offset -.uleb128 0x0 -.align 2 -_picoMark_FdeEnd= - -//============================================================================ -// Abbrevation information. -//============================================================================ - -.section .debug_abbrev -_picoMark_ABBREVIATIONS= - -.section .debug_abbrev - .uleb128 0x1 // (abbrev code) - .uleb128 0x11 // (TAG: DW_TAG_compile_unit) - .initByte 0x1 // DW_children_yes - .uleb128 0x10 // (DW_AT_stmt_list) - .uleb128 0x6 // (DW_FORM_data4) - .uleb128 0x12 // (DW_AT_high_pc) - .uleb128 0x1 // (DW_FORM_addr) - .uleb128 0x11 // (DW_AT_low_pc) - .uleb128 0x1 // (DW_FORM_addr) - .uleb128 0x25 // (DW_AT_producer) - .uleb128 0x8 // (DW_FORM_string) - .uleb128 0x13 // (DW_AT_language) - .uleb128 0x5 // (DW_FORM_data2) - .uleb128 0x3 // (DW_AT_name) - .uleb128 0x8 // (DW_FORM_string) -.initByte 0x0 -.initByte 0x0 - - .uleb128 0x2 ;# (abbrev code) - .uleb128 0x2e ;# (TAG: DW_TAG_subprogram) -.initByte 0x0 ;# DW_children_no - .uleb128 0x3 ;# (DW_AT_name) - .uleb128 0x8 ;# (DW_FORM_string) - .uleb128 0x11 ;# (DW_AT_low_pc) - .uleb128 0x1 ;# (DW_FORM_addr) - .uleb128 0x12 ;# (DW_AT_high_pc) - .uleb128 0x1 ;# (DW_FORM_addr) -.initByte 0x0 -.initByte 0x0 - -.initByte 0x0 - -//============================================================================ -// Line information. DwarfLib requires this to be present, but it can -// be empty. -//============================================================================ - -.section .debug_line -_picoMark_LINES= - -//============================================================================ -// Debug Information -//============================================================================ -.section .debug_info - -//Fixed header. -.unalignedInitLong _picoMark_DEBUG_INFO_END-_picoMark_DEBUG_INFO_BEGIN -_picoMark_DEBUG_INFO_BEGIN= -.unalignedInitWord 0x2 -.unalignedInitLong _picoMark_ABBREVIATIONS -.initByte 0x2 - -// Compile unit information. -.uleb128 0x1 // (DIE 0xb) DW_TAG_compile_unit) -.unalignedInitLong _picoMark_LINES -.unalignedInitWord _picoMark_FUNCTION_END -.unalignedInitWord _picoMark_FUNCTION_BEGIN -// Producer is `picoChip' -.ascii 16#70# 16#69# 16#63# 16#6f# 16#43# 16#68# 16#69# 16#70# 16#00# -.unalignedInitWord 0xcafe // ASM language -.ascii 16#0# // Name. DwarfLib expects this to be present. - -.uleb128 0x2 ;# (DIE DW_TAG_subprogram) - -// FUNCTION NAME GOES HERE. Use `echo name | od -t x1' to get the hex. Each hex -// digit is specified using the format 16#XX# -.ascii 16#5f# 16#61# 16#64# 16#64# 16#63# 16#69# 16#33# 16#0# // Function name `_adddi3' -.unalignedInitWord _picoMark_FUNCTION_BEGIN // DW_AT_low_pc -.unalignedInitWord _picoMark_FUNCTION_END // DW_AT_high_pc - -.initByte 0x0 // end of compile unit children. - -_picoMark_DEBUG_INFO_END= - -//============================================================================ -// END OF DWARF -//============================================================================ - -.section .endFile diff --git a/libgcc/config/picochip/ashlsi3.S b/libgcc/config/picochip/ashlsi3.S deleted file mode 100644 index 40f4a28a8e3..00000000000 --- a/libgcc/config/picochip/ashlsi3.S +++ /dev/null @@ -1,193 +0,0 @@ -// picoChip ASM file -// picoChip ASM file -// -// Support for 32-bit arithmetic shift left. -// -// Copyright (C) 2003-2014 Free Software Foundation, Inc. -// Contributed by Picochip Ltd. -// Maintained by Hariharan Sandanagobalane (hariharan@picochip.com) -// -// 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, 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/>. - -.section .text - -.global ___ashlsi3 -___ashlsi3: -_picoMark_FUNCTION_BEGIN= -// picoChip Function Prologue : &___ashlsi3 = 0 bytes - - // if (R2 > 15) goto _L2 - SUB.0 15,R2,r15 - JMPLT _L2 -=-> SUB.0 16,R2,R5 // R5 := R5 - R4 (HI) - - LSL.0 R1,R2,R1 // R3 := R1 << R2 - LSL.0 R0,R2,R4 // R2 := R0 << R2 - - LSR.0 R0,R5,R5 // R5 := R12 >> R5 NEED TO CHECK - HARI - OR.0 R5,R1,R5 // R3 := R5 IOR R0 (HI) - SUB.0 R2,0,r15 - COPYNE R5,R1 - JR (R12) // Return to caller -=-> COPY.0 R4,R0 - -_L2: - LSL.0 R0,R2,R1 // R3 := R0 << R2 - JR (R12) // Return to caller -=-> COPY.0 0,R0 // R2 := 0 (short constant) - -_picoMark_FUNCTION_END= - -// picoChip Function Epilogue : __ashlsi3 - -//============================================================================ -// All DWARF information between this marker, and the END OF DWARF -// marker should be included in the source file. Search for -// FUNCTION_STACK_SIZE_GOES_HERE and FUNCTION NAME GOES HERE, and -// provide the relevant information. Add markers called -// _picoMark_FUNCTION_BEGIN and _picoMark_FUNCTION_END around the -// function in question. -//============================================================================ - -//============================================================================ -// Frame information. -//============================================================================ - -.section .debug_frame -_picoMark_DebugFrame= - -// Common CIE header. -.unalignedInitLong _picoMark_CieEnd-_picoMark_CieBegin -_picoMark_CieBegin= -.unalignedInitLong 0xffffffff -.initByte 0x1 // CIE Version -.ascii 16#0# // CIE Augmentation -.uleb128 0x1 // CIE Code Alignment Factor -.sleb128 2 // CIE Data Alignment Factor -.initByte 0xc // CIE RA Column -.initByte 0xc // DW_CFA_def_cfa -.uleb128 0xd -.uleb128 0x0 -.align 2 -_picoMark_CieEnd= - -// FDE -_picoMark_LSFDE0I900821033007563= -.unalignedInitLong _picoMark_FdeEnd-_picoMark_FdeBegin -_picoMark_FdeBegin= -.unalignedInitLong _picoMark_DebugFrame // FDE CIE offset -.unalignedInitWord _picoMark_FUNCTION_BEGIN // FDE initial location -.unalignedInitWord _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN -.initByte 0xe // DW_CFA_def_cfa_offset -.uleb128 0x0 // <-- FUNCTION_STACK_SIZE_GOES_HERE -.initByte 0x4 // DW_CFA_advance_loc4 -.unalignedInitLong _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN -.initByte 0xe // DW_CFA_def_cfa_offset -.uleb128 0x0 -.align 2 -_picoMark_FdeEnd= - -//============================================================================ -// Abbrevation information. -//============================================================================ - -.section .debug_abbrev -_picoMark_ABBREVIATIONS= - -.section .debug_abbrev - .uleb128 0x1 // (abbrev code) - .uleb128 0x11 // (TAG: DW_TAG_compile_unit) - .initByte 0x1 // DW_children_yes - .uleb128 0x10 // (DW_AT_stmt_list) - .uleb128 0x6 // (DW_FORM_data4) - .uleb128 0x12 // (DW_AT_high_pc) - .uleb128 0x1 // (DW_FORM_addr) - .uleb128 0x11 // (DW_AT_low_pc) - .uleb128 0x1 // (DW_FORM_addr) - .uleb128 0x25 // (DW_AT_producer) - .uleb128 0x8 // (DW_FORM_string) - .uleb128 0x13 // (DW_AT_language) - .uleb128 0x5 // (DW_FORM_data2) - .uleb128 0x3 // (DW_AT_name) - .uleb128 0x8 // (DW_FORM_string) -.initByte 0x0 -.initByte 0x0 - - .uleb128 0x2 ;# (abbrev code) - .uleb128 0x2e ;# (TAG: DW_TAG_subprogram) -.initByte 0x0 ;# DW_children_no - .uleb128 0x3 ;# (DW_AT_name) - .uleb128 0x8 ;# (DW_FORM_string) - .uleb128 0x11 ;# (DW_AT_low_pc) - .uleb128 0x1 ;# (DW_FORM_addr) - .uleb128 0x12 ;# (DW_AT_high_pc) - .uleb128 0x1 ;# (DW_FORM_addr) -.initByte 0x0 -.initByte 0x0 - -.initByte 0x0 - -//============================================================================ -// Line information. DwarfLib requires this to be present, but it can -// be empty. -//============================================================================ - -.section .debug_line -_picoMark_LINES= - -//============================================================================ -// Debug Information -//============================================================================ -.section .debug_info - -//Fixed header. -.unalignedInitLong _picoMark_DEBUG_INFO_END-_picoMark_DEBUG_INFO_BEGIN -_picoMark_DEBUG_INFO_BEGIN= -.unalignedInitWord 0x2 -.unalignedInitLong _picoMark_ABBREVIATIONS -.initByte 0x2 - -// Compile unit information. -.uleb128 0x1 // (DIE 0xb) DW_TAG_compile_unit) -.unalignedInitLong _picoMark_LINES -.unalignedInitWord _picoMark_FUNCTION_END -.unalignedInitWord _picoMark_FUNCTION_BEGIN -// Producer is `picoChip' -.ascii 16#70# 16#69# 16#63# 16#6f# 16#43# 16#68# 16#69# 16#70# 16#00# -.unalignedInitWord 0xcafe // ASM language -.ascii 16#0# // Name. DwarfLib expects this to be present. - -.uleb128 0x2 ;# (DIE DW_TAG_subprogram) - -// FUNCTION NAME GOES HERE. Use `echo name | od -t x1' to get the hex. Each hex -// digit is specified using the format 16#XX# -.ascii 16#5f# 16#61# 16#73# 16#68# 16#6c# 16#73# 16#69# 16#33# 16#0# // Function name `_ashlsi3' -.unalignedInitWord _picoMark_FUNCTION_BEGIN // DW_AT_low_pc -.unalignedInitWord _picoMark_FUNCTION_END // DW_AT_high_pc - -.initByte 0x0 // end of compile unit children. - -_picoMark_DEBUG_INFO_END= - -//============================================================================ -// END OF DWARF -//============================================================================ - -.section .endFile diff --git a/libgcc/config/picochip/ashlsi3.c b/libgcc/config/picochip/ashlsi3.c deleted file mode 100644 index 74344cd2af6..00000000000 --- a/libgcc/config/picochip/ashlsi3.c +++ /dev/null @@ -1,82 +0,0 @@ -/* - -picoChip GCC support for 32-bit shift left. - -Copyright (C) 2003-2014 Free Software Foundation, Inc. -Contributed by Picochip Ltd. -Maintained by Daniel Towner (daniel.towner@picochip.com) - -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, 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/>. */ - -#ifndef PICOCHIP -#error "Intended for compilation for PICOCHIP only." -#endif - -typedef int HItype __attribute__ ((mode (HI))); -typedef unsigned int UHItype __attribute__ ((mode (HI))); -typedef unsigned int USItype __attribute__ ((mode (SI))); - -typedef struct USIstruct { - UHItype low, high; -} USIstruct; - -typedef union USIunion { - USItype l; - USIstruct s; -} USIunion; - -USItype __ashlsi3(USIunion value, HItype count) { - USIunion result; - int temp; - - /* Ignore a zero count until we get into the (count < 16) - clause. This is slightly slower when shifting by zero, but faster - and smaller in all other cases (due to the better scheduling - opportunities available by putting the test near computational - instructions. */ - /* if (count == 0) return value.l; */ - - if (count < 16) { - /* Shift low and high words by the count. */ - result.s.low = value.s.low << count; - result.s.high = value.s.high << count; - - /* There is now a hole in the lower `count' bits of the high - word. Shift the upper `count' bits of the low word into the - high word. This is only required when the count is non-zero. */ - if (count != 0) { - temp = 16 - count; - temp = value.s.low >> temp; - result.s.high |= temp; - } - - } else { - /* Shift the lower word of the source into the upper word of the - result, and zero the result's lower word. */ - count -= 16; - result.s.high = value.s.low << count; - result.s.low = 0; - - } - - return result.l; - -} - diff --git a/libgcc/config/picochip/ashrsi3.S b/libgcc/config/picochip/ashrsi3.S deleted file mode 100644 index 7e4048934db..00000000000 --- a/libgcc/config/picochip/ashrsi3.S +++ /dev/null @@ -1,202 +0,0 @@ -// picoChip ASM file -// -// Support for 32-bit arithmetic shift right. -// -// Copyright (C) 2003-2014 Free Software Foundation, Inc. -// Contributed by Picochip Ltd. -// Maintained by Hariharan Sandanagobalane (hariharan@picochip.com) -// -// 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, 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/>. - -.section .text - -.global ___ashrsi3 -___ashrsi3: -_picoMark_FUNCTION_BEGIN= - -// picoChip Function Prologue : &___ashrsi3 = 0 bytes - - // if (R2 > 15) goto _L2 - SUB.0 15,R2,r15 - JMPLT _L2 -=-> COPY.0 R1,R3 - - LSR.0 R1,R2,R1 // R1 := R1 >> R2 - // if (R2 == 0) goto _L4 - SUB.0 R2,0,r15 - JMPEQ _L4 -=-> LSR.0 R0,R2,R0 // R2 := R0 >> R2 - - SUB.0 16,R2,R4 // R4 := R4 - R2 (HI) - ASR.0 R3,15,R5 // R5 = R1 >>{arith} 15 - LSL.0 R5,R4,R5 // R5 := R5 << R4 - LSL.0 R3,R4,R4 // R4 := R1 << R4 - OR.0 R5,R1,R1 // R3 := R5 IOR R3 (HI) - BRA _L4 - =-> OR.0 R4,R0,R0 // R2 := R4 IOR R0 (HI) -_L2: - ASR.0 R1,15,R1 // R4 = R1 >>{arith} 15 - SUB.0 16,R2,R5 // R5 := R5 - R2 (HI) - LSR.0 R3,R2,R0 // R2 := R1 >> R2 - LSL.0 R1,R5,R5 // R5 := R4 << R5 - OR.0 R5,R0,R5 // R2 := R5 IOR R2 (HI) - SUB.0 R2,16,r15 // R5 := R5 - R2 (HI) - COPYNE R5,R0 -_L4: - JR (R12) // Return to caller - -_picoMark_FUNCTION_END= - -// picoChip Function Epilogue : __ashrsi3 -//============================================================================ -// All DWARF information between this marker, and the END OF DWARF -// marker should be included in the source file. Search for -// FUNCTION_STACK_SIZE_GOES_HERE and FUNCTION NAME GOES HERE, and -// provide the relevant information. Add markers called -// _picoMark_FUNCTION_BEGIN and _picoMark_FUNCTION_END around the -// function in question. -//============================================================================ - -//============================================================================ -// Frame information. -//============================================================================ - -.section .debug_frame -_picoMark_DebugFrame= - -// Common CIE header. -.unalignedInitLong _picoMark_CieEnd-_picoMark_CieBegin -_picoMark_CieBegin= -.unalignedInitLong 0xffffffff -.initByte 0x1 // CIE Version -.ascii 16#0# // CIE Augmentation -.uleb128 0x1 // CIE Code Alignment Factor -.sleb128 2 // CIE Data Alignment Factor -.initByte 0xc // CIE RA Column -.initByte 0xc // DW_CFA_def_cfa -.uleb128 0xd -.uleb128 0x0 -.align 2 -_picoMark_CieEnd= - -// FDE -_picoMark_LSFDE0I900821033007563= -.unalignedInitLong _picoMark_FdeEnd-_picoMark_FdeBegin -_picoMark_FdeBegin= -.unalignedInitLong _picoMark_DebugFrame // FDE CIE offset -.unalignedInitWord _picoMark_FUNCTION_BEGIN // FDE initial location -.unalignedInitWord _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN -.initByte 0xe // DW_CFA_def_cfa_offset -.uleb128 0x0 // <-- FUNCTION_STACK_SIZE_GOES_HERE -.initByte 0x4 // DW_CFA_advance_loc4 -.unalignedInitLong _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN -.initByte 0xe // DW_CFA_def_cfa_offset -.uleb128 0x0 -.align 2 -_picoMark_FdeEnd= - -//============================================================================ -// Abbrevation information. -//============================================================================ - -.section .debug_abbrev -_picoMark_ABBREVIATIONS= - -.section .debug_abbrev - .uleb128 0x1 // (abbrev code) - .uleb128 0x11 // (TAG: DW_TAG_compile_unit) - .initByte 0x1 // DW_children_yes - .uleb128 0x10 // (DW_AT_stmt_list) - .uleb128 0x6 // (DW_FORM_data4) - .uleb128 0x12 // (DW_AT_high_pc) - .uleb128 0x1 // (DW_FORM_addr) - .uleb128 0x11 // (DW_AT_low_pc) - .uleb128 0x1 // (DW_FORM_addr) - .uleb128 0x25 // (DW_AT_producer) - .uleb128 0x8 // (DW_FORM_string) - .uleb128 0x13 // (DW_AT_language) - .uleb128 0x5 // (DW_FORM_data2) - .uleb128 0x3 // (DW_AT_name) - .uleb128 0x8 // (DW_FORM_string) -.initByte 0x0 -.initByte 0x0 - - .uleb128 0x2 ;# (abbrev code) - .uleb128 0x2e ;# (TAG: DW_TAG_subprogram) -.initByte 0x0 ;# DW_children_no - .uleb128 0x3 ;# (DW_AT_name) - .uleb128 0x8 ;# (DW_FORM_string) - .uleb128 0x11 ;# (DW_AT_low_pc) - .uleb128 0x1 ;# (DW_FORM_addr) - .uleb128 0x12 ;# (DW_AT_high_pc) - .uleb128 0x1 ;# (DW_FORM_addr) -.initByte 0x0 -.initByte 0x0 - -.initByte 0x0 - -//============================================================================ -// Line information. DwarfLib requires this to be present, but it can -// be empty. -//============================================================================ - -.section .debug_line -_picoMark_LINES= - -//============================================================================ -// Debug Information -//============================================================================ -.section .debug_info - -//Fixed header. -.unalignedInitLong _picoMark_DEBUG_INFO_END-_picoMark_DEBUG_INFO_BEGIN -_picoMark_DEBUG_INFO_BEGIN= -.unalignedInitWord 0x2 -.unalignedInitLong _picoMark_ABBREVIATIONS -.initByte 0x2 - -// Compile unit information. -.uleb128 0x1 // (DIE 0xb) DW_TAG_compile_unit) -.unalignedInitLong _picoMark_LINES -.unalignedInitWord _picoMark_FUNCTION_END -.unalignedInitWord _picoMark_FUNCTION_BEGIN -// Producer is `picoChip' -.ascii 16#70# 16#69# 16#63# 16#6f# 16#43# 16#68# 16#69# 16#70# 16#00# -.unalignedInitWord 0xcafe // ASM language -.ascii 16#0# // Name. DwarfLib expects this to be present. - -.uleb128 0x2 ;# (DIE DW_TAG_subprogram) - -// FUNCTION NAME GOES HERE. Use `echo name | od -t x1' to get the hex. Each hex -// digit is specified using the format 16#XX# -.ascii 16#5f# 16#61# 16#73# 16#68# 16#72# 16#73# 16#69# 16#33# 16#0# // Function name `_ashrsi3' -.unalignedInitWord _picoMark_FUNCTION_BEGIN // DW_AT_low_pc -.unalignedInitWord _picoMark_FUNCTION_END // DW_AT_high_pc - -.initByte 0x0 // end of compile unit children. - -_picoMark_DEBUG_INFO_END= - -//============================================================================ -// END OF DWARF -//============================================================================ - -.section .endFile -// End of picoChip ASM file diff --git a/libgcc/config/picochip/ashrsi3.c b/libgcc/config/picochip/ashrsi3.c deleted file mode 100644 index 72987ec1881..00000000000 --- a/libgcc/config/picochip/ashrsi3.c +++ /dev/null @@ -1,113 +0,0 @@ -/* - -picoChip GCC support for 32-bit arithmetic shift right. - -Copyright (C) 2003-2014 Free Software Foundation, Inc. -Contributed by Picochip Ltd. -Maintained by Daniel Towner (daniel.towner@picochip.com) - -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, 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/>. */ - -typedef int HItype __attribute__ ((mode (HI))); -typedef unsigned int UHItype __attribute__ ((mode (HI))); -typedef unsigned int USItype __attribute__ ((mode (SI))); - -typedef struct USIstruct { - UHItype low, high; -} USIstruct; - -typedef union USIunion { - USItype l; - USIstruct s; -} USIunion; - -USItype __ashrsi3(USIunion value, HItype count) { - USIunion result; - int temp; - int wordOfSignBits; - - /* Ignore a zero count until we get into the (count < 16) - clause. This is slightly slower when shifting by zero, but faster - and smaller in all other cases (due to the better scheduling - opportunities available by putting the test near computational - instructions. */ - /* if (count == 0) return value.l; */ - - if (count < 16) { - /* Shift low and high words by the count. The high word must use - an arithmetic shift. There is no arithmetic shift-right by - variable, so synthesise it. */ - int signWord; - int reverseCount; - - /* Shift low and high parts by the count. The upper word now has - invalid signed bits. */ - result.s.low = value.s.low >> count; - result.s.high = value.s.high >> count; - - if (count != 0) { - - reverseCount = 16 - count; - - /* Given a word of sign bits, shift back left to create the - destination sign bits. */ - wordOfSignBits = __builtin_asri(value.s.high, 15); - signWord = wordOfSignBits << reverseCount; - result.s.high |= signWord; - - /* There is now a hole in the upper `count' bits of the low - word. Shift the lower `count' bits of the upper word into the - low word. */ - temp = value.s.high << reverseCount; - result.s.low |= temp; - } - - } else { - int signWord; - - /* Shift is greater than one word, so top word will always be set - to sign bits, and bottom word will be shifted from top word. */ - result.s.low = value.s.high >> count; - result.s.high = __builtin_asri(value.s.high, 15); - - if (count != 16) { - - /* Shift the upper word of the source into the lower word of the - result. Arithmetically shift the upper word as well, to retain - the sign. This shift must be synthesised, as no such shift - exists in the instruction set. */ - int signWord; - - - /* Given a complete word of sign-bits, shift this back left to - create the destination sign bits. */ - signWord = result.s.high << (16 - count); - // signWord = wordOfSignBits << (16 - count); - - /* Insert the sign bits to the result's low word. */ - result.s.low |= signWord; - - } - - } - - return result.l; - -} diff --git a/libgcc/config/picochip/clzsi2.S b/libgcc/config/picochip/clzsi2.S deleted file mode 100644 index c127a02f111..00000000000 --- a/libgcc/config/picochip/clzsi2.S +++ /dev/null @@ -1,189 +0,0 @@ -// Copyright (C) 2008-2014 Free Software Foundation, Inc. -// -// This file is part of GCC. -// -// GCC 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, or (at your option) any later -// version. -// -// GCC 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/>. - -// picoChip ASM file -//.file "clzsi2.S" - -.section .text - -.global __clzsi2 -__clzsi2: -_picoMark_FUNCTION_BEGIN= - -// picoChip Function Prologue : &__clzsi2 = 0 bytes - - // What value should be operated on? If the top word is empty - // then count the bits in the bottom word, and add 16. If the - // top word is not empty, then count the bits in the top word. - - // R4 stores the constant 0 - - sub.0 R1,0,r15 \ copy.1 16,r2 - copyeq r0,r1 - copyne 0,r2 - - // R1 now stores value to count, and R2 stores current bit offset. - sbc r1,r0 - asr.0 r1,15,r15 \ add.1 r0,1,r0 - jr (lr) \ copyne 0,r0 -=-> add.0 r0,r2,r0 - -_picoMark_FUNCTION_END= - -// picoChip Function Epilogue : __clzsi2 - -//============================================================================ -// All DWARF information between this marker, and the END OF DWARF -// marker should be included in the source file. Search for -// FUNCTION_STACK_SIZE_GOES_HERE and FUNCTION NAME GOES HERE, and -// provide the relevant information. Add markers called -// _picoMark_FUNCTION_BEGIN and _picoMark_FUNCTION_END around the -// function in question. -//============================================================================ - -//============================================================================ -// Frame information. -//============================================================================ - -.section .debug_frame -_picoMark_DebugFrame= - -// Common CIE header. -.unalignedInitLong _picoMark_CieEnd-_picoMark_CieBegin -_picoMark_CieBegin= -.unalignedInitLong 0xffffffff -.initByte 0x1 // CIE Version -.ascii 16#0# // CIE Augmentation -.uleb128 0x1 // CIE Code Alignment Factor -.sleb128 2 // CIE Data Alignment Factor -.initByte 0xc // CIE RA Column -.initByte 0xc // DW_CFA_def_cfa -.uleb128 0xd -.uleb128 0x0 -.align 2 -_picoMark_CieEnd= - -// FDE -_picoMark_LSFDE0I900821033007563= -.unalignedInitLong _picoMark_FdeEnd-_picoMark_FdeBegin -_picoMark_FdeBegin= -.unalignedInitLong _picoMark_DebugFrame // FDE CIE offset -.unalignedInitWord _picoMark_FUNCTION_BEGIN // FDE initial location -.unalignedInitWord _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN -.initByte 0xe // DW_CFA_def_cfa_offset -.uleb128 0x0 // <-- FUNCTION_STACK_SIZE_GOES_HERE -.initByte 0x4 // DW_CFA_advance_loc4 -.unalignedInitLong _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN -.initByte 0xe // DW_CFA_def_cfa_offset -.uleb128 0x0 -.align 2 -_picoMark_FdeEnd= - -//============================================================================ -// Abbrevation information. -//============================================================================ - -.section .debug_abbrev -_picoMark_ABBREVIATIONS= - -.section .debug_abbrev - .uleb128 0x1 // (abbrev code) - .uleb128 0x11 // (TAG: DW_TAG_compile_unit) - .initByte 0x1 // DW_children_yes - .uleb128 0x10 // (DW_AT_stmt_list) - .uleb128 0x6 // (DW_FORM_data4) - .uleb128 0x12 // (DW_AT_high_pc) - .uleb128 0x1 // (DW_FORM_addr) - .uleb128 0x11 // (DW_AT_low_pc) - .uleb128 0x1 // (DW_FORM_addr) - .uleb128 0x25 // (DW_AT_producer) - .uleb128 0x8 // (DW_FORM_string) - .uleb128 0x13 // (DW_AT_language) - .uleb128 0x5 // (DW_FORM_data2) - .uleb128 0x3 // (DW_AT_name) - .uleb128 0x8 // (DW_FORM_string) -.initByte 0x0 -.initByte 0x0 - - .uleb128 0x2 ;# (abbrev code) - .uleb128 0x2e ;# (TAG: DW_TAG_subprogram) -.initByte 0x0 ;# DW_children_no - .uleb128 0x3 ;# (DW_AT_name) - .uleb128 0x8 ;# (DW_FORM_string) - .uleb128 0x11 ;# (DW_AT_low_pc) - .uleb128 0x1 ;# (DW_FORM_addr) - .uleb128 0x12 ;# (DW_AT_high_pc) - .uleb128 0x1 ;# (DW_FORM_addr) -.initByte 0x0 -.initByte 0x0 - -.initByte 0x0 - -//============================================================================ -// Line information. DwarfLib requires this to be present, but it can -// be empty. -//============================================================================ - -.section .debug_line -_picoMark_LINES= - -//============================================================================ -// Debug Information -//============================================================================ -.section .debug_info - -//Fixed header. -.unalignedInitLong _picoMark_DEBUG_INFO_END-_picoMark_DEBUG_INFO_BEGIN -_picoMark_DEBUG_INFO_BEGIN= -.unalignedInitWord 0x2 -.unalignedInitLong _picoMark_ABBREVIATIONS -.initByte 0x2 - -// Compile unit information. -.uleb128 0x1 // (DIE 0xb) DW_TAG_compile_unit) -.unalignedInitLong _picoMark_LINES -.unalignedInitWord _picoMark_FUNCTION_END -.unalignedInitWord _picoMark_FUNCTION_BEGIN -// Producer is `picoChip' -.ascii 16#70# 16#69# 16#63# 16#6f# 16#43# 16#68# 16#69# 16#70# 16#00# -.unalignedInitWord 0xcafe // ASM language -.ascii 16#0# // Name. DwarfLib expects this to be present. - -.uleb128 0x2 ;# (DIE DW_TAG_subprogram) - -// FUNCTION NAME GOES HERE. Use `echo name | od -t x1' to get the hex. Each hex -// digit is specified using the format 16#XX# -.ascii 16#5F# 16#63# 16#6C# 16#7A# 16#73# 16#69# 16#32# 16#0# // Function name `_clzsi2' -.unalignedInitWord _picoMark_FUNCTION_BEGIN // DW_AT_low_pc -.unalignedInitWord _picoMark_FUNCTION_END // DW_AT_high_pc - -.initByte 0x0 // end of compile unit children. - -_picoMark_DEBUG_INFO_END= - -//============================================================================ -// END OF DWARF -//============================================================================ - -.section .endFile -// End of picoChip ASM file diff --git a/libgcc/config/picochip/cmpsi2.S b/libgcc/config/picochip/cmpsi2.S deleted file mode 100644 index ebec5882871..00000000000 --- a/libgcc/config/picochip/cmpsi2.S +++ /dev/null @@ -1,212 +0,0 @@ -// picoChip ASM file -//.file "ucmpsi2.c" -// -// Support for 32-bit signed compare. -// -// Copyright (C) 2003-2014 Free Software Foundation, Inc. -// Contributed by Picochip Ltd. -// Maintained by Daniel Towner (daniel.towner@picochip.com) -// -// 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, 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/>. - -// Compiled from the following, and then hand optimised. -// -// int __cmpsi2 (USItype x, USItype y) -// { -// -// SIunion lx; lx.l = x; -// SIunion ly; ly.l = y; -// -// if (lx.s.high < ly.s.high) -// return 0; -// else if (lx.s.high > ly.s.high) -// return 2; -// if (lx.s.low < ly.s.low) -// return 0; -// else if (lx.s.low > ly.s.low) -// return 2; -// return 1; -// } - -.section .text - -.align 8 -.global ___cmpsi2 -___cmpsi2: -_picoMark_FUNCTION_BEGIN= - -// picoChip Function Prologue : &___cmpsi2 = 0 bytes - - SUB.0 R1,R3,r15 - - BLT _L1 -=-> SUB.0 R3,R1,r15 \ COPY.1 0,R5 - - BLT _L1 -=-> SUB.0 R0,R2,r15 \ COPY.1 2,R5 - - BLO _L1 -=-> SUB.0 R2,R0,r15 \ COPY.1 0,R5 - - BLO _L1 -=-> COPY.0 2,R5 - - COPY.0 1,R5 -_L1: - JR (R12) -=-> COPY.0 R5,R0 - -_picoMark_FUNCTION_END= -// picoChip Function Epilogue : __cmpsi2 -//============================================================================ -// All DWARF information between this marker, and the END OF DWARF -// marker should be included in the source file. Search for -// FUNCTION_STACK_SIZE_GOES_HERE and FUNCTION NAME GOES HERE, and -// provide the relevant information. Add markers called -// _picoMark_FUNCTION_BEGIN and _picoMark_FUNCTION_END around the -// function in question. -//============================================================================ - -//============================================================================ -// Frame information. -//============================================================================ - -.section .debug_frame -_picoMark_DebugFrame= - -// Common CIE header. -.unalignedInitLong _picoMark_CieEnd-_picoMark_CieBegin -_picoMark_CieBegin= -.unalignedInitLong 0xffffffff -.initByte 0x1 // CIE Version -.ascii 16#0# // CIE Augmentation -.uleb128 0x1 // CIE Code Alignment Factor -.sleb128 2 // CIE Data Alignment Factor -.initByte 0xc // CIE RA Column -.initByte 0xc // DW_CFA_def_cfa -.uleb128 0xd -.uleb128 0x0 -.align 2 -_picoMark_CieEnd= - -// FDE -_picoMark_LSFDE0I900821033007563= -.unalignedInitLong _picoMark_FdeEnd-_picoMark_FdeBegin -_picoMark_FdeBegin= -.unalignedInitLong _picoMark_DebugFrame // FDE CIE offset -.unalignedInitWord _picoMark_FUNCTION_BEGIN // FDE initial location -.unalignedInitWord _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN -.initByte 0xe // DW_CFA_def_cfa_offset -.uleb128 0x0 // <-- FUNCTION_STACK_SIZE_GOES_HERE -.initByte 0x4 // DW_CFA_advance_loc4 -.unalignedInitLong _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN -.initByte 0xe // DW_CFA_def_cfa_offset -.uleb128 0x0 -.align 2 -_picoMark_FdeEnd= - -//============================================================================ -// Abbrevation information. -//============================================================================ - -.section .debug_abbrev -_picoMark_ABBREVIATIONS= - -.section .debug_abbrev - .uleb128 0x1 // (abbrev code) - .uleb128 0x11 // (TAG: DW_TAG_compile_unit) - .initByte 0x1 // DW_children_yes - .uleb128 0x10 // (DW_AT_stmt_list) - .uleb128 0x6 // (DW_FORM_data4) - .uleb128 0x12 // (DW_AT_high_pc) - .uleb128 0x1 // (DW_FORM_addr) - .uleb128 0x11 // (DW_AT_low_pc) - .uleb128 0x1 // (DW_FORM_addr) - .uleb128 0x25 // (DW_AT_producer) - .uleb128 0x8 // (DW_FORM_string) - .uleb128 0x13 // (DW_AT_language) - .uleb128 0x5 // (DW_FORM_data2) - .uleb128 0x3 // (DW_AT_name) - .uleb128 0x8 // (DW_FORM_string) -.initByte 0x0 -.initByte 0x0 - - .uleb128 0x2 ;# (abbrev code) - .uleb128 0x2e ;# (TAG: DW_TAG_subprogram) -.initByte 0x0 ;# DW_children_no - .uleb128 0x3 ;# (DW_AT_name) - .uleb128 0x8 ;# (DW_FORM_string) - .uleb128 0x11 ;# (DW_AT_low_pc) - .uleb128 0x1 ;# (DW_FORM_addr) - .uleb128 0x12 ;# (DW_AT_high_pc) - .uleb128 0x1 ;# (DW_FORM_addr) -.initByte 0x0 -.initByte 0x0 - -.initByte 0x0 - -//============================================================================ -// Line information. DwarfLib requires this to be present, but it can -// be empty. -//============================================================================ - -.section .debug_line -_picoMark_LINES= - -//============================================================================ -// Debug Information -//============================================================================ -.section .debug_info - -//Fixed header. -.unalignedInitLong _picoMark_DEBUG_INFO_END-_picoMark_DEBUG_INFO_BEGIN -_picoMark_DEBUG_INFO_BEGIN= -.unalignedInitWord 0x2 -.unalignedInitLong _picoMark_ABBREVIATIONS -.initByte 0x2 - -// Compile unit information. -.uleb128 0x1 // (DIE 0xb) DW_TAG_compile_unit) -.unalignedInitLong _picoMark_LINES -.unalignedInitWord _picoMark_FUNCTION_END -.unalignedInitWord _picoMark_FUNCTION_BEGIN -// Producer is `picoChip' -.ascii 16#70# 16#69# 16#63# 16#6f# 16#43# 16#68# 16#69# 16#70# 16#00# -.unalignedInitWord 0xcafe // ASM language -.ascii 16#0# // Name. DwarfLib expects this to be present. - -.uleb128 0x2 ;# (DIE DW_TAG_subprogram) - -// FUNCTION NAME GOES HERE. Use `echo name | od -t x1' to get the hex. Each hex -// digit is specified using the format 16#XX# -.ascii 16#5f# 16#5f# 16#63# 16#6d# 16#70# 16#73# 16#69# 16#32# 16#0# // Function name `__cmpsi2' -.unalignedInitWord _picoMark_FUNCTION_BEGIN // DW_AT_low_pc -.unalignedInitWord _picoMark_FUNCTION_END // DW_AT_high_pc - -.initByte 0x0 // end of compile unit children. - -_picoMark_DEBUG_INFO_END= - -//============================================================================ -// END OF DWARF -//============================================================================ - -.section .endFile -// End of picoChip ASM file diff --git a/libgcc/config/picochip/divmod15.S b/libgcc/config/picochip/divmod15.S deleted file mode 100644 index 487b1546f7f..00000000000 --- a/libgcc/config/picochip/divmod15.S +++ /dev/null @@ -1,261 +0,0 @@ -// picoChip ASM file -// -// Support for 16-bit unsigned division/modulus. -// -// Copyright (C) 2003-2014 Free Software Foundation, Inc. -// Contributed by Picochip Ltd. -// Maintained by Daniel Towner (daniel.towner@picochip.com) -// -// 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, 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/>. - -.section .text - -.global __divmod15 -__divmod15: -_picoMark_FUNCTION_BEGIN= - -// picoChip Function Prologue : &__divmod15 = 0 bytes - - // The picoChip instruction set has a divstep instruction which - // is used to perform one iteration of a binary division algorithm. - // The instruction allows 16-bit signed division to be implemented. - // It does not directly allow 16-bit unsigned division to be - // implemented. Thus, this function pulls out the common division - // iteration for 15-bits unsigned, and then special wrappers - // provide the logic to change this into a 16-bit signed or - // unsigned division, as appropriate. This allows the two - // versions of division to share a common implementation, reducing - // code size when the two are used together. It also reduces - // the maintenance overhead. - - // Input: - // r0 - dividend - // r1 - divisor - // Output: - // r0 - quotient - // r1 - remainder - // R5 is unused - - // Check for special cases. The emphasis is on detecting these as - // quickly as possible, so that the main division can be started. If - // the user requests division by one, division by self, and so on - // then they will just have to accept that this won't be particularly - // quick (relatively), whereas a real division (e.g., dividing a - // large value by a small value) will run as fast as possible - // (i.e., special case detection should not slow down the common case) - // - // Special cases to consider: - // - // Division by zero. - // Division of zero. - // Inputs are equal - // Divisor is bigger than dividend - // Division by power of two (can be shifted instead). - // Division by 1 (special case of power of two division) - // - // Division/modulus by zero is undefined (ISO C:6.5.5), so - // don't bother handling this special case. - // - // The special cases of division by a power of 2 are ignored, since - // they cause the general case to slow down. Omitting these - // special cases also reduces code size considerably. - - // Handle divisor >= dividend separately. Note that this also handles - // the case where the dividend is zero. Note that the flags must be - // preserved, since they are also used at the branch destination. - sub.0 r1,r0,r15 - sbc r0,r2 \ bge divisorGeDividend -=-> sbc r1,r4 - - // Compute the shift count. The amount by which the divisor - // must be shifted left to be aligned with the dividend. - sub.0 r4,r2,r3 - - // Align the divisor to the dividend. Execute a divstep (since at - // least one will always be executed). Skip the remaining loop - // if the shift count is zero. - lsl.0 r1,r3,r1 \ beq skipLoop -=-> divstep r0,r1 \ add.1 r3,1,r2 - - // Execute the divstep loop until temp is 0. This assumes that the - // loop count is at least one. - sub.0 r3,1,r4 -divLoop: - divstep r0,r1 \ bne divLoop -=-> sub.0 r4,1,r4 - -skipLoop: - - // The top bits of the result are the remainder. The bottom - // bits are the quotient. - lsr.0 r0,r2,r1 \ sub.1 16,r2,r4 - jr (lr ) \ lsl.0 r0,r4,r0 -=-> lsr.0 r0,r4,r0 - -// Special case. - -divisorGeDividend: - // The divisor is greater than or equal to the dividend. The flags - // indicate which of these alternatives it is. The COPYNE can be used - // to set the result appropriately, without introducing any more - // branches. - copy.0 r0,r1 \ copy.1 0,r0 - jr (lr) \ copyeq r0,r1 -=-> copyeq 1,r0 - -_picoMark_FUNCTION_END= -// picoChip Function Epilogue : __divmod15 - - -//============================================================================ -// All DWARF information between this marker, and the END OF DWARF -// marker should be included in the source file. Search for -// FUNCTION_STACK_SIZE_GOES_HERE and FUNCTION NAME GOES HERE, and -// provide the relevant information. Add markers called -// _picoMark_FUNCTION_BEGIN and _picoMark_FUNCTION_END around the -// function in question. -//============================================================================ - -//============================================================================ -// Frame information. -//============================================================================ - -.section .debug_frame -_picoMark_DebugFrame= - -// Common CIE header. -.unalignedInitLong _picoMark_CieEnd-_picoMark_CieBegin -_picoMark_CieBegin= -.unalignedInitLong 0xffffffff -.initByte 0x1 // CIE Version -.ascii 16#0# // CIE Augmentation -.uleb128 0x1 // CIE Code Alignment Factor -.sleb128 2 // CIE Data Alignment Factor -.initByte 0xc // CIE RA Column -.initByte 0xc // DW_CFA_def_cfa -.uleb128 0xd -.uleb128 0x0 -.align 2 -_picoMark_CieEnd= - -// FDE -_picoMark_LSFDE0I900821033007563= -.unalignedInitLong _picoMark_FdeEnd-_picoMark_FdeBegin -_picoMark_FdeBegin= -.unalignedInitLong _picoMark_DebugFrame // FDE CIE offset -.unalignedInitWord _picoMark_FUNCTION_BEGIN // FDE initial location -.unalignedInitWord _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN -.initByte 0xe // DW_CFA_def_cfa_offset -.uleb128 0x0 // <-- FUNCTION_STACK_SIZE_GOES_HERE -.initByte 0x4 // DW_CFA_advance_loc4 -.unalignedInitLong _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN -.initByte 0xe // DW_CFA_def_cfa_offset -.uleb128 0x0 -.align 2 -_picoMark_FdeEnd= - -//============================================================================ -// Abbrevation information. -//============================================================================ - -.section .debug_abbrev -_picoMark_ABBREVIATIONS= - -.section .debug_abbrev - .uleb128 0x1 // (abbrev code) - .uleb128 0x11 // (TAG: DW_TAG_compile_unit) - .initByte 0x1 // DW_children_yes - .uleb128 0x10 // (DW_AT_stmt_list) - .uleb128 0x6 // (DW_FORM_data4) - .uleb128 0x12 // (DW_AT_high_pc) - .uleb128 0x1 // (DW_FORM_addr) - .uleb128 0x11 // (DW_AT_low_pc) - .uleb128 0x1 // (DW_FORM_addr) - .uleb128 0x25 // (DW_AT_producer) - .uleb128 0x8 // (DW_FORM_string) - .uleb128 0x13 // (DW_AT_language) - .uleb128 0x5 // (DW_FORM_data2) - .uleb128 0x3 // (DW_AT_name) - .uleb128 0x8 // (DW_FORM_string) -.initByte 0x0 -.initByte 0x0 - - .uleb128 0x2 ;# (abbrev code) - .uleb128 0x2e ;# (TAG: DW_TAG_subprogram) -.initByte 0x0 ;# DW_children_no - .uleb128 0x3 ;# (DW_AT_name) - .uleb128 0x8 ;# (DW_FORM_string) - .uleb128 0x11 ;# (DW_AT_low_pc) - .uleb128 0x1 ;# (DW_FORM_addr) - .uleb128 0x12 ;# (DW_AT_high_pc) - .uleb128 0x1 ;# (DW_FORM_addr) -.initByte 0x0 -.initByte 0x0 - -.initByte 0x0 - -//============================================================================ -// Line information. DwarfLib requires this to be present, but it can -// be empty. -//============================================================================ - -.section .debug_line -_picoMark_LINES= - -//============================================================================ -// Debug Information -//============================================================================ -.section .debug_info - -//Fixed header. -.unalignedInitLong _picoMark_DEBUG_INFO_END-_picoMark_DEBUG_INFO_BEGIN -_picoMark_DEBUG_INFO_BEGIN= -.unalignedInitWord 0x2 -.unalignedInitLong _picoMark_ABBREVIATIONS -.initByte 0x2 - -// Compile unit information. -.uleb128 0x1 // (DIE 0xb) DW_TAG_compile_unit) -.unalignedInitLong _picoMark_LINES -.unalignedInitWord _picoMark_FUNCTION_END -.unalignedInitWord _picoMark_FUNCTION_BEGIN -// Producer is `picoChip' -.ascii 16#70# 16#69# 16#63# 16#6f# 16#43# 16#68# 16#69# 16#70# 16#00# -.unalignedInitWord 0xcafe // ASM language -.ascii 16#0# // Name. DwarfLib expects this to be present. - -.uleb128 0x2 ;# (DIE DW_TAG_subprogram) - -// FUNCTION NAME GOES HERE. Use `echo name | od -t x1' to get the hex. Each hex -// digit is specified using the format 16#XX# -.ascii 16#5f# 16#64# 16#69# 16#76# 16#6d# 16#6f# 16#64# 16#31# 16#35# 16#0# // Function name `_divmod15' -.unalignedInitWord _picoMark_FUNCTION_BEGIN // DW_AT_low_pc -.unalignedInitWord _picoMark_FUNCTION_END // DW_AT_high_pc - -.initByte 0x0 // end of compile unit children. - -_picoMark_DEBUG_INFO_END= - -//============================================================================ -// END OF DWARF -//============================================================================ - -.section .endFile -// End of picoChip ASM file diff --git a/libgcc/config/picochip/divmodhi4.S b/libgcc/config/picochip/divmodhi4.S deleted file mode 100644 index 55dd71b6243..00000000000 --- a/libgcc/config/picochip/divmodhi4.S +++ /dev/null @@ -1,246 +0,0 @@ -// picoChip ASM file -// -// Support for 16-bit signed division/modulus. -// -// Copyright (C) 2003-2014 Free Software Foundation, Inc. -// Contributed by Picochip Ltd. -// Maintained by Daniel Towner (daniel.towner@picochip.com) -// -// 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, 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/>. - -.section .text - -.align 8 -.global __divmodhi4 -__divmodhi4: -_picoMark_FUNCTION_BEGIN= - -// picoChip Function Prologue : &__divmodhi4 = 4 bytes - - // 16-bit signed division. Most of the special cases are dealt - // with by the 15-bit signed division library (e.g., division by - // zero, division by 1, and so on). This wrapper simply inverts - // any negative inputs, calls the 15-bit library, and flips any - // results as necessary. The - // only special cases to be handled here are where either the - // divisor or the dividend are the maximum negative values. - - // Encode r5 with a bit pattern which indicates whether the - // outputs of the division must be negated. The MSB will be set - // to the sign of the dividend (which controls the remainder's - // sign), while the LSB will store the XOR of the two signs, - // which indicates the quotient's sign. R5 is not modified by the - // 15-bit divmod routine. - sub.0 r1,16#8000#,r15 \ asr.1 r0,15,r4 - beq divisorIsLargestNegative \ lsr.0 r1,15,r3 -=-> sub.0 r0,16#8000#,r15 \ xor.1 r3,r4,r5 - - // Handle least negative dividend with a special case. Note that the - // absolute value of the divisor is also computed here. - add.0 [asr r1,15],r1,r3 \ beq dividendIsLargestNegative -=-> xor.0 [asr r1,15],r3,r1 \ stw lr,(fp)-1 - - // Compute the absolute value of the dividend, and call the main - // divide routine. - add.0 r4,r0,r2 \ jl (&__divmod15) // fn_call &__divmod15 -=-> xor.0 r4,r2,r0 - -handleNegatedResults: - // Speculatively store the negation of the results. - sub.0 0,r0,r2 \ sub.1 0,r1,r3 - - // Does the quotient need negating? The LSB indicates this. - and.0 r5,1,r15 \ ldw (fp)-1,lr - copyne r2,r0 - - asr.0 r5,15,r15 \ jr (lr) -=-> copyne r3,r1 - -dividendIsLargestNegative: - - // Divide the constant -32768. Use the Hacker's Delight - // algorithm (i.e., ((dividend / 2) / divisor) * 2) gives - // approximate answer). This code is a special case, so no - // great effort is made to make it fast, only to make it - // small. - - lsr.0 r0,1,r0 \ jl (&__divmod15) // fn_call &__divmod15 -=-> stw r1,(fp)-2 - - // Load the original divisor, and compute the new quotient and - // remainder. - lsl.0 r0,1,r0 \ ldw (fp)-2,r3 - lsl.0 r1,1,r1 // Fill stall slot - - // The error in the quotient is 0 or 1. The error can be determined - // by comparing the remainder to the original divisor. If the - // remainder is bigger, then an error of 1 has been introduced, - // which must be fixed. - sub.0 r1,r3,r15 - blo noCompensationForError -=-> nop - add.0 r0,1,r0 \ sub.1 r1,r3,r1 -noCompensationForError: - bra handleNegatedResults -=-> nop - -divisorIsLargestNegative: - // The flags indicate whether the dividend is also the maximum negative - copy.0 r0,r1 \ copy.1 0,r0 - copyeq r0,r1 \ jr (lr) -=-> copyeq 1,r0 - -_picoMark_FUNCTION_END= -// picoChip Function Epilogue : __divmodhi4 - - -//============================================================================ -// All DWARF information between this marker, and the END OF DWARF -// marker should be included in the source file. Search for -// FUNCTION_STACK_SIZE_GOES_HERE and FUNCTION NAME GOES HERE, and -// provide the relevant information. Add markers called -// _picoMark_FUNCTION_BEGIN and _picoMark_FUNCTION_END around the -// function in question. -//============================================================================ - -//============================================================================ -// Frame information. -//============================================================================ - -.section .debug_frame -_picoMark_DebugFrame= - -// Common CIE header. -.unalignedInitLong _picoMark_CieEnd-_picoMark_CieBegin -_picoMark_CieBegin= -.unalignedInitLong 0xffffffff -.initByte 0x1 // CIE Version -.ascii 16#0# // CIE Augmentation -.uleb128 0x1 // CIE Code Alignment Factor -.sleb128 2 // CIE Data Alignment Factor -.initByte 0xc // CIE RA Column -.initByte 0xc // DW_CFA_def_cfa -.uleb128 0xd -.uleb128 0x0 -.align 2 -_picoMark_CieEnd= - -// FDE -_picoMark_LSFDE0I900821033007563= -.unalignedInitLong _picoMark_FdeEnd-_picoMark_FdeBegin -_picoMark_FdeBegin= -.unalignedInitLong _picoMark_DebugFrame // FDE CIE offset -.unalignedInitWord _picoMark_FUNCTION_BEGIN // FDE initial location -.unalignedInitWord _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN -.initByte 0xe // DW_CFA_def_cfa_offset -.uleb128 0x4 // <-- FUNCTION_STACK_SIZE_GOES_HERE -.initByte 0x4 // DW_CFA_advance_loc4 -.unalignedInitLong _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN -.initByte 0xe // DW_CFA_def_cfa_offset -.uleb128 0x0 -.align 2 -_picoMark_FdeEnd= - -//============================================================================ -// Abbrevation information. -//============================================================================ - -.section .debug_abbrev -_picoMark_ABBREVIATIONS= - -.section .debug_abbrev - .uleb128 0x1 // (abbrev code) - .uleb128 0x11 // (TAG: DW_TAG_compile_unit) - .initByte 0x1 // DW_children_yes - .uleb128 0x10 // (DW_AT_stmt_list) - .uleb128 0x6 // (DW_FORM_data4) - .uleb128 0x12 // (DW_AT_high_pc) - .uleb128 0x1 // (DW_FORM_addr) - .uleb128 0x11 // (DW_AT_low_pc) - .uleb128 0x1 // (DW_FORM_addr) - .uleb128 0x25 // (DW_AT_producer) - .uleb128 0x8 // (DW_FORM_string) - .uleb128 0x13 // (DW_AT_language) - .uleb128 0x5 // (DW_FORM_data2) - .uleb128 0x3 // (DW_AT_name) - .uleb128 0x8 // (DW_FORM_string) -.initByte 0x0 -.initByte 0x0 - - .uleb128 0x2 ;# (abbrev code) - .uleb128 0x2e ;# (TAG: DW_TAG_subprogram) -.initByte 0x0 ;# DW_children_no - .uleb128 0x3 ;# (DW_AT_name) - .uleb128 0x8 ;# (DW_FORM_string) - .uleb128 0x11 ;# (DW_AT_low_pc) - .uleb128 0x1 ;# (DW_FORM_addr) - .uleb128 0x12 ;# (DW_AT_high_pc) - .uleb128 0x1 ;# (DW_FORM_addr) -.initByte 0x0 -.initByte 0x0 - -.initByte 0x0 - -//============================================================================ -// Line information. DwarfLib requires this to be present, but it can -// be empty. -//============================================================================ - -.section .debug_line -_picoMark_LINES= - -//============================================================================ -// Debug Information -//============================================================================ -.section .debug_info - -//Fixed header. -.unalignedInitLong _picoMark_DEBUG_INFO_END-_picoMark_DEBUG_INFO_BEGIN -_picoMark_DEBUG_INFO_BEGIN= -.unalignedInitWord 0x2 -.unalignedInitLong _picoMark_ABBREVIATIONS -.initByte 0x2 - -// Compile unit information. -.uleb128 0x1 // (DIE 0xb) DW_TAG_compile_unit) -.unalignedInitLong _picoMark_LINES -.unalignedInitWord _picoMark_FUNCTION_END -.unalignedInitWord _picoMark_FUNCTION_BEGIN -// Producer is `picoChip' -.ascii 16#70# 16#69# 16#63# 16#6f# 16#43# 16#68# 16#69# 16#70# 16#00# -.unalignedInitWord 0xcafe // ASM language -.ascii 16#0# // Name. DwarfLib expects this to be present. - -.uleb128 0x2 ;# (DIE DW_TAG_subprogram) - -// FUNCTION NAME GOES HERE. Use `echo name | od -t x1' to get the hex. Each hex -// digit is specified using the format 16#XX# -.ascii 16#5f# 16#64# 16#69# 16#76# 16#6d# 16#6f# 16#64# 16#68# 16#69# 16#34# 16#0# // Function name `_divmodhi4' -.unalignedInitWord _picoMark_FUNCTION_BEGIN // DW_AT_low_pc -.unalignedInitWord _picoMark_FUNCTION_END // DW_AT_high_pc - -.initByte 0x0 // end of compile unit children. - -_picoMark_DEBUG_INFO_END= - -//============================================================================ -// END OF DWARF -//============================================================================ -.section .endFile diff --git a/libgcc/config/picochip/divmodsi4.S b/libgcc/config/picochip/divmodsi4.S deleted file mode 100644 index 326c3adba18..00000000000 --- a/libgcc/config/picochip/divmodsi4.S +++ /dev/null @@ -1,233 +0,0 @@ -// picoChip ASM file -// -// Support for 32-bit signed division/modulus. -// -// Copyright (C) 2003-2014 Free Software Foundation, Inc. -// Contributed by Picochip Ltd. -// Maintained by Daniel Towner (daniel.towner@picochip.com) -// -// 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, 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/>. - -.section .text - -.align 8 -.global __divmodsi4 -__divmodsi4: -_picoMark_FUNCTION_BEGIN= -// picoChip Function Prologue : &__divmodsi4 = 8 bytes - - // Note: optimising for size is preferred over optimising for speed. - - // Note: the frame is setup throughout the following instructions, - // and is complete at the point the udivmodsi4 function is called. - - // Note that R9 is encoded with a pattern which indicates - // whether the remainder and quotient should be negated on - // completion. The MSB is set to the sign of the dividend - // (i.e., the sign of the remainder), while the LSB encodes - // the XOR of the two input's signs (i.e., the sign of the - // quotient. - - // If dividend is negative, invert the dividend and flag. - ASR.0 r1,15,r4 - BEQ dividendNotNegative -=-> STL R[9:8],(FP)-2 - - // Dividend is negative - negate dividend. - SUB.0 0,R0,R0 - SUBB.0 0,R1,R1 - -dividendNotNegative: - - // If divisor is negative, invert the divisor. - AND.0 [lsr r3,15],1,r5 - SUB.0 R3,0, r15 - BGE divisorNotNegative -=-> XOR.0 r4,r5,r9 - - // Divisor is negative - negate divisor. - SUB.0 0,R2,R2 - SUBB.0 0,R3,R3 - -divisorNotNegative: - - STL R[13:12],(FP)-1 \ JL (&__udivmodsi4) -=-> SUB.0 FP,8,FP // udivmodsi expects the frame to be valid still. - - // The LSB of R9 indicates whether the quotient should be negated. - AND.0 r9,1,r15 - BEQ skipQuotientNegation -=-> LDL (FP)1,R[13:12] // Convenient point to restore link/fp - - SUB.0 0,R4,R4 - SUBB.0 0,R5,R5 - -skipQuotientNegation: - - // The MSB of R9 indicates whether the remainder should be negated. - ASR.0 R9,15,r15 - BEQ epilogue - - SUB.0 0,R6,R6 - SUBB.0 0,R7,R7 - -epilogue: - - JR (R12) -=-> LDL (FP)-2,R[9:8] - -_picoMark_FUNCTION_END= -// picoChip Function Epilogue : __divmodsi4 - -//============================================================================ -// All DWARF information between this marker, and the END OF DWARF -// marker should be included in the source file. Search for -// FUNCTION_STACK_SIZE_GOES_HERE and FUNCTION NAME GOES HERE, and -// provide the relevant information. Add markers called -// _picoMark_FUNCTION_BEGIN and _picoMark_FUNCTION_END around the -// function in question. -//============================================================================ - -//============================================================================ -// Frame information. -//============================================================================ - -.section .debug_frame -_picoMark_DebugFrame= - -// Common CIE header. -.unalignedInitLong _picoMark_CieEnd-_picoMark_CieBegin -_picoMark_CieBegin= -.unalignedInitLong 0xffffffff -.initByte 0x1 // CIE Version -.ascii 16#0# // CIE Augmentation -.uleb128 0x1 // CIE Code Alignment Factor -.sleb128 2 // CIE Data Alignment Factor -.initByte 0xc // CIE RA Column -.initByte 0xc // DW_CFA_def_cfa -.uleb128 0xd -.uleb128 0x0 -.align 2 -_picoMark_CieEnd= - -// FDE -_picoMark_LSFDE0I900821033007563= -.unalignedInitLong _picoMark_FdeEnd-_picoMark_FdeBegin -_picoMark_FdeBegin= -.unalignedInitLong _picoMark_DebugFrame // FDE CIE offset -.unalignedInitWord _picoMark_FUNCTION_BEGIN // FDE initial location -.unalignedInitWord _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN -.initByte 0xe // DW_CFA_def_cfa_offset -.uleb128 0x8 // <-- FUNCTION_STACK_SIZE_GOES_HERE -.initByte 0x4 // DW_CFA_advance_loc4 -.unalignedInitLong _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN -.initByte 0xe // DW_CFA_def_cfa_offset -.uleb128 0x0 -.align 2 -_picoMark_FdeEnd= - -//============================================================================ -// Abbrevation information. -//============================================================================ - -.section .debug_abbrev -_picoMark_ABBREVIATIONS= - -.section .debug_abbrev - .uleb128 0x1 // (abbrev code) - .uleb128 0x11 // (TAG: DW_TAG_compile_unit) - .initByte 0x1 // DW_children_yes - .uleb128 0x10 // (DW_AT_stmt_list) - .uleb128 0x6 // (DW_FORM_data4) - .uleb128 0x12 // (DW_AT_high_pc) - .uleb128 0x1 // (DW_FORM_addr) - .uleb128 0x11 // (DW_AT_low_pc) - .uleb128 0x1 // (DW_FORM_addr) - .uleb128 0x25 // (DW_AT_producer) - .uleb128 0x8 // (DW_FORM_string) - .uleb128 0x13 // (DW_AT_language) - .uleb128 0x5 // (DW_FORM_data2) - .uleb128 0x3 // (DW_AT_name) - .uleb128 0x8 // (DW_FORM_string) -.initByte 0x0 -.initByte 0x0 - - .uleb128 0x2 ;# (abbrev code) - .uleb128 0x2e ;# (TAG: DW_TAG_subprogram) -.initByte 0x0 ;# DW_children_no - .uleb128 0x3 ;# (DW_AT_name) - .uleb128 0x8 ;# (DW_FORM_string) - .uleb128 0x11 ;# (DW_AT_low_pc) - .uleb128 0x1 ;# (DW_FORM_addr) - .uleb128 0x12 ;# (DW_AT_high_pc) - .uleb128 0x1 ;# (DW_FORM_addr) -.initByte 0x0 -.initByte 0x0 - -.initByte 0x0 - -//============================================================================ -// Line information. DwarfLib requires this to be present, but it can -// be empty. -//============================================================================ - -.section .debug_line -_picoMark_LINES= - -//============================================================================ -// Debug Information -//============================================================================ -.section .debug_info - -//Fixed header. -.unalignedInitLong _picoMark_DEBUG_INFO_END-_picoMark_DEBUG_INFO_BEGIN -_picoMark_DEBUG_INFO_BEGIN= -.unalignedInitWord 0x2 -.unalignedInitLong _picoMark_ABBREVIATIONS -.initByte 0x2 - -// Compile unit information. -.uleb128 0x1 // (DIE 0xb) DW_TAG_compile_unit) -.unalignedInitLong _picoMark_LINES -.unalignedInitWord _picoMark_FUNCTION_END -.unalignedInitWord _picoMark_FUNCTION_BEGIN -// Producer is `picoChip' -.ascii 16#70# 16#69# 16#63# 16#6f# 16#43# 16#68# 16#69# 16#70# 16#00# -.unalignedInitWord 0xcafe // ASM language -.ascii 16#0# // Name. DwarfLib expects this to be present. - -.uleb128 0x2 ;# (DIE DW_TAG_subprogram) - -// FUNCTION NAME GOES HERE. Use `echo name | od -t x1' to get the hex. Each hex -// digit is specified using the format 16#XX# -.ascii 16#5f# 16#64# 16#69# 16#76# 16#6d# 16#6f# 16#64# 16#73# 16#69# 16#34# 16#0# // Function name `_divmodsi4' -.unalignedInitWord _picoMark_FUNCTION_BEGIN // DW_AT_low_pc -.unalignedInitWord _picoMark_FUNCTION_END // DW_AT_high_pc - -.initByte 0x0 // end of compile unit children. - -_picoMark_DEBUG_INFO_END= - -//============================================================================ -// END OF DWARF -//============================================================================ - -.section .endFile -// End of picoChip ASM file diff --git a/libgcc/config/picochip/lib1funcs.S b/libgcc/config/picochip/lib1funcs.S deleted file mode 100644 index d344170d248..00000000000 --- a/libgcc/config/picochip/lib1funcs.S +++ /dev/null @@ -1,4 +0,0 @@ -// picoChip ASM file -// Fake libgcc asm file. This contains nothing, but is used to prevent gcc -// getting upset about the lack of a lib1funcs.S file when LIB1ASMFUNCS is -// defined to switch off the compilation of parts of libgcc. diff --git a/libgcc/config/picochip/longjmp.S b/libgcc/config/picochip/longjmp.S deleted file mode 100644 index 9370e9422b6..00000000000 --- a/libgcc/config/picochip/longjmp.S +++ /dev/null @@ -1,182 +0,0 @@ -// picoChip ASM file -// -// Support for 32-bit arithmetic shift right. -// -// Copyright (C) 2003-2014 Free Software Foundation, Inc. -// Contributed by Picochip Ltd. -// Maintained by Hariharan Sandanagobalane (hariharan@picochip.com) -// -// 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, 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/>. - -.section .text - -.global _longjmp -_longjmp: -_picoMark_FUNCTION_BEGIN= - -// picoChip Function Prologue : &_longjmp = 0 bytes - - LDL (R0)0, R[3:2] - LDL (R0)1, R[5:4] - LDL (R0)2, R[7:6] - LDL (R0)3, R[9:8] - LDL (R0)4, R[11:10] - LDL (R0)5, R[13:12] - LDW (R0)12, R14 - LDW (R0)13, R1 - JR (R12) -=-> COPY.0 1,R0 - -// picoChip Function Epilogue : longjmp -//============================================================================ -// All DWARF information between this marker, and the END OF DWARF -// marker should be included in the source file. Search for -// FUNCTION_STACK_SIZE_GOES_HERE and FUNCTION NAME GOES HERE, and -// provide the relevant information. Add markers called -// _picoMark_FUNCTION_BEGIN and _picoMark_FUNCTION_END around the -// function in question. -//============================================================================ - -//============================================================================ -// Frame information. -//============================================================================ - -.section .debug_frame -_picoMark_DebugFrame= - -// Common CIE header. -.unalignedInitLong _picoMark_CieEnd-_picoMark_CieBegin -_picoMark_CieBegin= -.unalignedInitLong 0xffffffff -.initByte 0x1 // CIE Version -.ascii 16#0# // CIE Augmentation -.uleb128 0x1 // CIE Code Alignment Factor -.sleb128 2 // CIE Data Alignment Factor -.initByte 0xc // CIE RA Column -.initByte 0xc // DW_CFA_def_cfa -.uleb128 0xd -.uleb128 0x0 -.align 2 -_picoMark_CieEnd= - -// FDE -_picoMark_LSFDE0I900821033007563= -.unalignedInitLong _picoMark_FdeEnd-_picoMark_FdeBegin -_picoMark_FdeBegin= -.unalignedInitLong _picoMark_DebugFrame // FDE CIE offset -.unalignedInitWord _picoMark_FUNCTION_BEGIN // FDE initial location -.unalignedInitWord _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN -.initByte 0xe // DW_CFA_def_cfa_offset -.uleb128 0x0 // <-- FUNCTION_STACK_SIZE_GOES_HERE -.initByte 0x4 // DW_CFA_advance_loc4 -.unalignedInitLong _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN -.initByte 0xe // DW_CFA_def_cfa_offset -.uleb128 0x0 -.align 2 -_picoMark_FdeEnd= - -//============================================================================ -// Abbrevation information. -//============================================================================ - -.section .debug_abbrev -_picoMark_ABBREVIATIONS= - -.section .debug_abbrev - .uleb128 0x1 // (abbrev code) - .uleb128 0x11 // (TAG: DW_TAG_compile_unit) - .initByte 0x1 // DW_children_yes - .uleb128 0x10 // (DW_AT_stmt_list) - .uleb128 0x6 // (DW_FORM_data4) - .uleb128 0x12 // (DW_AT_high_pc) - .uleb128 0x1 // (DW_FORM_addr) - .uleb128 0x11 // (DW_AT_low_pc) - .uleb128 0x1 // (DW_FORM_addr) - .uleb128 0x25 // (DW_AT_producer) - .uleb128 0x8 // (DW_FORM_string) - .uleb128 0x13 // (DW_AT_language) - .uleb128 0x5 // (DW_FORM_data2) - .uleb128 0x3 // (DW_AT_name) - .uleb128 0x8 // (DW_FORM_string) -.initByte 0x0 -.initByte 0x0 - - .uleb128 0x2 ;# (abbrev code) - .uleb128 0x2e ;# (TAG: DW_TAG_subprogram) -.initByte 0x0 ;# DW_children_no - .uleb128 0x3 ;# (DW_AT_name) - .uleb128 0x8 ;# (DW_FORM_string) - .uleb128 0x11 ;# (DW_AT_low_pc) - .uleb128 0x1 ;# (DW_FORM_addr) - .uleb128 0x12 ;# (DW_AT_high_pc) - .uleb128 0x1 ;# (DW_FORM_addr) -.initByte 0x0 -.initByte 0x0 - -.initByte 0x0 - -//============================================================================ -// Line information. DwarfLib requires this to be present, but it can -// be empty. -//============================================================================ - -.section .debug_line -_picoMark_LINES= - -//============================================================================ -// Debug Information -//============================================================================ -.section .debug_info - -//Fixed header. -.unalignedInitLong _picoMark_DEBUG_INFO_END-_picoMark_DEBUG_INFO_BEGIN -_picoMark_DEBUG_INFO_BEGIN= -.unalignedInitWord 0x2 -.unalignedInitLong _picoMark_ABBREVIATIONS -.initByte 0x2 - -// Compile unit information. -.uleb128 0x1 // (DIE 0xb) DW_TAG_compile_unit) -.unalignedInitLong _picoMark_LINES -.unalignedInitWord _picoMark_FUNCTION_END -.unalignedInitWord _picoMark_FUNCTION_BEGIN -// Producer is `picoChip' -.ascii 16#70# 16#69# 16#63# 16#6f# 16#43# 16#68# 16#69# 16#70# 16#00# -.unalignedInitWord 0xcafe // ASM language -.ascii 16#0# // Name. DwarfLib expects this to be present. - -.uleb128 0x2 ;# (DIE DW_TAG_subprogram) - -// FUNCTION NAME GOES HERE. Use `echo name | od -t x1' to get the hex. Each hex -// digit is specified using the format 16#XX# -.ascii 16#6c# 16#6f# 16#6e# 16#67# 16#6a# 16#6d# 16#70# 16#0# // Function name `longjmp' -.unalignedInitWord _picoMark_FUNCTION_BEGIN // DW_AT_low_pc -.unalignedInitWord _picoMark_FUNCTION_END // DW_AT_high_pc - -.initByte 0x0 // end of compile unit children. - -_picoMark_DEBUG_INFO_END= - -//============================================================================ -// END OF DWARF -//============================================================================ - -.section .endFile -// End of picoChip ASM file diff --git a/libgcc/config/picochip/lshrsi3.S b/libgcc/config/picochip/lshrsi3.S deleted file mode 100644 index ad233d4423c..00000000000 --- a/libgcc/config/picochip/lshrsi3.S +++ /dev/null @@ -1,190 +0,0 @@ -// picoChip ASM file -// -// Support for 32-bit logical shift right. -// -// Copyright (C) 2003-2014 Free Software Foundation, Inc. -// Contributed by Picochip Ltd. -// Maintained by Hariharan Sandanagobalane (hariharan@picochip.com) -// -// 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, 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/>. -.section .text - -.global ___lshrsi3 -___lshrsi3: -_picoMark_FUNCTION_BEGIN= - -// picoChip Function Prologue : &___lshrsi3 = 4 bytes - - // if (R2 > 15) goto _L2 - SUB.0 15,R2,r15 - JMPLT _L2 -=-> SUB.0 16,R2,R5 // R5 := R5 - R2 (HI) - - LSR.0 R0,R2,R0 // R4 := R0 >> R2 - LSR.0 R1,R2,R3 // R3 := R1 >> R2 - // if (R2 == 0) goto _L4 - LSL.0 R1,R5,R5 // R5 := R1 << R5 - OR.0 R5,R0,R4 // R2 := R5 IOR R2 (HI) - SUB.0 R2,0,r15 - COPYNE R4,R0 // R0 := R2 - JR (R12) // Return to caller -=-> COPY.0 R3,R1 // R1 := R3 - -_L2: - LSR.0 R1,R2,R0 // R2 := R1 >> R2 - JR (R12) // Return to caller -=-> COPY.0 0,R1 // R3 := 0 (short constant) - -_picoMark_FUNCTION_END= -// picoChip Function Epilogue : __lshrsi3 - -//============================================================================ -// All DWARF information between this marker, and the END OF DWARF -// marker should be included in the source file. Search for -// FUNCTION_STACK_SIZE_GOES_HERE and FUNCTION NAME GOES HERE, and -// provide the relevant information. Add markers called -// _picoMark_FUNCTION_BEGIN and _picoMark_FUNCTION_END around the -// function in question. -//============================================================================ - -//============================================================================ -// Frame information. -//============================================================================ - -.section .debug_frame -_picoMark_DebugFrame= - -// Common CIE header. -.unalignedInitLong _picoMark_CieEnd-_picoMark_CieBegin -_picoMark_CieBegin= -.unalignedInitLong 0xffffffff -.initByte 0x1 // CIE Version -.ascii 16#0# // CIE Augmentation -.uleb128 0x1 // CIE Code Alignment Factor -.sleb128 2 // CIE Data Alignment Factor -.initByte 0xc // CIE RA Column -.initByte 0xc // DW_CFA_def_cfa -.uleb128 0xd -.uleb128 0x0 -.align 2 -_picoMark_CieEnd= - -// FDE -_picoMark_LSFDE0I900821033007563= -.unalignedInitLong _picoMark_FdeEnd-_picoMark_FdeBegin -_picoMark_FdeBegin= -.unalignedInitLong _picoMark_DebugFrame // FDE CIE offset -.unalignedInitWord _picoMark_FUNCTION_BEGIN // FDE initial location -.unalignedInitWord _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN -.initByte 0xe // DW_CFA_def_cfa_offset -.uleb128 0x4 // <-- FUNCTION_STACK_SIZE_GOES_HERE -.initByte 0x4 // DW_CFA_advance_loc4 -.unalignedInitLong _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN -.initByte 0xe // DW_CFA_def_cfa_offset -.uleb128 0x0 -.align 2 -_picoMark_FdeEnd= - -//============================================================================ -// Abbrevation information. -//============================================================================ - -.section .debug_abbrev -_picoMark_ABBREVIATIONS= - -.section .debug_abbrev - .uleb128 0x1 // (abbrev code) - .uleb128 0x11 // (TAG: DW_TAG_compile_unit) - .initByte 0x1 // DW_children_yes - .uleb128 0x10 // (DW_AT_stmt_list) - .uleb128 0x6 // (DW_FORM_data4) - .uleb128 0x12 // (DW_AT_high_pc) - .uleb128 0x1 // (DW_FORM_addr) - .uleb128 0x11 // (DW_AT_low_pc) - .uleb128 0x1 // (DW_FORM_addr) - .uleb128 0x25 // (DW_AT_producer) - .uleb128 0x8 // (DW_FORM_string) - .uleb128 0x13 // (DW_AT_language) - .uleb128 0x5 // (DW_FORM_data2) - .uleb128 0x3 // (DW_AT_name) - .uleb128 0x8 // (DW_FORM_string) -.initByte 0x0 -.initByte 0x0 - - .uleb128 0x2 ;# (abbrev code) - .uleb128 0x2e ;# (TAG: DW_TAG_subprogram) -.initByte 0x0 ;# DW_children_no - .uleb128 0x3 ;# (DW_AT_name) - .uleb128 0x8 ;# (DW_FORM_string) - .uleb128 0x11 ;# (DW_AT_low_pc) - .uleb128 0x1 ;# (DW_FORM_addr) - .uleb128 0x12 ;# (DW_AT_high_pc) - .uleb128 0x1 ;# (DW_FORM_addr) -.initByte 0x0 -.initByte 0x0 - -.initByte 0x0 - -//============================================================================ -// Line information. DwarfLib requires this to be present, but it can -// be empty. -//============================================================================ - -.section .debug_line -_picoMark_LINES= - -//============================================================================ -// Debug Information -//============================================================================ -.section .debug_info - -//Fixed header. -.unalignedInitLong _picoMark_DEBUG_INFO_END-_picoMark_DEBUG_INFO_BEGIN -_picoMark_DEBUG_INFO_BEGIN= -.unalignedInitWord 0x2 -.unalignedInitLong _picoMark_ABBREVIATIONS -.initByte 0x2 - -// Compile unit information. -.uleb128 0x1 // (DIE 0xb) DW_TAG_compile_unit) -.unalignedInitLong _picoMark_LINES -.unalignedInitWord _picoMark_FUNCTION_END -.unalignedInitWord _picoMark_FUNCTION_BEGIN -// Producer is `picoChip' -.ascii 16#70# 16#69# 16#63# 16#6f# 16#43# 16#68# 16#69# 16#70# 16#00# -.unalignedInitWord 0xcafe // ASM language -.ascii 16#0# // Name. DwarfLib expects this to be present. - -.uleb128 0x2 ;# (DIE DW_TAG_subprogram) - -// FUNCTION NAME GOES HERE. Use `echo name | od -t x1' to get the hex. Each hex -// digit is specified using the format 16#XX# -.ascii 16#5f# 16#5f# 16#6c# 16#73# 16#68# 16#72# 16#72# 16#73# 16#69# 16#33# 16#0# // Function name `__lshrsi3' -.unalignedInitWord _picoMark_FUNCTION_BEGIN // DW_AT_low_pc -.unalignedInitWord _picoMark_FUNCTION_END // DW_AT_high_pc - -.initByte 0x0 // end of compile unit children. - -_picoMark_DEBUG_INFO_END= - -//============================================================================ -// END OF DWARF -//============================================================================ -.section .endFile diff --git a/libgcc/config/picochip/lshrsi3.c b/libgcc/config/picochip/lshrsi3.c deleted file mode 100644 index f100648e5c5..00000000000 --- a/libgcc/config/picochip/lshrsi3.c +++ /dev/null @@ -1,76 +0,0 @@ -/* - -picoChip GCC support for 32-bit logical shift right. - -Copyright (C) 2003-2014 Free Software Foundation, Inc. -Contributed by Picochip Ltd. -Maintained by Daniel Towner (daniel.towner@picochip.com) - -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, 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/>. */ - -typedef int HItype __attribute__ ((mode (HI))); -typedef unsigned int UHItype __attribute__ ((mode (HI))); -typedef unsigned int USItype __attribute__ ((mode (SI))); - -typedef struct USIstruct { - UHItype low, high; -} USIstruct; - -typedef union USIunion { - USItype l; - USIstruct s; -} USIunion; - -USItype __lshrsi3(USIunion value, HItype count) { - USIunion result; - int temp; - - /* Ignore a zero count until we get into the (count < 16) - clause. This is slightly slower when shifting by zero, but faster - and smaller in all other cases (due to the better scheduling - opportunities available by putting the test near computational - instructions. */ - - if (count < 16) { - /* Shift low and high words by the count. */ - result.s.low = value.s.low >> count; - result.s.high = value.s.high >> count; - - /* There is now a hole in the upper `count' bits of the low - word. Shift the lower `count' bits of the upper word into the - low word. This only works when count isn't zero. */ - if (count != 0) { - temp = value.s.high << (16 - count); - result.s.low |= temp; - } - - } else { - /* Shift the upper word of the source into the lower word of the - result, and zero the result's upper word. Note that we actually - ned to shift by (count - 16), but as we are only using the - bottom 4 bits, this is equivalent to shifting by count. */ - result.s.low = value.s.high >> count; - result.s.high = 0; - - } - - return result.l; - -} diff --git a/libgcc/config/picochip/parityhi2.S b/libgcc/config/picochip/parityhi2.S deleted file mode 100644 index 357e33dfec3..00000000000 --- a/libgcc/config/picochip/parityhi2.S +++ /dev/null @@ -1,179 +0,0 @@ -// picoChip ASM file -//.file "ucmpsi2.c" -// -// Support for parity checks. -// -// Copyright (C) 2003-2014 Free Software Foundation, Inc. -// Contributed by Picochip Ltd. -// Maintained by Daniel Towner (daniel.towner@picochip.com) -// -// 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, 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/>. - -.section .text - -.align 8 -.global ___parityhi2 -___parityhi2: -_picoMark_FUNCTION_BEGIN= - -// picoChip Function Prologue : &___parityhi2 = 0 bytes - XOR.0 [LSR R0,8],R0,R0 - XOR.0 [LSR R0,4],R0,R0 - XOR.0 [LSR R0,2],R0,R0 - JR (R12) \ XOR.0 [LSR R0,1],R0,R0 -=-> AND.0 R0,1,R0 - -_picoMark_FUNCTION_END= -// picoChip Function Epilogue : __parityhi2 -//============================================================================ -// All DWARF information between this marker, and the END OF DWARF -// marker should be included in the source file. Search for -// FUNCTION_STACK_SIZE_GOES_HERE and FUNCTION NAME GOES HERE, and -// provide the relevant information. Add markers called -// _picoMark_FUNCTION_BEGIN and _picoMark_FUNCTION_END around the -// function in question. -//============================================================================ - -//============================================================================ -// Frame information. -//============================================================================ - -.section .debug_frame -_picoMark_DebugFrame= - -// Common CIE header. -.unalignedInitLong _picoMark_CieEnd-_picoMark_CieBegin -_picoMark_CieBegin= -.unalignedInitLong 0xffffffff -.initByte 0x1 // CIE Version -.ascii 16#0# // CIE Augmentation -.uleb128 0x1 // CIE Code Alignment Factor -.sleb128 2 // CIE Data Alignment Factor -.initByte 0xc // CIE RA Column -.initByte 0xc // DW_CFA_def_cfa -.uleb128 0xd -.uleb128 0x0 -.align 2 -_picoMark_CieEnd= - -// FDE -_picoMark_LSFDE0I900821033007563= -.unalignedInitLong _picoMark_FdeEnd-_picoMark_FdeBegin -_picoMark_FdeBegin= -.unalignedInitLong _picoMark_DebugFrame // FDE CIE offset -.unalignedInitWord _picoMark_FUNCTION_BEGIN // FDE initial location -.unalignedInitWord _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN -.initByte 0xe // DW_CFA_def_cfa_offset -.uleb128 0x0 // <-- FUNCTION_STACK_SIZE_GOES_HERE -.initByte 0x4 // DW_CFA_advance_loc4 -.unalignedInitLong _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN -.initByte 0xe // DW_CFA_def_cfa_offset -.uleb128 0x0 -.align 2 -_picoMark_FdeEnd= - -//============================================================================ -// Abbrevation information. -//============================================================================ - -.section .debug_abbrev -_picoMark_ABBREVIATIONS= - -.section .debug_abbrev - .uleb128 0x1 // (abbrev code) - .uleb128 0x11 // (TAG: DW_TAG_compile_unit) - .initByte 0x1 // DW_children_yes - .uleb128 0x10 // (DW_AT_stmt_list) - .uleb128 0x6 // (DW_FORM_data4) - .uleb128 0x12 // (DW_AT_high_pc) - .uleb128 0x1 // (DW_FORM_addr) - .uleb128 0x11 // (DW_AT_low_pc) - .uleb128 0x1 // (DW_FORM_addr) - .uleb128 0x25 // (DW_AT_producer) - .uleb128 0x8 // (DW_FORM_string) - .uleb128 0x13 // (DW_AT_language) - .uleb128 0x5 // (DW_FORM_data2) - .uleb128 0x3 // (DW_AT_name) - .uleb128 0x8 // (DW_FORM_string) -.initByte 0x0 -.initByte 0x0 - - .uleb128 0x2 ;# (abbrev code) - .uleb128 0x2e ;# (TAG: DW_TAG_subprogram) -.initByte 0x0 ;# DW_children_no - .uleb128 0x3 ;# (DW_AT_name) - .uleb128 0x8 ;# (DW_FORM_string) - .uleb128 0x11 ;# (DW_AT_low_pc) - .uleb128 0x1 ;# (DW_FORM_addr) - .uleb128 0x12 ;# (DW_AT_high_pc) - .uleb128 0x1 ;# (DW_FORM_addr) -.initByte 0x0 -.initByte 0x0 - -.initByte 0x0 - -//============================================================================ -// Line information. DwarfLib requires this to be present, but it can -// be empty. -//============================================================================ - -.section .debug_line -_picoMark_LINES= - -//============================================================================ -// Debug Information -//============================================================================ -.section .debug_info - -//Fixed header. -.unalignedInitLong _picoMark_DEBUG_INFO_END-_picoMark_DEBUG_INFO_BEGIN -_picoMark_DEBUG_INFO_BEGIN= -.unalignedInitWord 0x2 -.unalignedInitLong _picoMark_ABBREVIATIONS -.initByte 0x2 - -// Compile unit information. -.uleb128 0x1 // (DIE 0xb) DW_TAG_compile_unit) -.unalignedInitLong _picoMark_LINES -.unalignedInitWord _picoMark_FUNCTION_END -.unalignedInitWord _picoMark_FUNCTION_BEGIN -// Producer is `picoChip' -.ascii 16#70# 16#69# 16#63# 16#6f# 16#43# 16#68# 16#69# 16#70# 16#00# -.unalignedInitWord 0xcafe // ASM language -.ascii 16#0# // Name. DwarfLib expects this to be present. - -.uleb128 0x2 ;# (DIE DW_TAG_subprogram) - -// FUNCTION NAME GOES HERE. Use `echo name | od -t x1' to get the hex. Each hex -// digit is specified using the format 16#XX# -.ascii 16#5f# 16#5f# 16#70# 16#61# 16#72# 16#69# 16#74# 16#79# 16#68# 16#69# 16#32# 16#0# // Function name `__parityhi2' -.unalignedInitWord _picoMark_FUNCTION_BEGIN // DW_AT_low_pc -.unalignedInitWord _picoMark_FUNCTION_END // DW_AT_high_pc - -.initByte 0x0 // end of compile unit children. - -_picoMark_DEBUG_INFO_END= - -//============================================================================ -// END OF DWARF -//============================================================================ - -.section .endFile -// End of picoChip ASM file diff --git a/libgcc/config/picochip/popcounthi2.S b/libgcc/config/picochip/popcounthi2.S deleted file mode 100644 index e0f58242212..00000000000 --- a/libgcc/config/picochip/popcounthi2.S +++ /dev/null @@ -1,201 +0,0 @@ -// picoChip ASM file -//.file "popcounthi2.S" -// -// Support for 16-bit population count. -// -// Copyright (C) 2003-2014 Free Software Foundation, Inc. -// Contributed by Picochip Ltd. -// Maintained by Daniel Towner (daniel.towner@picochip.com) -// -// 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, 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/>. - -.section .text - -// The following code (taken from a newsgroup posting) was compiled, and then -// hand assembled (a similar version is given in the Hacker's Delight -// book, chapter 5). -// -// int -// popcount (int value) -// { -// value = ((value & 0xAAAA) >> 1) + (value & 0x5555); -// value = ((value & 0xCCCC) >> 2) + (value & 0x3333); -// value = ((value & 0xF0F0) >> 4) + (value & 0x0F0F); -// return ((value & 0xFF00) >> 8) + (value & 0x00FF); -// } -// -// This assembly function is approx. 20x faster than a naive loop -// implementation of the population count, but about 30% bigger -// (45 bytes v. 34 bytes). - -.align 8 -.global ___popcounthi2 -___popcounthi2: - -_picoMark_FUNCTION_BEGIN= - -// picoChip Function Prologue : &___popcounthi2 = 0 bytes - - AND.0 [LSR R0,1],21845,R0 \ AND.1 R0,21845,R5 - ADD.0 R0,R5,R0 - AND.0 [LSR R0,2],13107,R0 \ AND.1 R0,13107,R5 - ADD.0 R0,R5,R0 \ COPY.1 1807,R2 - AND.0 [LSR R0,4],R2,R0 \ AND.1 R0,3855,R5 - ADD.0 R0,R5,R0 - JR (R12) \ AND.0 R0, 255, R5 -=-> ADD.0 [LSR R0,8],R5,R0 - -_picoMark_FUNCTION_END= -// picoChip Function Epilogue : ___popcounthi2 -//============================================================================ -// All DWARF information between this marker, and the END OF DWARF -// marker should be included in the source file. Search for -// FUNCTION_STACK_SIZE_GOES_HERE and FUNCTION NAME GOES HERE, and -// provide the relevant information. Add markers called -// _picoMark_FUNCTION_BEGIN and _picoMark_FUNCTION_END around the -// function in question. -//============================================================================ - -//============================================================================ -// Frame information. -//============================================================================ - -.section .debug_frame -_picoMark_DebugFrame= - -// Common CIE header. -.unalignedInitLong _picoMark_CieEnd-_picoMark_CieBegin -_picoMark_CieBegin= -.unalignedInitLong 0xffffffff -.initByte 0x1 // CIE Version -.ascii 16#0# // CIE Augmentation -.uleb128 0x1 // CIE Code Alignment Factor -.sleb128 2 // CIE Data Alignment Factor -.initByte 0xc // CIE RA Column -.initByte 0xc // DW_CFA_def_cfa -.uleb128 0xd -.uleb128 0x0 -.align 2 -_picoMark_CieEnd= - -// FDE -_picoMark_LSFDE0I900821033007563= -.unalignedInitLong _picoMark_FdeEnd-_picoMark_FdeBegin -_picoMark_FdeBegin= -.unalignedInitLong _picoMark_DebugFrame // FDE CIE offset -.unalignedInitWord _picoMark_FUNCTION_BEGIN // FDE initial location -.unalignedInitWord _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN -.initByte 0xe // DW_CFA_def_cfa_offset -.uleb128 0x0 // <-- FUNCTION_STACK_SIZE_GOES_HERE -.initByte 0x4 // DW_CFA_advance_loc4 -.unalignedInitLong _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN -.initByte 0xe // DW_CFA_def_cfa_offset -.uleb128 0x0 -.align 2 -_picoMark_FdeEnd= - -//============================================================================ -// Abbrevation information. -//============================================================================ - -.section .debug_abbrev -_picoMark_ABBREVIATIONS= - -.section .debug_abbrev - .uleb128 0x1 // (abbrev code) - .uleb128 0x11 // (TAG: DW_TAG_compile_unit) - .initByte 0x1 // DW_children_yes - .uleb128 0x10 // (DW_AT_stmt_list) - .uleb128 0x6 // (DW_FORM_data4) - .uleb128 0x12 // (DW_AT_high_pc) - .uleb128 0x1 // (DW_FORM_addr) - .uleb128 0x11 // (DW_AT_low_pc) - .uleb128 0x1 // (DW_FORM_addr) - .uleb128 0x25 // (DW_AT_producer) - .uleb128 0x8 // (DW_FORM_string) - .uleb128 0x13 // (DW_AT_language) - .uleb128 0x5 // (DW_FORM_data2) - .uleb128 0x3 // (DW_AT_name) - .uleb128 0x8 // (DW_FORM_string) -.initByte 0x0 -.initByte 0x0 - - .uleb128 0x2 ;# (abbrev code) - .uleb128 0x2e ;# (TAG: DW_TAG_subprogram) -.initByte 0x0 ;# DW_children_no - .uleb128 0x3 ;# (DW_AT_name) - .uleb128 0x8 ;# (DW_FORM_string) - .uleb128 0x11 ;# (DW_AT_low_pc) - .uleb128 0x1 ;# (DW_FORM_addr) - .uleb128 0x12 ;# (DW_AT_high_pc) - .uleb128 0x1 ;# (DW_FORM_addr) -.initByte 0x0 -.initByte 0x0 - -.initByte 0x0 - -//============================================================================ -// Line information. DwarfLib requires this to be present, but it can -// be empty. -//============================================================================ - -.section .debug_line -_picoMark_LINES= - -//============================================================================ -// Debug Information -//============================================================================ -.section .debug_info - -//Fixed header. -.unalignedInitLong _picoMark_DEBUG_INFO_END-_picoMark_DEBUG_INFO_BEGIN -_picoMark_DEBUG_INFO_BEGIN= -.unalignedInitWord 0x2 -.unalignedInitLong _picoMark_ABBREVIATIONS -.initByte 0x2 - -// Compile unit information. -.uleb128 0x1 // (DIE 0xb) DW_TAG_compile_unit) -.unalignedInitLong _picoMark_LINES -.unalignedInitWord _picoMark_FUNCTION_END -.unalignedInitWord _picoMark_FUNCTION_BEGIN -// Producer is `picoChip' -.ascii 16#70# 16#69# 16#63# 16#6f# 16#43# 16#68# 16#69# 16#70# 16#00# -.unalignedInitWord 0xcafe // ASM language -.ascii 16#0# // Name. DwarfLib expects this to be present. - -.uleb128 0x2 ;# (DIE DW_TAG_subprogram) - -// FUNCTION NAME GOES HERE. Use `echo name | od -t x1' to get the hex. Each hex -// digit is specified using the format 16#XX# -.ascii 16#5f# 16#5f# 16#70# 16#6f# 16#70# 16#63# 16#6f# 16#75# 16#6e# 16#74# 16#68# 16#69# 16#32# 16#0# // Function name `__popcounthi2' -.unalignedInitWord _picoMark_FUNCTION_BEGIN // DW_AT_low_pc -.unalignedInitWord _picoMark_FUNCTION_END // DW_AT_high_pc - -.initByte 0x0 // end of compile unit children. - -_picoMark_DEBUG_INFO_END= - -//============================================================================ -// END OF DWARF -//============================================================================ - -.section .endFile -// End of picoChip ASM file diff --git a/libgcc/config/picochip/setjmp.S b/libgcc/config/picochip/setjmp.S deleted file mode 100644 index 4993f2ecf5b..00000000000 --- a/libgcc/config/picochip/setjmp.S +++ /dev/null @@ -1,182 +0,0 @@ -// picoChip ASM file -// -// Support for 32-bit arithmetic shift right. -// -// Copyright (C) 2003-2014 Free Software Foundation, Inc. -// Contributed by Picochip Ltd. -// Maintained by Hariharan Sandanagobalane (hariharan@picochip.com) -// -// 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, 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/>. - -.section .text - -.global _setjmp -_setjmp: -_picoMark_FUNCTION_BEGIN= - -// picoChip Function Prologue : &_setjmp = 0 bytes - - STL R[3:2],(R0)0 - STL R[5:4],(R0)1 - STL R[7:6],(R0)2 - STL R[9:8],(R0)3 - STL R[11:10],(R0)4 - STL R[13:12],(R0)5 - STW R14,(R0)12 - STW R1,(R0)13 - JR (R12) -=-> COPY.0 0,R0 - -// picoChip Function Epilogue : setjmp -//============================================================================ -// All DWARF information between this marker, and the END OF DWARF -// marker should be included in the source file. Search for -// FUNCTION_STACK_SIZE_GOES_HERE and FUNCTION NAME GOES HERE, and -// provide the relevant information. Add markers called -// _picoMark_FUNCTION_BEGIN and _picoMark_FUNCTION_END around the -// function in question. -//============================================================================ - -//============================================================================ -// Frame information. -//============================================================================ - -.section .debug_frame -_picoMark_DebugFrame= - -// Common CIE header. -.unalignedInitLong _picoMark_CieEnd-_picoMark_CieBegin -_picoMark_CieBegin= -.unalignedInitLong 0xffffffff -.initByte 0x1 // CIE Version -.ascii 16#0# // CIE Augmentation -.uleb128 0x1 // CIE Code Alignment Factor -.sleb128 2 // CIE Data Alignment Factor -.initByte 0xc // CIE RA Column -.initByte 0xc // DW_CFA_def_cfa -.uleb128 0xd -.uleb128 0x0 -.align 2 -_picoMark_CieEnd= - -// FDE -_picoMark_LSFDE0I900821033007563= -.unalignedInitLong _picoMark_FdeEnd-_picoMark_FdeBegin -_picoMark_FdeBegin= -.unalignedInitLong _picoMark_DebugFrame // FDE CIE offset -.unalignedInitWord _picoMark_FUNCTION_BEGIN // FDE initial location -.unalignedInitWord _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN -.initByte 0xe // DW_CFA_def_cfa_offset -.uleb128 0x0 // <-- FUNCTION_STACK_SIZE_GOES_HERE -.initByte 0x4 // DW_CFA_advance_loc4 -.unalignedInitLong _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN -.initByte 0xe // DW_CFA_def_cfa_offset -.uleb128 0x0 -.align 2 -_picoMark_FdeEnd= - -//============================================================================ -// Abbrevation information. -//============================================================================ - -.section .debug_abbrev -_picoMark_ABBREVIATIONS= - -.section .debug_abbrev - .uleb128 0x1 // (abbrev code) - .uleb128 0x11 // (TAG: DW_TAG_compile_unit) - .initByte 0x1 // DW_children_yes - .uleb128 0x10 // (DW_AT_stmt_list) - .uleb128 0x6 // (DW_FORM_data4) - .uleb128 0x12 // (DW_AT_high_pc) - .uleb128 0x1 // (DW_FORM_addr) - .uleb128 0x11 // (DW_AT_low_pc) - .uleb128 0x1 // (DW_FORM_addr) - .uleb128 0x25 // (DW_AT_producer) - .uleb128 0x8 // (DW_FORM_string) - .uleb128 0x13 // (DW_AT_language) - .uleb128 0x5 // (DW_FORM_data2) - .uleb128 0x3 // (DW_AT_name) - .uleb128 0x8 // (DW_FORM_string) -.initByte 0x0 -.initByte 0x0 - - .uleb128 0x2 ;# (abbrev code) - .uleb128 0x2e ;# (TAG: DW_TAG_subprogram) -.initByte 0x0 ;# DW_children_no - .uleb128 0x3 ;# (DW_AT_name) - .uleb128 0x8 ;# (DW_FORM_string) - .uleb128 0x11 ;# (DW_AT_low_pc) - .uleb128 0x1 ;# (DW_FORM_addr) - .uleb128 0x12 ;# (DW_AT_high_pc) - .uleb128 0x1 ;# (DW_FORM_addr) -.initByte 0x0 -.initByte 0x0 - -.initByte 0x0 - -//============================================================================ -// Line information. DwarfLib requires this to be present, but it can -// be empty. -//============================================================================ - -.section .debug_line -_picoMark_LINES= - -//============================================================================ -// Debug Information -//============================================================================ -.section .debug_info - -//Fixed header. -.unalignedInitLong _picoMark_DEBUG_INFO_END-_picoMark_DEBUG_INFO_BEGIN -_picoMark_DEBUG_INFO_BEGIN= -.unalignedInitWord 0x2 -.unalignedInitLong _picoMark_ABBREVIATIONS -.initByte 0x2 - -// Compile unit information. -.uleb128 0x1 // (DIE 0xb) DW_TAG_compile_unit) -.unalignedInitLong _picoMark_LINES -.unalignedInitWord _picoMark_FUNCTION_END -.unalignedInitWord _picoMark_FUNCTION_BEGIN -// Producer is `picoChip' -.ascii 16#70# 16#69# 16#63# 16#6f# 16#43# 16#68# 16#69# 16#70# 16#00# -.unalignedInitWord 0xcafe // ASM language -.ascii 16#0# // Name. DwarfLib expects this to be present. - -.uleb128 0x2 ;# (DIE DW_TAG_subprogram) - -// FUNCTION NAME GOES HERE. Use `echo name | od -t x1' to get the hex. Each hex -// digit is specified using the format 16#XX# -.ascii 16#73# 16#65# 16#74# 16#6a# 16#6d# 16#70# 16#0# // Function name `setjmp' -.unalignedInitWord _picoMark_FUNCTION_BEGIN // DW_AT_low_pc -.unalignedInitWord _picoMark_FUNCTION_END // DW_AT_high_pc - -.initByte 0x0 // end of compile unit children. - -_picoMark_DEBUG_INFO_END= - -//============================================================================ -// END OF DWARF -//============================================================================ - -.section .endFile -// End of picoChip ASM file diff --git a/libgcc/config/picochip/subdi3.S b/libgcc/config/picochip/subdi3.S deleted file mode 100644 index 47ed3631180..00000000000 --- a/libgcc/config/picochip/subdi3.S +++ /dev/null @@ -1,191 +0,0 @@ -// picoChip ASM file -// -// Support for 64-bit subtraction. -// -// Copyright (C) 2003-2014 Free Software Foundation, Inc. -// Contributed by Picochip Ltd. -// Maintained by Hariharan Sandanagobalane (hariharan@picochip.com) -// -// 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, 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/>. - -.section .text - -.align 8 -.global __subdi3 -__subdi3: - -_picoMark_FUNCTION_BEGIN= -// picoChip Function Prologue : &__subdi3 = 4 bytes - - // The first operand of sub is completely in registers r[2-5] - // The second operand of sub is in stack FP(0-3) - // and result need to be written pointed to by the register r0. - // All we need to do is to load the appropriate values, sub them - // appropriately (with sub or subb) and then store the values back. - ldw (FP)0, r1 - stl r[7:6], (FP)-1 - sub.0 r2, r1, r6 - ldw (FP)1, r1 - subb.0 r3, r1, r7 - ldl (FP)1, r[3:2] - stl r[7:6], (r0)0 - subb.0 r4, r2, r6 - subb.0 r5, r3, r7 - stl r[7:6], (r0)1 - jr (r12) -=-> ldl (FP)2, r[7:6] - -_picoMark_FUNCTION_END= -// picoChip Function Epilogue : __subdi3 - -//============================================================================ -// All DWARF information between this marker, and the END OF DWARF -// marker should be included in the source file. Search for -// FUNCTION_STACK_SIZE_GOES_HERE and FUNCTION NAME GOES HERE, and -// provide the relevant information. Add markers called -// _picoMark_FUNCTION_BEGIN and _picoMark_FUNCTION_END around the -// function in question. -//============================================================================ - -//============================================================================ -// Frame information. -//============================================================================ - -.section .debug_frame -_picoMark_DebugFrame= - -// Common CIE header. -.unalignedInitLong _picoMark_CieEnd-_picoMark_CieBegin -_picoMark_CieBegin= -.unalignedInitLong 0xffffffff -.initByte 0x1 // CIE Version -.ascii 16#0# // CIE Augmentation -.uleb128 0x1 // CIE Code Alignment Factor -.sleb128 2 // CIE Data Alignment Factor -.initByte 0xc // CIE RA Column -.initByte 0xc // DW_CFA_def_cfa -.uleb128 0xd -.uleb128 0x0 -.align 2 -_picoMark_CieEnd= - -// FDE -_picoMark_LSFDE0I900821033007563= -.unalignedInitLong _picoMark_FdeEnd-_picoMark_FdeBegin -_picoMark_FdeBegin= -.unalignedInitLong _picoMark_DebugFrame // FDE CIE offset -.unalignedInitWord _picoMark_FUNCTION_BEGIN // FDE initial location -.unalignedInitWord _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN -.initByte 0xe // DW_CFA_def_cfa_offset -.uleb128 0x4 // <-- FUNCTION_STACK_SIZE_GOES_HERE -.initByte 0x4 // DW_CFA_advance_loc4 -.unalignedInitLong _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN -.initByte 0xe // DW_CFA_def_cfa_offset -.uleb128 0x0 -.align 2 -_picoMark_FdeEnd= - -//============================================================================ -// Abbrevation information. -//============================================================================ - -.section .debug_abbrev -_picoMark_ABBREVIATIONS= - -.section .debug_abbrev - .uleb128 0x1 // (abbrev code) - .uleb128 0x11 // (TAG: DW_TAG_compile_unit) - .initByte 0x1 // DW_children_yes - .uleb128 0x10 // (DW_AT_stmt_list) - .uleb128 0x6 // (DW_FORM_data4) - .uleb128 0x12 // (DW_AT_high_pc) - .uleb128 0x1 // (DW_FORM_addr) - .uleb128 0x11 // (DW_AT_low_pc) - .uleb128 0x1 // (DW_FORM_addr) - .uleb128 0x25 // (DW_AT_producer) - .uleb128 0x8 // (DW_FORM_string) - .uleb128 0x13 // (DW_AT_language) - .uleb128 0x5 // (DW_FORM_data2) - .uleb128 0x3 // (DW_AT_name) - .uleb128 0x8 // (DW_FORM_string) -.initByte 0x0 -.initByte 0x0 - - .uleb128 0x2 ;# (abbrev code) - .uleb128 0x2e ;# (TAG: DW_TAG_subprogram) -.initByte 0x0 ;# DW_children_no - .uleb128 0x3 ;# (DW_AT_name) - .uleb128 0x8 ;# (DW_FORM_string) - .uleb128 0x11 ;# (DW_AT_low_pc) - .uleb128 0x1 ;# (DW_FORM_addr) - .uleb128 0x12 ;# (DW_AT_high_pc) - .uleb128 0x1 ;# (DW_FORM_addr) -.initByte 0x0 -.initByte 0x0 - -.initByte 0x0 - -//============================================================================ -// Line information. DwarfLib requires this to be present, but it can -// be empty. -//============================================================================ - -.section .debug_line -_picoMark_LINES= - -//============================================================================ -// Debug Information -//============================================================================ -.section .debug_info - -//Fixed header. -.unalignedInitLong _picoMark_DEBUG_INFO_END-_picoMark_DEBUG_INFO_BEGIN -_picoMark_DEBUG_INFO_BEGIN= -.unalignedInitWord 0x2 -.unalignedInitLong _picoMark_ABBREVIATIONS -.initByte 0x2 - -// Compile unit information. -.uleb128 0x1 // (DIE 0xb) DW_TAG_compile_unit) -.unalignedInitLong _picoMark_LINES -.unalignedInitWord _picoMark_FUNCTION_END -.unalignedInitWord _picoMark_FUNCTION_BEGIN -// Producer is `picoChip' -.ascii 16#70# 16#69# 16#63# 16#6f# 16#43# 16#68# 16#69# 16#70# 16#00# -.unalignedInitWord 0xcafe // ASM language -.ascii 16#0# // Name. DwarfLib expects this to be present. - -.uleb128 0x2 ;# (DIE DW_TAG_subprogram) - -// FUNCTION NAME GOES HERE. Use `echo name | od -t x1' to get the hex. Each hex -// digit is specified using the format 16#XX# -.ascii 16#5f# 16#73# 16#75# 16#62# 16#64# 16#69# 16#33# 16#0# // Function name `_subdi3' -.unalignedInitWord _picoMark_FUNCTION_BEGIN // DW_AT_low_pc -.unalignedInitWord _picoMark_FUNCTION_END // DW_AT_high_pc - -.initByte 0x0 // end of compile unit children. - -_picoMark_DEBUG_INFO_END= - -//============================================================================ -// END OF DWARF -//============================================================================ -.section .endFile - diff --git a/libgcc/config/picochip/t-picochip b/libgcc/config/picochip/t-picochip deleted file mode 100644 index 4de5dbbdcd3..00000000000 --- a/libgcc/config/picochip/t-picochip +++ /dev/null @@ -1,39 +0,0 @@ -# Prevent some of the more complicated libgcc functions from being -# compiled. This is because they are generally too big to fit into an -# AE anyway, so there is no point in having them. Also, some don't -# compile properly so we'll ignore them for the moment. -LIB1ASMSRC = picochip/lib1funcs.S -LIB1ASMFUNCS = _mulsc3 _divsc3 - -# Compile the extra library functions. -LIB2ADD = \ - $(srcdir)/config/picochip/ashrsi3.S \ - $(srcdir)/config/picochip/ashlsi3.S \ - $(srcdir)/config/picochip/divmodhi4.S \ - $(srcdir)/config/picochip/udivmodhi4.S \ - $(srcdir)/config/picochip/divmodsi4.S \ - $(srcdir)/config/picochip/udivmodsi4.S \ - $(srcdir)/config/picochip/divmod15.S \ - $(srcdir)/config/picochip/ucmpsi2.S \ - $(srcdir)/config/picochip/cmpsi2.S \ - $(srcdir)/config/picochip/clzsi2.S \ - $(srcdir)/config/picochip/adddi3.S \ - $(srcdir)/config/picochip/subdi3.S \ - $(srcdir)/config/picochip/lshrsi3.S \ - $(srcdir)/config/picochip/parityhi2.S \ - $(srcdir)/config/picochip/popcounthi2.S - -# Special libgcc setup. Make single/double floating point the same, -# and use our own include files. -HOST_LIBGCC2_CFLAGS += -DDF=SF -I../../includes/ - -# Switch off all debugging for the embedded libraries. -# (embedded processors need small libraries by default). -# NOTE: If the debug level is increased, turn off instruction scheduling. -LIBGCC2_DEBUG_CFLAGS = -g0 - -# Turn off the building of exception handling libraries. -LIB2ADDEH = - -# Turn off ranlib on target libraries. -RANLIB_FOR_TARGET = cat diff --git a/libgcc/config/picochip/ucmpsi2.S b/libgcc/config/picochip/ucmpsi2.S deleted file mode 100644 index 49cd7e648f8..00000000000 --- a/libgcc/config/picochip/ucmpsi2.S +++ /dev/null @@ -1,209 +0,0 @@ -// picoChip ASM file -//.file "ucmpsi2.c" -// -// Support for 32-bit unsigned compare. -// -// Copyright (C) 2003-2014 Free Software Foundation, Inc. -// Contributed by Picochip Ltd. -// Maintained by Daniel Towner (daniel.towner@picochip.com) -// -// 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, 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/>. -// -// Compiled from the following, and then hand optimised. -// -// int __ucmpsi2 (USItype x, USItype y) -// { -// -// USIunion lx; lx.l = x; -// USIunion ly; ly.l = y; -// -// if (lx.s.high < ly.s.high) -// return 0; -// else if (lx.s.high > ly.s.high) -// return 2; -// if (lx.s.low < ly.s.low) -// return 0; -// else if (lx.s.low > ly.s.low) -// return 2; -// return 1; -// } - -.section .text - -.align 8 -.global ___ucmpsi2 -___ucmpsi2: -_picoMark_FUNCTION_BEGIN= -// picoChip Function Prologue : &___ucmpsi2 = 0 bytes - SUB.0 R1,R3,r15 - - BLO _L1 -=-> SUB.0 R3,R1,r15 \ COPY.1 0,R5 - - BLO _L1 -=-> SUB.0 R0,R2,r15 \ COPY.1 2,R5 - - BLO _L1 -=-> SUB.0 R2,R0,r15 \ COPY.1 0,R5 - - BLO _L1 -=-> COPY.0 2,R5 - - COPY.0 1,R5 -_L1: - JR (R12) -=-> COPY.0 R5,R0 // R0 := R5 - -_picoMark_FUNCTION_END= -// picoChip Function Epilogue : __ucmpsi2 -//============================================================================ -// All DWARF information between this marker, and the END OF DWARF -// marker should be included in the source file. Search for -// FUNCTION_STACK_SIZE_GOES_HERE and FUNCTION NAME GOES HERE, and -// provide the relevant information. Add markers called -// _picoMark_FUNCTION_BEGIN and _picoMark_FUNCTION_END around the -// function in question. -//============================================================================ - -//============================================================================ -// Frame information. -//============================================================================ - -.section .debug_frame -_picoMark_DebugFrame= - -// Common CIE header. -.unalignedInitLong _picoMark_CieEnd-_picoMark_CieBegin -_picoMark_CieBegin= -.unalignedInitLong 0xffffffff -.initByte 0x1 // CIE Version -.ascii 16#0# // CIE Augmentation -.uleb128 0x1 // CIE Code Alignment Factor -.sleb128 2 // CIE Data Alignment Factor -.initByte 0xc // CIE RA Column -.initByte 0xc // DW_CFA_def_cfa -.uleb128 0xd -.uleb128 0x0 -.align 2 -_picoMark_CieEnd= - -// FDE -_picoMark_LSFDE0I900821033007563= -.unalignedInitLong _picoMark_FdeEnd-_picoMark_FdeBegin -_picoMark_FdeBegin= -.unalignedInitLong _picoMark_DebugFrame // FDE CIE offset -.unalignedInitWord _picoMark_FUNCTION_BEGIN // FDE initial location -.unalignedInitWord _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN -.initByte 0xe // DW_CFA_def_cfa_offset -.uleb128 0x0 // <-- FUNCTION_STACK_SIZE_GOES_HERE -.initByte 0x4 // DW_CFA_advance_loc4 -.unalignedInitLong _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN -.initByte 0xe // DW_CFA_def_cfa_offset -.uleb128 0x0 -.align 2 -_picoMark_FdeEnd= - -//============================================================================ -// Abbrevation information. -//============================================================================ - -.section .debug_abbrev -_picoMark_ABBREVIATIONS= - -.section .debug_abbrev - .uleb128 0x1 // (abbrev code) - .uleb128 0x11 // (TAG: DW_TAG_compile_unit) - .initByte 0x1 // DW_children_yes - .uleb128 0x10 // (DW_AT_stmt_list) - .uleb128 0x6 // (DW_FORM_data4) - .uleb128 0x12 // (DW_AT_high_pc) - .uleb128 0x1 // (DW_FORM_addr) - .uleb128 0x11 // (DW_AT_low_pc) - .uleb128 0x1 // (DW_FORM_addr) - .uleb128 0x25 // (DW_AT_producer) - .uleb128 0x8 // (DW_FORM_string) - .uleb128 0x13 // (DW_AT_language) - .uleb128 0x5 // (DW_FORM_data2) - .uleb128 0x3 // (DW_AT_name) - .uleb128 0x8 // (DW_FORM_string) -.initByte 0x0 -.initByte 0x0 - - .uleb128 0x2 ;# (abbrev code) - .uleb128 0x2e ;# (TAG: DW_TAG_subprogram) -.initByte 0x0 ;# DW_children_no - .uleb128 0x3 ;# (DW_AT_name) - .uleb128 0x8 ;# (DW_FORM_string) - .uleb128 0x11 ;# (DW_AT_low_pc) - .uleb128 0x1 ;# (DW_FORM_addr) - .uleb128 0x12 ;# (DW_AT_high_pc) - .uleb128 0x1 ;# (DW_FORM_addr) -.initByte 0x0 -.initByte 0x0 - -.initByte 0x0 - -//============================================================================ -// Line information. DwarfLib requires this to be present, but it can -// be empty. -//============================================================================ - -.section .debug_line -_picoMark_LINES= - -//============================================================================ -// Debug Information -//============================================================================ -.section .debug_info - -//Fixed header. -.unalignedInitLong _picoMark_DEBUG_INFO_END-_picoMark_DEBUG_INFO_BEGIN -_picoMark_DEBUG_INFO_BEGIN= -.unalignedInitWord 0x2 -.unalignedInitLong _picoMark_ABBREVIATIONS -.initByte 0x2 - -// Compile unit information. -.uleb128 0x1 // (DIE 0xb) DW_TAG_compile_unit) -.unalignedInitLong _picoMark_LINES -.unalignedInitWord _picoMark_FUNCTION_END -.unalignedInitWord _picoMark_FUNCTION_BEGIN -// Producer is `picoChip' -.ascii 16#70# 16#69# 16#63# 16#6f# 16#43# 16#68# 16#69# 16#70# 16#00# -.unalignedInitWord 0xcafe // ASM language -.ascii 16#0# // Name. DwarfLib expects this to be present. - -.uleb128 0x2 ;# (DIE DW_TAG_subprogram) - -// FUNCTION NAME GOES HERE. Use `echo name | od -t x1' to get the hex. Each hex -// digit is specified using the format 16#XX# -.ascii 16#5f# 16#5f# 16#75# 16#63# 16#6d# 16#70# 16#73# 16#69# 16#32# 16#0# // Function name `__ucmpsi2' -.unalignedInitWord _picoMark_FUNCTION_BEGIN // DW_AT_low_pc -.unalignedInitWord _picoMark_FUNCTION_END // DW_AT_high_pc - -.initByte 0x0 // end of compile unit children. - -_picoMark_DEBUG_INFO_END= - -//============================================================================ -// END OF DWARF -//============================================================================ -.section .endFile -// End of picoChip ASM file diff --git a/libgcc/config/picochip/udivmodhi4.S b/libgcc/config/picochip/udivmodhi4.S deleted file mode 100644 index 920eb375af2..00000000000 --- a/libgcc/config/picochip/udivmodhi4.S +++ /dev/null @@ -1,238 +0,0 @@ -// picoChip ASM file -// -// Support for 16-bit unsigned division/modulus. -// -// Copyright (C) 2003-2014 Free Software Foundation, Inc. -// Contributed by Picochip Ltd. -// Maintained by Daniel Towner (daniel.towner@picochip.com) -// -// 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, 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/>. - -.section .text - -.global __udivmodhi4 -__udivmodhi4: -_picoMark_FUNCTION_BEGIN= - -// picoChip Function Prologue : &__udivmodhi4 = 6 bytes - - // 16-bit unsigned division. The divstep function is only capable of - // handling 15-bit division (plus a sign to give 16-bits). It is not - // capable of handling unsigned division directly. Instead, take - // advantage of the special property that - // ((divisor / 2) / dividend) * 2 will be almost good enough. The - // error in the result is only 0 or 1, and this can be easily - // tested and corrected. A full description of the algorithm can - // be found in `Hacker's Delight', by Henry Warren, page 146. - - // Input: - // r0 - dividend - // r1 - divisor - // Output: - // r0 - quotient - // r1 - remainder - - // Note that the lr, and original inputs are speculatively saved. They - // will only be restored if the 15-bit division function is called. - - sub.0 r1,0,r15 \ stl r[0:1],(fp)-1 - bge divisorIs15bit -=-> sub.0 r0,r1,r2 \ stw lr,(fp)-3 - - // The divisor is >= 2^15. - bhs quotientIs1 - - // The dividend < divisor. The quotient is thus 0, and the - // remainder is the dividend. - copy.0 r0,r1 \ jr (lr) -=-> copy.0 0,r0 - -quotientIs1: - // The dividend >= divisor. The quotient is thus 1, and the - // remainder can be computed directly by subtraction (i.e., the - // result of the comparison already performed to branch here). - jr (lr) \ copy.0 r2,r1 -=-> copy.0 1,r0 - -divisorIs15bit: - // The divisor is < 2^15. - - // Divide the original dividend by 2, and call the 15-bit division. - // Note that the original dividend is stored in r5, which is - // known to be unused by the called function, so that - // a memory stall isn't introduced immediately after the - // function returns, to reload this value from memory. - - jl (&__divmod15) \ copy.0 r0,r5 // fn_call &__divmod15 -=-> lsr.0 r0,1,r0 - - // Compute the new quotient and remainder by multiplying them by 2. - // The remainder will be 1 out, if the original dividend was odd. - and.0 r5,1,r5 \ ldl (fp)-1,r[2:3] - add.0 [lsl r1,1],r5,r1 \ lsl.1 r0,1,r0 - - // The error in the quotient is 0 or 1. The error can be determined - // by comparing the remainder to the original divisor. If the - // remainder is bigger, then an error of 1 has been introduced. - sub.0 r1,r3,r15 \ ldw (fp)-3,lr - blo noCompensation -=-> nop - add.0 r0,1,r0 \ sub.1 r1,r3,r1 -noCompensation: - jr (lr) - -_picoMark_FUNCTION_END= -// picoChip Function Epilogue : udivmodhi4 - - -//============================================================================ -// All DWARF information between this marker, and the END OF DWARF -// marker should be included in the source file. Search for -// FUNCTION_STACK_SIZE_GOES_HERE and FUNCTION NAME GOES HERE, and -// provide the relevant information. Add markers called -// _picoMark_FUNCTION_BEGIN and _picoMark_FUNCTION_END around the -// function in question. -//============================================================================ - -//============================================================================ -// Frame information. -//============================================================================ - -.section .debug_frame -_picoMark_DebugFrame= - -// Common CIE header. -.unalignedInitLong _picoMark_CieEnd-_picoMark_CieBegin -_picoMark_CieBegin= -.unalignedInitLong 0xffffffff -.initByte 0x1 // CIE Version -.ascii 16#0# // CIE Augmentation -.uleb128 0x1 // CIE Code Alignment Factor -.sleb128 2 // CIE Data Alignment Factor -.initByte 0xc // CIE RA Column -.initByte 0xc // DW_CFA_def_cfa -.uleb128 0xd -.uleb128 0x0 -.align 2 -_picoMark_CieEnd= - -// FDE -_picoMark_LSFDE0I900821033007563= -.unalignedInitLong _picoMark_FdeEnd-_picoMark_FdeBegin -_picoMark_FdeBegin= -.unalignedInitLong _picoMark_DebugFrame // FDE CIE offset -.unalignedInitWord _picoMark_FUNCTION_BEGIN // FDE initial location -.unalignedInitWord _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN -.initByte 0xe // DW_CFA_def_cfa_offset -.uleb128 0x6 // <-- FUNCTION_STACK_SIZE_GOES_HERE -.initByte 0x4 // DW_CFA_advance_loc4 -.unalignedInitLong _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN -.initByte 0xe // DW_CFA_def_cfa_offset -.uleb128 0x0 -.align 2 -_picoMark_FdeEnd= - -//============================================================================ -// Abbrevation information. -//============================================================================ - -.section .debug_abbrev -_picoMark_ABBREVIATIONS= - -.section .debug_abbrev - .uleb128 0x1 // (abbrev code) - .uleb128 0x11 // (TAG: DW_TAG_compile_unit) - .initByte 0x1 // DW_children_yes - .uleb128 0x10 // (DW_AT_stmt_list) - .uleb128 0x6 // (DW_FORM_data4) - .uleb128 0x12 // (DW_AT_high_pc) - .uleb128 0x1 // (DW_FORM_addr) - .uleb128 0x11 // (DW_AT_low_pc) - .uleb128 0x1 // (DW_FORM_addr) - .uleb128 0x25 // (DW_AT_producer) - .uleb128 0x8 // (DW_FORM_string) - .uleb128 0x13 // (DW_AT_language) - .uleb128 0x5 // (DW_FORM_data2) - .uleb128 0x3 // (DW_AT_name) - .uleb128 0x8 // (DW_FORM_string) -.initByte 0x0 -.initByte 0x0 - - .uleb128 0x2 ;# (abbrev code) - .uleb128 0x2e ;# (TAG: DW_TAG_subprogram) -.initByte 0x0 ;# DW_children_no - .uleb128 0x3 ;# (DW_AT_name) - .uleb128 0x8 ;# (DW_FORM_string) - .uleb128 0x11 ;# (DW_AT_low_pc) - .uleb128 0x1 ;# (DW_FORM_addr) - .uleb128 0x12 ;# (DW_AT_high_pc) - .uleb128 0x1 ;# (DW_FORM_addr) -.initByte 0x0 -.initByte 0x0 - -.initByte 0x0 - -//============================================================================ -// Line information. DwarfLib requires this to be present, but it can -// be empty. -//============================================================================ - -.section .debug_line -_picoMark_LINES= - -//============================================================================ -// Debug Information -//============================================================================ -.section .debug_info - -//Fixed header. -.unalignedInitLong _picoMark_DEBUG_INFO_END-_picoMark_DEBUG_INFO_BEGIN -_picoMark_DEBUG_INFO_BEGIN= -.unalignedInitWord 0x2 -.unalignedInitLong _picoMark_ABBREVIATIONS -.initByte 0x2 - -// Compile unit information. -.uleb128 0x1 // (DIE 0xb) DW_TAG_compile_unit) -.unalignedInitLong _picoMark_LINES -.unalignedInitWord _picoMark_FUNCTION_END -.unalignedInitWord _picoMark_FUNCTION_BEGIN -// Producer is `picoChip' -.ascii 16#70# 16#69# 16#63# 16#6f# 16#43# 16#68# 16#69# 16#70# 16#00# -.unalignedInitWord 0xcafe // ASM language -.ascii 16#0# // Name. DwarfLib expects this to be present. - -.uleb128 0x2 ;# (DIE DW_TAG_subprogram) - -// FUNCTION NAME GOES HERE. Use `echo name | od -t x1' to get the hex. Each hex -// digit is specified using the format 16#XX# -.ascii 16#5f# 16#75# 16#64# 16#69# 16#76# 16#6d# 16#6f# 16#64# 16#68# 16#69# 16#34# 16#0# // Function name `_udivmodhi4' -.unalignedInitWord _picoMark_FUNCTION_BEGIN // DW_AT_low_pc -.unalignedInitWord _picoMark_FUNCTION_END // DW_AT_high_pc - -.initByte 0x0 // end of compile unit children. - -_picoMark_DEBUG_INFO_END= - -//============================================================================ -// END OF DWARF -//============================================================================ -.section .endFile -// End of picoChip ASM file diff --git a/libgcc/config/picochip/udivmodsi4.S b/libgcc/config/picochip/udivmodsi4.S deleted file mode 100644 index c468bc0e326..00000000000 --- a/libgcc/config/picochip/udivmodsi4.S +++ /dev/null @@ -1,318 +0,0 @@ -// picoChip ASM file -// -// Support for 32-bit unsigned division/modulus. -// -// Copyright (C) 2003-2014 Free Software Foundation, Inc. -// Contributed by Picochip Ltd. -// Maintained by Daniel Towner (daniel.towner@picochip.com) -// -// 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, 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/>. - -.section .text - -.align 8 -.global __udivmodsi4 -__udivmodsi4: -_picoMark_FUNCTION_BEGIN= -// picoChip Function Prologue : &__udivmodsi4 = 24 bytes - - // Schedule the register saves alongside the special cases, so that - // if the special cases fail, the registers will have already - // been stored onto the stack. - SUB.0 R3,R1,r15 \ STL R[13:12],(FP)-1 - BHS skipCommonCase \ STL R[9:8],(FP)-4 -=-> SUB.0 R2,1,r15 \ STL R[11:10],(FP)-3 - -_L2: - // Flags set above, and in _L2 caller. - BNE restOfCode -=-> SUB.0 R3,0,r15 - BNE restOfCode -=-> COPY.0 R0,R4 \ COPY.1 R1,R5 - JR (R12) // Return to caller -=-> COPY.0 0,R6 \ COPY.1 0,R7 - // Never reach here - -skipCommonCase: - SUB.0 R3,R1,r15 - BNE _L3 // (Reversed branch) -=-> SUB.0 R2,R0,r15 // Must be set in delay slot, so ready by _L9 - -_L9: - BLO _L2 // (Reversed branch) -=-> SUB.0 R2,1,r15 - -_L3: - SUB.0 R2,R0,r15 - BEQ _L10 // (Reversed branch) -=-> SUB.0 R1,R3,r15 // Set flags for branch at _L10 - -_L4: - // greater than - COPY.0 0,R4 \ COPY.1 0,R5 \ JR (R12) // Return to caller -=-> COPY.0 R0,R6 \ COPY.1 R1,R7 - // Doesn't reach here. - -_L10: - // Flags set in _L10 call delay slot. - BNE _L4 -=-> COPY.0 1,R4 \ COPY.1 0,R5 - JR (R12) // Return to caller -=-> COPY.0 0,R6 \ COPY.1 0,R7 - -restOfCode: - -// Prologue - - // Register saves scheduled alongside special cases above. - ADD.0 FP,-20,FP \ STW R14,(FP)-4 - - // The following can be scheduled together. - // dividend in R[9:8] (from R[1:0]) - // divisor in R[7:6] (from R[3:2]) - // R14 := clzsi2 (dividend) - // R0 := clzsi2 (divisor) - JL (&__clzsi2) \ COPY.0 R0,R8 \ COPY.1 R1,R9 -=-> COPY.0 R2,R6 \ COPY.1 R3,R7 - COPY.0 R0,R14 \ JL (&__clzsi2) -=-> COPY.0 R6,R0 \ COPY.1 R7,R1 - - // R14 := R0 - R14 - SUB.0 R0,R14,R14 - - ADD.0 R14,1,R0 // R0 := R14 + 1 (HI) - - // R[11:10] = R[7,6] << R14 - SUB.0 15,R14,r15 - LSL.0 R6,R14,R11 \ BLT setupDivstepLoop -=-> SUB.0 0,R14,R4 \ COPY.1 0,R10 - - // Zero shift is a special case. Shifting by zero within a 16-bit - // source object is fine, but don't execute the OR of the right-shift - // into the final result. - LSL.0 R7,R14,R11 \ BEQ setupDivstepLoop -=-> LSL.0 R6,R14,R10 - - LSR.0 R6,R4,R4 - OR.0 R11,R4,R11 - -setupDivstepLoop: - - // R[5:4] := R[9:8] (SI) - COPY.0 R8,R4 \ COPY.1 R9,R5 - COPY.0 0,R6 \ COPY.1 R0,R8 - - // Store original value of loopCount for use after the loop. - // The Subtraction is handled in the tail of the loop iteration - // after this point. - SUB.0 R4,R10,R0 \ COPY.1 R8,R14 - - // workingResult in R4,5,6 - // temps in r0,1,2 and r7 - // alignedDivisor in R10,11 - // loopCount in r8 - // r3, r9 scratch, used for renaming. - -loopStart: - // R0 := R4 - zeroExtend (R10) - only need 33-bits (i.e., 48-bits) - SUBB.0 R5,R11,R1 \ LSR.1 R0,15,R3 - SUBB.0 R6,0,R2 \ LSR.1 R1,15,R6 - - // if (carry) goto shiftOnly - SUB.0 R8,1,R8 \ BNE shiftOnly -=-> LSR.0 R4,15,R7 \ LSL.1 R1,1,R9 - - OR.0 [LSL R0,1],1,R4 \ BNE loopStart -=-> SUB.0 R4,R10,R0 \ OR.1 R9,R3,R5 - - BRA loopEnd - -shiftOnly: - - OR.0 [LSL R5,1],R7,R5 \ BNE loopStart \ LSR.1 R5,15,R6 -=-> SUB.0 [LSL R4,1],R10,R0 \LSL.1 R4,1,R4 - -// End of loop -loopEnd: - - // Schedule the computation of the upper word after shifting - // alongside the decision over whether to branch, and the register - // restores. - // R10 is filled with a useful constant. - SUB.0 15,r14,r15 \ LDL (FP)4,R[13:12] - SUB.1 0,R14,R1 // Don't set flags! - LSL.0 R6,R1,R3 \ LDL (FP)-4,R[9:8] - - BLT remainderHasMoreThan16Bits \ LSR.0 R5,R14,R7 \ COPY.1 -1,R10 -=-> LSL.0 R5,R1,R2 \ OR.1 R7,R3,R3 - - LSR.0 R4,R14,R3 \ COPY.1 R3,R7 - BRA epilogue \ LSR.0 -1,R1,R0 \ COPY.1 0,R5 -=-> OR.0 R3,R2,R6 \ AND.1 R0,R4,R4 - -remainderHasMoreThan16Bits: - - LSL.0 R10,R14,R1 \ COPY.1 R3,R6 - XOR.0 R10,R1,R1 \ COPY.1 0,R7 - AND.0 R1,R5,R5 - -epilogue: - - JR (R12) \ LDW (FP)-4,R14 -=-> LDL (FP)-3,R[11:10] - -_picoMark_FUNCTION_END= - -// picoChip Function Epilogue : udivmodsi4 - -//============================================================================ -// All DWARF information between this marker, and the END OF DWARF -// marker should be included in the source file. Search for -// FUNCTION_STACK_SIZE_GOES_HERE and FUNCTION NAME GOES HERE, and -// provide the relevant information. Add markers called -// _picoMark_FUNCTION_BEGIN and _picoMark_FUNCTION_END around the -// function in question. -//============================================================================ - -//============================================================================ -// Frame information. -//============================================================================ - -.section .debug_frame -_picoMark_DebugFrame= - -// Common CIE header. -.unalignedInitLong _picoMark_CieEnd-_picoMark_CieBegin -_picoMark_CieBegin= -.unalignedInitLong 0xffffffff -.initByte 0x1 // CIE Version -.ascii 16#0# // CIE Augmentation -.uleb128 0x1 // CIE Code Alignment Factor -.sleb128 2 // CIE Data Alignment Factor -.initByte 0xc // CIE RA Column -.initByte 0xc // DW_CFA_def_cfa -.uleb128 0xd -.uleb128 0x0 -.align 2 -_picoMark_CieEnd= - -// FDE -_picoMark_LSFDE0I900821033007563= -.unalignedInitLong _picoMark_FdeEnd-_picoMark_FdeBegin -_picoMark_FdeBegin= -.unalignedInitLong _picoMark_DebugFrame // FDE CIE offset -.unalignedInitWord _picoMark_FUNCTION_BEGIN // FDE initial location -.unalignedInitWord _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN -.initByte 0xe // DW_CFA_def_cfa_offset -.uleb128 0x18 // <-- FUNCTION_STACK_SIZE_GOES_HERE -.initByte 0x4 // DW_CFA_advance_loc4 -.unalignedInitLong _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN -.initByte 0xe // DW_CFA_def_cfa_offset -.uleb128 0x0 -.align 2 -_picoMark_FdeEnd= - -//============================================================================ -// Abbrevation information. -//============================================================================ - -.section .debug_abbrev -_picoMark_ABBREVIATIONS= - -.section .debug_abbrev - .uleb128 0x1 // (abbrev code) - .uleb128 0x11 // (TAG: DW_TAG_compile_unit) - .initByte 0x1 // DW_children_yes - .uleb128 0x10 // (DW_AT_stmt_list) - .uleb128 0x6 // (DW_FORM_data4) - .uleb128 0x12 // (DW_AT_high_pc) - .uleb128 0x1 // (DW_FORM_addr) - .uleb128 0x11 // (DW_AT_low_pc) - .uleb128 0x1 // (DW_FORM_addr) - .uleb128 0x25 // (DW_AT_producer) - .uleb128 0x8 // (DW_FORM_string) - .uleb128 0x13 // (DW_AT_language) - .uleb128 0x5 // (DW_FORM_data2) - .uleb128 0x3 // (DW_AT_name) - .uleb128 0x8 // (DW_FORM_string) -.initByte 0x0 -.initByte 0x0 - - .uleb128 0x2 ;# (abbrev code) - .uleb128 0x2e ;# (TAG: DW_TAG_subprogram) -.initByte 0x0 ;# DW_children_no - .uleb128 0x3 ;# (DW_AT_name) - .uleb128 0x8 ;# (DW_FORM_string) - .uleb128 0x11 ;# (DW_AT_low_pc) - .uleb128 0x1 ;# (DW_FORM_addr) - .uleb128 0x12 ;# (DW_AT_high_pc) - .uleb128 0x1 ;# (DW_FORM_addr) -.initByte 0x0 -.initByte 0x0 - -.initByte 0x0 - -//============================================================================ -// Line information. DwarfLib requires this to be present, but it can -// be empty. -//============================================================================ - -.section .debug_line -_picoMark_LINES= - -//============================================================================ -// Debug Information -//============================================================================ -.section .debug_info - -//Fixed header. -.unalignedInitLong _picoMark_DEBUG_INFO_END-_picoMark_DEBUG_INFO_BEGIN -_picoMark_DEBUG_INFO_BEGIN= -.unalignedInitWord 0x2 -.unalignedInitLong _picoMark_ABBREVIATIONS -.initByte 0x2 - -// Compile unit information. -.uleb128 0x1 // (DIE 0xb) DW_TAG_compile_unit) -.unalignedInitLong _picoMark_LINES -.unalignedInitWord _picoMark_FUNCTION_END -.unalignedInitWord _picoMark_FUNCTION_BEGIN -// Producer is `picoChip' -.ascii 16#70# 16#69# 16#63# 16#6f# 16#43# 16#68# 16#69# 16#70# 16#00# -.unalignedInitWord 0xcafe // ASM language -.ascii 16#0# // Name. DwarfLib expects this to be present. - -.uleb128 0x2 ;# (DIE DW_TAG_subprogram) - -// FUNCTION NAME GOES HERE. Use `echo name | od -t x1' to get the hex. Each hex -// digit is specified using the format 16#XX# -.ascii 16#5f# 16#75# 16#64# 16#69# 16#76# 16#6d# 16#6f# 16#64# 16#73# 16#69# 16#34# 16#0# // Function name `_udivmodsi4' -.unalignedInitWord _picoMark_FUNCTION_BEGIN // DW_AT_low_pc -.unalignedInitWord _picoMark_FUNCTION_END // DW_AT_high_pc - -.initByte 0x0 // end of compile unit children. - -_picoMark_DEBUG_INFO_END= - -//============================================================================ -// END OF DWARF -//============================================================================ -.section .endFile -// End of picoChip ASM file |