diff options
Diffstat (limited to 'libgcc/config/h8300')
-rw-r--r-- | libgcc/config/h8300/clzhi2.c | 35 | ||||
-rw-r--r-- | libgcc/config/h8300/ctzhi2.c | 35 | ||||
-rw-r--r-- | libgcc/config/h8300/fixunssfsi.c | 41 | ||||
-rw-r--r-- | libgcc/config/h8300/parityhi2.c | 36 | ||||
-rw-r--r-- | libgcc/config/h8300/popcounthi2.c | 36 | ||||
-rw-r--r-- | libgcc/config/h8300/t-h8300 | 10 |
6 files changed, 193 insertions, 0 deletions
diff --git a/libgcc/config/h8300/clzhi2.c b/libgcc/config/h8300/clzhi2.c new file mode 100644 index 0000000..54db7b9 --- /dev/null +++ b/libgcc/config/h8300/clzhi2.c @@ -0,0 +1,35 @@ +/* The implementation of __clzhi2. + Copyright (C) 2003, 2009 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/>. */ + +int __clzhi2 (unsigned short x); + +int +__clzhi2 (unsigned short x) +{ + int i; + for (i = 0; i < 16; i++) + if (x & ((unsigned short) 1 << (15 - i))) + break; + return i; +} diff --git a/libgcc/config/h8300/ctzhi2.c b/libgcc/config/h8300/ctzhi2.c new file mode 100644 index 0000000..ba6f8e9 --- /dev/null +++ b/libgcc/config/h8300/ctzhi2.c @@ -0,0 +1,35 @@ +/* The implementation of __ctzhi2. + Copyright (C) 2003, 2009 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/>. */ + +int __ctzhi2 (unsigned short x); + +int +__ctzhi2 (unsigned short x) +{ + int i; + for (i = 0; i < 16; i++) + if (x & ((unsigned short) 1 << i)) + break; + return i; +} diff --git a/libgcc/config/h8300/fixunssfsi.c b/libgcc/config/h8300/fixunssfsi.c new file mode 100644 index 0000000..940d0c6 --- /dev/null +++ b/libgcc/config/h8300/fixunssfsi.c @@ -0,0 +1,41 @@ +/* More subroutines needed by GCC output code on some machines. */ +/* Compile this one with gcc. */ +/* Copyright (C) 1989, 1992, 2001, 2002, 2003, 2004, 2009, 2011 + 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/>. */ + +/* The libgcc2.c implementation gets confused by our type setup and creates + a directly recursive call, so we do our own implementation. For + the H8/300, that's in lib1funcs.S, for H8/300H and H8S, it's here. */ + +#ifndef __H8300__ +long __fixunssfsi (float a); + +long +__fixunssfsi (float a) +{ + if (a >= (float) 32768L) + return (long) (a - 32768L) + 32768L; + return (long) a; +} +#endif diff --git a/libgcc/config/h8300/parityhi2.c b/libgcc/config/h8300/parityhi2.c new file mode 100644 index 0000000..d58cb89 --- /dev/null +++ b/libgcc/config/h8300/parityhi2.c @@ -0,0 +1,36 @@ +/* The implementation of __parityhi2. + Copyright (C) 2003, 2009 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/>. */ + +int __parityhi2 (unsigned short x); + +int +__parityhi2 (unsigned short x) +{ + int i; + int count = 0; + for (i = 0; i < 16; i++) + if (x & ((unsigned short) 1 << i)) + count++; + return count & 1; +} diff --git a/libgcc/config/h8300/popcounthi2.c b/libgcc/config/h8300/popcounthi2.c new file mode 100644 index 0000000..47be193 --- /dev/null +++ b/libgcc/config/h8300/popcounthi2.c @@ -0,0 +1,36 @@ +/* The implementation of __popcounthi2. + Copyright (C) 2003, 2009 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/>. */ + +int __popcounthi2 (unsigned short x); + +int +__popcounthi2 (unsigned short x) +{ + int i; + int count = 0; + for (i = 0; i < 16; i++) + if (x & ((unsigned short) 1 << i)) + count++; + return count; +} diff --git a/libgcc/config/h8300/t-h8300 b/libgcc/config/h8300/t-h8300 index 4602ff8..750529d 100644 --- a/libgcc/config/h8300/t-h8300 +++ b/libgcc/config/h8300/t-h8300 @@ -1,3 +1,13 @@ LIB1ASMSRC = h8300/lib1funcs.S LIB1ASMFUNCS = _cmpsi2 _ucmpsi2 _divhi3 _divsi3 _mulhi3 _mulsi3 \ _fixunssfsi_asm + +LIB2ADD = \ + $(srcdir)/config/h8300/clzhi2.c \ + $(srcdir)/config/h8300/ctzhi2.c \ + $(srcdir)/config/h8300/parityhi2.c \ + $(srcdir)/config/h8300/popcounthi2.c \ + $(srcdir)/config/h8300/fixunssfsi.c + +# We do not have DF type, so fake out the libgcc2 compilation. +HOST_LIBGCC2_CFLAGS = -DDF=SF |