summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>2002-02-02 19:03:57 +0000
committerEric Andersen <andersen@codepoet.org>2002-02-02 19:03:57 +0000
commit8dc1d08d0c3a5abe3856b04a5a864227fe0ba62d (patch)
tree65d254a60aec64fb933cf3c4c11ffa7235e02413
parent327b0c83302af0a288c65a03f4f2c82af321bd28 (diff)
Add in support for the Hitach H8/300H architecture,
contributed by Yoshinori Sato <qzb04471@nifty.ne.jp>
-rw-r--r--Makefile2
-rw-r--r--extra/Configs/Config.h8300195
-rw-r--r--include/features.h2
-rw-r--r--libc/misc/internals/__uClibc_main.c4
-rw-r--r--libc/sysdeps/linux/h8300/Makefile75
-rw-r--r--libc/sysdeps/linux/h8300/bits/byteswap.h67
-rw-r--r--libc/sysdeps/linux/h8300/bits/cmathcalls.h159
-rw-r--r--libc/sysdeps/linux/h8300/bits/confname.h566
-rw-r--r--libc/sysdeps/linux/h8300/bits/dirent.h62
-rw-r--r--libc/sysdeps/linux/h8300/bits/dlfcn.h37
-rw-r--r--libc/sysdeps/linux/h8300/bits/elfclass.h11
-rw-r--r--libc/sysdeps/linux/h8300/bits/endian.h7
-rw-r--r--libc/sysdeps/linux/h8300/bits/environments.h59
-rw-r--r--libc/sysdeps/linux/h8300/bits/errno.h64
-rw-r--r--libc/sysdeps/linux/h8300/bits/fcntl.h141
-rw-r--r--libc/sysdeps/linux/h8300/bits/fenv.h79
-rw-r--r--libc/sysdeps/linux/h8300/bits/fenvinline.h8
-rw-r--r--libc/sysdeps/linux/h8300/bits/huge_val.h75
-rw-r--r--libc/sysdeps/linux/h8300/bits/in.h128
-rw-r--r--libc/sysdeps/linux/h8300/bits/initspin.h28
-rw-r--r--libc/sysdeps/linux/h8300/bits/ioctl-types.h77
-rw-r--r--libc/sysdeps/linux/h8300/bits/ioctls.h108
-rw-r--r--libc/sysdeps/linux/h8300/bits/ipc.h50
-rw-r--r--libc/sysdeps/linux/h8300/bits/libc-lock.h214
-rw-r--r--libc/sysdeps/linux/h8300/bits/local_lim.h55
-rw-r--r--libc/sysdeps/linux/h8300/bits/locale.h44
-rw-r--r--libc/sysdeps/linux/h8300/bits/mathcalls.h336
-rw-r--r--libc/sysdeps/linux/h8300/bits/mathdef.h47
-rw-r--r--libc/sysdeps/linux/h8300/bits/mathinline.h525
-rw-r--r--libc/sysdeps/linux/h8300/bits/mman.h75
-rw-r--r--libc/sysdeps/linux/h8300/bits/msq.h70
-rw-r--r--libc/sysdeps/linux/h8300/bits/nan.h48
-rw-r--r--libc/sysdeps/linux/h8300/bits/netdb.h33
-rw-r--r--libc/sysdeps/linux/h8300/bits/poll.h51
-rw-r--r--libc/sysdeps/linux/h8300/bits/posix1_lim.h141
-rw-r--r--libc/sysdeps/linux/h8300/bits/posix2_lim.h100
-rw-r--r--libc/sysdeps/linux/h8300/bits/posix_opt.h110
-rw-r--r--libc/sysdeps/linux/h8300/bits/pthreadtypes.h122
-rw-r--r--libc/sysdeps/linux/h8300/bits/resource.h204
-rw-r--r--libc/sysdeps/linux/h8300/bits/sched.h73
-rw-r--r--libc/sysdeps/linux/h8300/bits/select.h109
-rw-r--r--libc/sysdeps/linux/h8300/bits/sem.h88
-rw-r--r--libc/sysdeps/linux/h8300/bits/setjmp.h43
-rw-r--r--libc/sysdeps/linux/h8300/bits/shm.h84
-rw-r--r--libc/sysdeps/linux/h8300/bits/sigaction.h77
-rw-r--r--libc/sysdeps/linux/h8300/bits/sigcontext.h29
-rw-r--r--libc/sysdeps/linux/h8300/bits/siginfo.h279
-rw-r--r--libc/sysdeps/linux/h8300/bits/signum.h80
-rw-r--r--libc/sysdeps/linux/h8300/bits/sigset.h125
-rw-r--r--libc/sysdeps/linux/h8300/bits/sigstack.h55
-rw-r--r--libc/sysdeps/linux/h8300/bits/sigthread.h41
-rw-r--r--libc/sysdeps/linux/h8300/bits/sockaddr.h47
-rw-r--r--libc/sysdeps/linux/h8300/bits/socket.h310
-rw-r--r--libc/sysdeps/linux/h8300/bits/stab.def234
-rw-r--r--libc/sysdeps/linux/h8300/bits/stat.h127
-rw-r--r--libc/sysdeps/linux/h8300/bits/statfs.h61
-rw-r--r--libc/sysdeps/linux/h8300/bits/statvfs.h99
-rw-r--r--libc/sysdeps/linux/h8300/bits/stdio-lock.h39
-rw-r--r--libc/sysdeps/linux/h8300/bits/stdio.h168
-rw-r--r--libc/sysdeps/linux/h8300/bits/stdio_lim.h37
-rw-r--r--libc/sysdeps/linux/h8300/bits/string.h26
-rw-r--r--libc/sysdeps/linux/h8300/bits/string2.h1214
-rw-r--r--libc/sysdeps/linux/h8300/bits/stropts.h219
-rw-r--r--libc/sysdeps/linux/h8300/bits/syscall.h498
-rw-r--r--libc/sysdeps/linux/h8300/bits/syscalls.h8
-rw-r--r--libc/sysdeps/linux/h8300/bits/termios.h212
-rw-r--r--libc/sysdeps/linux/h8300/bits/time.h59
-rw-r--r--libc/sysdeps/linux/h8300/bits/types.h142
-rw-r--r--libc/sysdeps/linux/h8300/bits/uio.h46
-rw-r--r--libc/sysdeps/linux/h8300/bits/ustat.h27
-rw-r--r--libc/sysdeps/linux/h8300/bits/utmp.h105
-rw-r--r--libc/sysdeps/linux/h8300/bits/utmpx.h86
-rw-r--r--libc/sysdeps/linux/h8300/bits/utsname.h29
-rw-r--r--libc/sysdeps/linux/h8300/bits/waitflags.h30
-rw-r--r--libc/sysdeps/linux/h8300/bits/waitstatus.h104
-rw-r--r--libc/sysdeps/linux/h8300/bits/wchar.h26
-rw-r--r--libc/sysdeps/linux/h8300/bits/wordsize.h19
-rw-r--r--libc/sysdeps/linux/h8300/bits/xopen_lim.h96
-rw-r--r--libc/sysdeps/linux/h8300/crt0.S69
-rw-r--r--libc/sysdeps/linux/h8300/float.h96
-rw-r--r--libc/sysdeps/linux/h8300/ptrace.c33
-rw-r--r--libc/sysdeps/linux/h8300/setjmp.S43
-rw-r--r--libc/sysdeps/linux/h8300/vfork.S31
83 files changed, 9599 insertions, 3 deletions
diff --git a/Makefile b/Makefile
index 359bcd813..b4fafeff9 100644
--- a/Makefile
+++ b/Makefile
@@ -71,6 +71,8 @@ headers: dummy
ln -fs $(KERNEL_SOURCE)/include/asm-v850 include/asm; \
elif [ $(TARGET_ARCH) = "mipsel" ];then \
ln -fs $(KERNEL_SOURCE)/include/asm-mips include/asm; \
+ elif [ $(TARGET_ARCH) = "h8300" ];then \
+ ln -fs $(KERNEL_SOURCE)/include/asm-h8300 include/asm; \
else \
if [ $(HAS_MMU) != "true" ]; then \
ln -fs $(KERNEL_SOURCE)/include/asm-$(TARGET_ARCH)nommu include/asm;\
diff --git a/extra/Configs/Config.h8300 b/extra/Configs/Config.h8300
new file mode 100644
index 000000000..56d0ef3a2
--- /dev/null
+++ b/extra/Configs/Config.h8300
@@ -0,0 +1,195 @@
+# Library Configuration rules for uClibc
+#
+# This file contains rules which are shared between multiple Makefiles. All
+# normal configuration options live in the file named "Config". You probably
+# should not mess with this file unless you know what you are doing...
+#
+# Copyright (C) 2002 Erik Andersen <andersee@debian.org>
+#
+# This program is free software; you can redistribute it and/or modify it under
+# the terms of the GNU Library General Public License as published by the Free
+# Software Foundation; either version 2 of the License, or (at your option) any
+# later version.
+#
+# This program 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 Library General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Library General Public License
+# along with this program; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# Derived in part from the Linux-8086 C library, the GNU C Library, and several
+# other sundry sources. Files within this library are copyright by their
+# respective copyright holders.
+
+# What arch do you want to compile for...
+#TARGET_ARCH=arm
+#TARGET_ARCH=i386
+#TARGET_ARCH=m68k
+#TARGET_ARCH=powerpc
+#TARGET_ARCH=sh
+#TARGET_ARCH=sparc
+TARGET_ARCH=h8300
+
+# If you are running a cross compiler, you may want to set this
+# to something more interesting...
+NATIVE_CC = gcc
+CROSS = h8300-hitachi-hms-
+CC = $(CROSS)gcc
+AR = $(CROSS)ar
+LD = $(CROSS)ld
+NM = $(CROSS)nm
+STRIPTOOL = $(CROSS)strip
+#STRIPTOOL = /bin/true
+
+# Set the following to `true' to make a debuggable build, and `false' for
+# production builds.
+DODEBUG = false
+
+# Compiler warnings you want to see
+WARNINGS=-Wall
+
+# Note that the kernel source you use to compile with should be the same as the
+# Linux kernel you run your apps on. uClibc doesn't even try to achieve binary
+# compatibility across kernel versions. So don't expect, for example, uClibc
+# compiled with Linux kernel 2.0.x to implement lchown properly, since 2.0.x
+# can't do that. Similarly, if you compile uClibc vs Linux 2.4.x kernel headers,
+# but then run on Linux 2.0.x, lchown will be compiled into uClibc, but won't
+# work at all. You have been warned.
+KERNEL_SOURCE=/opt/uClinux/linux
+
+# Set this to `false' if your CPU doesn't have a memory management unit (MMU).
+# Set it to `true' otherwise.
+HAS_MMU = false
+
+# Set this to `false' if you don't have/need basic floating point support
+# support in libc (strtod, printf, scanf). Set it to `true' otherwise.
+# If this is not true, then libm will not be built.
+HAS_FLOATING_POINT = true
+
+# Set to `true' if you want the math library to contain the full set
+# of C99 math library features. Costs an extra 35k or so on x86.
+DO_C99_MATH = false
+
+# Set this to `false' if you don't have/need "(unsigned) long long int" support.
+# Set it to `true' otherwise.
+# Affects *printf and *scanf functions.
+# Also omits strto(u)ll, and (u)lltostr from the library if `false'.
+HAS_LONG_LONG = true
+
+# Set this to `false' if you don't have/need locale support; `true' otherwise.
+# Note: Currently only affects the ctype functions. You must also generate
+# a locale file for anything but the C locale. See directory extra/locale for
+# a utility to do so. Also see the following option.
+HAS_LOCALE = false
+
+# Set this to the path of your uClibc locale file directory.
+# Warning! This must be different than the glibc locale directory to avoid
+# name conflicts, as the locale files are entirely different in format!
+LOCALE_DIR = "/usr/share/uClibc-locale/"
+
+# This specifies which malloc implementation is used.
+# "malloc-simple" is very, very small, but is also very, very dumb
+# and does not try to make good use of memory or clean up after itself.
+#
+# "malloc" on the other hand is a bit bigger, but is pretty smart thereby
+# minimizing memory wastage and reusing already allocated memory. This
+# can be lots faster and safer IMHO.
+#
+# "malloc-930716" is from libc-5.3.12 and was/is the standard gnu malloc.
+# It is actually smaller than "malloc", at least on i386. Right now, it
+# only works on i386 (and maybe m68k) because it needs sbrk.
+MALLOC = malloc-simple
+#MALLOC = malloc
+#MALLOC = malloc-930716
+
+# If you want to collect common syscall code into one function, set to this to
+# `true'. Set it to false otherwise.
+# On i386 this saves about than 2.8k over all syscalls.
+# The idea came from the implementation in dietlibc.
+# At present, only affects i386.
+UNIFIED_SYSCALL = false
+
+# If you want large file summit support (greater then 2 Gib),
+# turn this on. This has no effect unless your kernel supports
+# lfs. This currently does nothing, but may someday...
+DOLFS = false
+
+# If you want to include RPC support, enable this. RPC is almost never used
+# for anything except NFS support, so unless you plan to use NFS, leave this
+# disabled. This is off by default.
+INCLUDE_RPC = true
+
+# If you want to include support for the next version of the Internet
+# Protocol: IP version 6, enable this. This is off by default.
+INCLUDE_IPV6 = false
+
+# If you want to compile the library as PIC code, turn this on.
+DOPIC = false
+
+#
+# ARCH_CFLAGS if your have something special to add to the CFLAGS
+#
+ARCH_CFLAGS = -mh -mint32 -fsigned-char
+#
+# this is needed for 2.4 m68knommu builds
+#
+ARCH_CFLAGS2 = -I$(KERNEL_SOURCE)/include
+#
+# get this from elsewhere, maybe
+#
+OPTIMIZATION = $(DEBUG_CFLAGS)
+
+# This is a COFF compiler (ick), so disable all the cool stuff
+HAVE_ELF = false
+
+
+
+# Enable support for shared libraries? If this is false, you can
+# ignore all the rest of the options in this file...
+HAVE_SHARED = false
+
+# uClibc has a native shared library loader for some architectures.
+BUILD_UCLIBC_LDSO=false
+
+# If you are using shared libraries, but do not want/have a native
+# uClibc shared library loader, please specify the name of your
+# system's shared library loader here...
+#SYSTEM_LDSO=/lib/ld-linux.so.2
+
+# When using shared libraries, this path is the location where the
+# shared library will be invoked. This value will be compiled into
+# every binary compiled with uClibc.
+#
+# BIG FAT WARNING:
+# If you do not have a shared library loader with the correct name
+# sitting in the directory this points to, your binaries will not run.
+#SHARED_LIB_LOADER_PATH=$(DEVEL_PREFIX)/lib
+
+# DEVEL_PREFIX is the directory into which the uClibc development
+# environment will be installed. The result will look something
+# like the following:
+# DEVEL_PREFIX/
+# bin/ <contains gcc, ld, etc>
+# lib/ <contains all runtime and static libs>
+# include/ <Where all the header files go>
+# This value is used by the 'make install' Makefile target. Since this
+# directory is compiled into the uclibc cross compiler spoofer, you
+# have to recompile if you change this value...
+DEVEL_PREFIX = /opt/uClinux/$(TARGET_ARCH)-coff
+
+# SYSTEM_DEVEL_PREFIX is the directory prefix used when installing
+# usr/bin/arch-uclibc-gcc, usr/bin/arch-uclibc-ld, etc. This is only
+# used by the 'make install' target, and is not compiled into anything.
+# This defaults to $DEVEL_PREFIX, but makers of .rpms and .debs will
+# want to set this to "/" instead.
+SYSTEM_DEVEL_PREFIX = /
+
+# If you want 'make install' to install everything under a temporary
+# directory, the define PREFIX during the install step,
+# i.e., 'make PREFIX=/var/tmp/uClibc install'.
+#PREFIX = $(TOPDIR)/_install
+PREFIX =
+
diff --git a/include/features.h b/include/features.h
index cfbca88e3..54f839662 100644
--- a/include/features.h
+++ b/include/features.h
@@ -344,7 +344,7 @@
asm (".stabs \"" msg "\",30,0,0,0\n\t" \
".stabs \"" #symbol "\",1,0,0,0\n");
# define weak_alias(name, aliasname) \
- __asm__(".global alias\n.set alias,original");
+ __asm__(".global _" #aliasname "\n.set _" #aliasname ",_" #name);
#endif
#endif /* features.h */
diff --git a/libc/misc/internals/__uClibc_main.c b/libc/misc/internals/__uClibc_main.c
index c2996735f..ad17d7940 100644
--- a/libc/misc/internals/__uClibc_main.c
+++ b/libc/misc/internals/__uClibc_main.c
@@ -90,6 +90,6 @@ void __uClibc_empty_func(void)
}
weak_alias(__environ, environ);
-weak_alias(__uClibc_empty_func, __init_stdio);
-weak_alias(__uClibc_empty_func, __stdio_close_all);
+/*weak_alias(__uClibc_empty_func, __init_stdio);*/
+/*weak_alias(__uClibc_empty_func, __stdio_close_all);*/
#endif
diff --git a/libc/sysdeps/linux/h8300/Makefile b/libc/sysdeps/linux/h8300/Makefile
new file mode 100644
index 000000000..c9186e2a9
--- /dev/null
+++ b/libc/sysdeps/linux/h8300/Makefile
@@ -0,0 +1,75 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000 by Lineo, inc.
+#
+# This program is free software; you can redistribute it and/or modify it under
+# the terms of the GNU Library General Public License as published by the Free
+# Software Foundation; either version 2 of the License, or (at your option) any
+# later version.
+#
+# This program 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 Library General Public License for more
+# details.
+#
+# You should have received a copy of the GNU Library General Public License
+# along with this program; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+# Derived in part from the Linux-8086 C library, the GNU C Library, and several
+# other sundry sources. Files within this library are copyright by their
+# respective copyright holders.
+
+TOPDIR=../../../../
+include $(TOPDIR)Rules.mak
+ASFLAGS=$(CFLAGS)
+
+# If you're looking for vfork(), it is defined in include/unistd.h
+
+CRT0=crt0.S
+CRT0_OBJ=$(patsubst %.S,%.o, $(CRT0))
+
+SSRC=setjmp.S vfork.S # longjmp.S _start.S clone.S
+SOBJS=$(patsubst %.S,%.o, $(SSRC))
+
+CSRC=ptrace.c
+COBJS=$(patsubst %.c,%.o, $(CSRC))
+
+OBJS=$(SOBJS) $(MOBJ) $(COBJS)
+
+
+
+all: $(OBJS) $(LIBC)
+
+$(LIBC): ar-target
+
+ar-target: $(OBJS) $(CRT0_OBJ)
+ $(AR) $(ARFLAGS) $(LIBC) $(OBJS)
+ cp $(CRT0_OBJ) $(TOPDIR)libc/$(CRT0_OBJ)
+
+$(CRT0_OBJ): %.o : %.S
+ $(CC) $(CFLAGS) -c $< -o $@
+ $(STRIPTOOL) -x -R .note -R .comment $*.o
+
+$(SOBJS): %.o : %.S
+ $(CC) $(CFLAGS) -c $< -o $@
+ $(STRIPTOOL) -x -R .note -R .comment $*.o
+
+$(COBJS): %.o : %.c
+ $(CC) $(CFLAGS) -c $< -o $@
+ $(STRIPTOOL) -x -R .note -R .comment $*.o
+
+headers:
+ @(TOPDIR=$(TOPDIR) CC=$(CC) /bin/sh $(TOPDIR)/extra/scripts/gen_bits_syscall_h.sh > bits/syscall.h )
+ifeq ($(strip $(HAVE_ELF)),false)
+ echo "Working around compiler bug in the m68k-pic-coff toolchain"
+ cd $(TOPDIR)/include;ln -fs ../libc/sysdeps/linux/m68k/float.h .
+endif
+
+
+clean:
+ rm -f *.[oa] *~ core
+ifeq ($(strip $(HAVE_ELF)),false)
+ rm -f $(TOPDIR)/include/float.h
+endif
+
diff --git a/libc/sysdeps/linux/h8300/bits/byteswap.h b/libc/sysdeps/linux/h8300/bits/byteswap.h
new file mode 100644
index 000000000..56909f5c0
--- /dev/null
+++ b/libc/sysdeps/linux/h8300/bits/byteswap.h
@@ -0,0 +1,67 @@
+/* Macros to swap the order of bytes in integer values. m68k version.
+ Copyright (C) 1997 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ The GNU C Library 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with the GNU C Library; see the file COPYING.LIB. If not,
+ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ Boston, MA 02111-13