This is the mail archive of the libc-ports@sources.redhat.com mailing list for the libc-ports project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] MicroBlaze Port


From: David Holsgrove <david.holsgrove@petalogix.com>

Signed-off-by: David Holsgrove <david.holsgrove@petalogix.com>
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
---
 ports/ChangeLog.microblaze                         |  137 ++
 ports/sysdeps/microblaze/Implies                   |    4 +
 ports/sysdeps/microblaze/Makefile                  |   31 +
 ports/sysdeps/microblaze/Versions                  |    6 +
 ports/sysdeps/microblaze/__longjmp.S               |   55 +
 ports/sysdeps/microblaze/_mcount.S                 |   91 +
 ports/sysdeps/microblaze/abort-instr.h             |    2 +
 ports/sysdeps/microblaze/asm-syntax.h              |   44 +
 ports/sysdeps/microblaze/backtrace.c               |  117 ++
 ports/sysdeps/microblaze/backtrace_linux.c         |   48 +
 ports/sysdeps/microblaze/bits/atomic.h             |  276 +++
 ports/sysdeps/microblaze/bits/endian.h             |   30 +
 ports/sysdeps/microblaze/bits/fenv.h               |   77 +
 ports/sysdeps/microblaze/bits/link.h               |   55 +
 ports/sysdeps/microblaze/bits/setjmp.h             |   37 +
 ports/sysdeps/microblaze/bits/wordsize.h           |    3 +
 ports/sysdeps/microblaze/bsd-_setjmp.S             |   22 +
 ports/sysdeps/microblaze/bsd-setjmp.S              |   22 +
 ports/sysdeps/microblaze/configure                 |  122 ++
 ports/sysdeps/microblaze/configure.in              |   32 +
 ports/sysdeps/microblaze/crti.S                    |   90 +
 ports/sysdeps/microblaze/crtn.S                    |   55 +
 ports/sysdeps/microblaze/dl-machine.h              |  303 +++
 ports/sysdeps/microblaze/dl-tls.h                  |   29 +
 ports/sysdeps/microblaze/dl-trampoline.S           |  109 +
 ports/sysdeps/microblaze/gccframe.h                |   21 +
 ports/sysdeps/microblaze/jmpbuf-unwind.h           |   46 +
 ports/sysdeps/microblaze/ldsodefs.h                |   41 +
 ports/sysdeps/microblaze/libc-tls.c                |   32 +
 ports/sysdeps/microblaze/machine-gmon.h            |   30 +
 ports/sysdeps/microblaze/memusage.h                |   21 +
 ports/sysdeps/microblaze/nptl/Makefile             |   21 +
 ports/sysdeps/microblaze/nptl/pthread_spin_lock.c  |   30 +
 .../sysdeps/microblaze/nptl/pthread_spin_trylock.c |   27 +
 ports/sysdeps/microblaze/nptl/pthreaddef.h         |   39 +
 ports/sysdeps/microblaze/nptl/tcb-offsets.sym      |   11 +
 ports/sysdeps/microblaze/nptl/tls.h                |  162 ++
 ports/sysdeps/microblaze/preconfigure              |    3 +
 ports/sysdeps/microblaze/setjmp.S                  |   75 +
 ports/sysdeps/microblaze/stackinfo.h               |   34 +
 ports/sysdeps/microblaze/start.S                   |   67 +
 ports/sysdeps/microblaze/sysdep.h                  |  113 +
 ports/sysdeps/microblaze/tls-macros.h              |   44 +
 ports/sysdeps/unix/sysv/linux/microblaze/Makefile  |   12 +
 ports/sysdeps/unix/sysv/linux/microblaze/Versions  |   42 +
 .../unix/sysv/linux/microblaze/____longjmp_chk.S   |   29 +
 .../unix/sysv/linux/microblaze/alphasort64.c       |    1 +
 .../unix/sysv/linux/microblaze/bits/fcntl.h        |   57 +
 .../sysdeps/unix/sysv/linux/microblaze/bits/ipc.h  |   55 +
 .../sysdeps/unix/sysv/linux/microblaze/bits/mman.h |  114 +
 .../sysdeps/unix/sysv/linux/microblaze/bits/msq.h  |   77 +
 .../sysdeps/unix/sysv/linux/microblaze/bits/sem.h  |   87 +
 .../sysdeps/unix/sysv/linux/microblaze/bits/shm.h  |  102 +
 .../sysdeps/unix/sysv/linux/microblaze/bits/stat.h |  203 ++
 ports/sysdeps/unix/sysv/linux/microblaze/brk.c     |   47 +
 ports/sysdeps/unix/sysv/linux/microblaze/clone.S   |   70 +
 ports/sysdeps/unix/sysv/linux/microblaze/configure |    4 +
 .../unix/sysv/linux/microblaze/configure.in        |    5 +
 .../unix/sysv/linux/microblaze/dl-librecon.h       |    1 +
 ports/sysdeps/unix/sysv/linux/microblaze/fchown.c  |    1 +
 .../sysdeps/unix/sysv/linux/microblaze/fchownat.c  |    1 +
 ports/sysdeps/unix/sysv/linux/microblaze/fcntl.c   |    1 +
 ports/sysdeps/unix/sysv/linux/microblaze/fxstat.c  |    1 +
 .../sysdeps/unix/sysv/linux/microblaze/fxstatat.c  |    1 +
 .../unix/sysv/linux/microblaze/getdents64.c        |    1 +
 ports/sysdeps/unix/sysv/linux/microblaze/getegid.c |    1 +
 ports/sysdeps/unix/sysv/linux/microblaze/geteuid.c |    1 +
 ports/sysdeps/unix/sysv/linux/microblaze/getgid.c  |    1 +
 .../sysdeps/unix/sysv/linux/microblaze/getgroups.c |    2 +
 ports/sysdeps/unix/sysv/linux/microblaze/getmsg.c  |    1 +
 .../sysdeps/unix/sysv/linux/microblaze/getresgid.c |    1 +
 .../sysdeps/unix/sysv/linux/microblaze/getresuid.c |    1 +
 .../unix/sysv/linux/microblaze/getrlimit64.c       |    1 +
 .../unix/sysv/linux/microblaze/getsysstats.c       |   35 +
 ports/sysdeps/unix/sysv/linux/microblaze/getuid.c  |    1 +
 ports/sysdeps/unix/sysv/linux/microblaze/glob64.c  |    1 +
 .../unix/sysv/linux/microblaze/kernel_stat.h       |   32 +
 ports/sysdeps/unix/sysv/linux/microblaze/lchown.c  |    1 +
 .../sysdeps/unix/sysv/linux/microblaze/ldconfig.h  |   19 +
 ports/sysdeps/unix/sysv/linux/microblaze/lockf64.c |    1 +
 ports/sysdeps/unix/sysv/linux/microblaze/lxstat.c  |    1 +
 ports/sysdeps/unix/sysv/linux/microblaze/mmap.S    |   50 +
 ports/sysdeps/unix/sysv/linux/microblaze/msgctl.c  |  130 ++
 .../sysv/linux/microblaze/nptl/bits/pthreadtypes.h |  185 ++
 .../sysv/linux/microblaze/nptl/bits/semaphore.h    |   35 +
 .../unix/sysv/linux/microblaze/nptl/createthread.c |   23 +
 .../sysdeps/unix/sysv/linux/microblaze/nptl/fork.c |   29 +
 .../unix/sysv/linux/microblaze/nptl/ld.abilist     |   18 +
 .../linux/microblaze/nptl/libBrokenLocale.abilist  |    3 +
 .../unix/sysv/linux/microblaze/nptl/libanl.abilist |    6 +
 .../unix/sysv/linux/microblaze/nptl/libc.abilist   | 2174 ++++++++++++++++++++
 .../sysv/linux/microblaze/nptl/libcrypt.abilist    |    9 +
 .../unix/sysv/linux/microblaze/nptl/libdl.abilist  |   18 +
 .../unix/sysv/linux/microblaze/nptl/libm.abilist   |  383 ++++
 .../unix/sysv/linux/microblaze/nptl/libnsl.abilist |  127 ++
 .../sysv/linux/microblaze/nptl/libpthread.abilist  |  267 +++
 .../sysv/linux/microblaze/nptl/libresolv.abilist   |  104 +
 .../unix/sysv/linux/microblaze/nptl/librt.abilist  |   52 +
 .../linux/microblaze/nptl/libthread_db.abilist     |   48 +
 .../sysv/linux/microblaze/nptl/libutil.abilist     |    8 +
 .../unix/sysv/linux/microblaze/nptl/localplt.data  |   13 +
 .../unix/sysv/linux/microblaze/nptl/lowlevellock.c |  132 ++
 .../unix/sysv/linux/microblaze/nptl/lowlevellock.h |  292 +++
 .../unix/sysv/linux/microblaze/nptl/pt-vfork.S     |   21 +
 .../unix/sysv/linux/microblaze/nptl/pthread_once.c |   90 +
 .../unix/sysv/linux/microblaze/nptl/vfork.S        |   46 +
 .../unix/sysv/linux/microblaze/oldgetrlimit64.c    |    1 +
 .../unix/sysv/linux/microblaze/profil-counter.h    |   20 +
 ports/sysdeps/unix/sysv/linux/microblaze/putmsg.c  |    1 +
 .../sysdeps/unix/sysv/linux/microblaze/readdir64.c |    1 +
 .../unix/sysv/linux/microblaze/readdir64_r.c       |    1 +
 .../sysdeps/unix/sysv/linux/microblaze/scandir64.c |    1 +
 ports/sysdeps/unix/sysv/linux/microblaze/semctl.c  |  189 ++
 ports/sysdeps/unix/sysv/linux/microblaze/setegid.c |    1 +
 ports/sysdeps/unix/sysv/linux/microblaze/seteuid.c |    1 +
 .../sysdeps/unix/sysv/linux/microblaze/setfsgid.c  |    1 +
 .../sysdeps/unix/sysv/linux/microblaze/setfsuid.c  |    1 +
 ports/sysdeps/unix/sysv/linux/microblaze/setgid.c  |    1 +
 .../sysdeps/unix/sysv/linux/microblaze/setgroups.c |    2 +
 .../sysdeps/unix/sysv/linux/microblaze/setregid.c  |    1 +
 .../sysdeps/unix/sysv/linux/microblaze/setresgid.c |    1 +
 .../sysdeps/unix/sysv/linux/microblaze/setresuid.c |    1 +
 .../sysdeps/unix/sysv/linux/microblaze/setreuid.c  |    1 +
 .../sysdeps/unix/sysv/linux/microblaze/setrlimit.c |    1 +
 ports/sysdeps/unix/sysv/linux/microblaze/setuid.c  |    1 +
 ports/sysdeps/unix/sysv/linux/microblaze/shmctl.c  |  154 ++
 .../unix/sysv/linux/microblaze/sigcontextinfo.h    |   25 +
 ports/sysdeps/unix/sysv/linux/microblaze/socket.S  |  126 ++
 .../unix/sysv/linux/microblaze/sys/procfs.h        |  123 ++
 .../sysdeps/unix/sysv/linux/microblaze/sys/user.h  |   77 +
 ports/sysdeps/unix/sysv/linux/microblaze/syscall.S |   37 +
 .../unix/sysv/linux/microblaze/syscalls.list       |    8 +
 ports/sysdeps/unix/sysv/linux/microblaze/sysdep.S  |   39 +
 ports/sysdeps/unix/sysv/linux/microblaze/sysdep.h  |  390 ++++
 .../unix/sysv/linux/microblaze/versionsort64.c     |    1 +
 ports/sysdeps/unix/sysv/linux/microblaze/xstat.c   |    1 +
 136 files changed, 9097 insertions(+)
 create mode 100644 ports/ChangeLog.microblaze
 create mode 100644 ports/sysdeps/microblaze/Implies
 create mode 100644 ports/sysdeps/microblaze/Makefile
 create mode 100644 ports/sysdeps/microblaze/Versions
 create mode 100644 ports/sysdeps/microblaze/__longjmp.S
 create mode 100644 ports/sysdeps/microblaze/_mcount.S
 create mode 100644 ports/sysdeps/microblaze/abort-instr.h
 create mode 100644 ports/sysdeps/microblaze/asm-syntax.h
 create mode 100644 ports/sysdeps/microblaze/backtrace.c
 create mode 100644 ports/sysdeps/microblaze/backtrace_linux.c
 create mode 100644 ports/sysdeps/microblaze/bits/atomic.h
 create mode 100644 ports/sysdeps/microblaze/bits/endian.h
 create mode 100644 ports/sysdeps/microblaze/bits/fenv.h
 create mode 100644 ports/sysdeps/microblaze/bits/link.h
 create mode 100644 ports/sysdeps/microblaze/bits/setjmp.h
 create mode 100644 ports/sysdeps/microblaze/bits/wordsize.h
 create mode 100644 ports/sysdeps/microblaze/bsd-_setjmp.S
 create mode 100644 ports/sysdeps/microblaze/bsd-setjmp.S
 create mode 100644 ports/sysdeps/microblaze/configure
 create mode 100644 ports/sysdeps/microblaze/configure.in
 create mode 100644 ports/sysdeps/microblaze/crti.S
 create mode 100644 ports/sysdeps/microblaze/crtn.S
 create mode 100644 ports/sysdeps/microblaze/dl-machine.h
 create mode 100644 ports/sysdeps/microblaze/dl-tls.h
 create mode 100644 ports/sysdeps/microblaze/dl-trampoline.S
 create mode 100644 ports/sysdeps/microblaze/gccframe.h
 create mode 100644 ports/sysdeps/microblaze/jmpbuf-unwind.h
 create mode 100644 ports/sysdeps/microblaze/ldsodefs.h
 create mode 100644 ports/sysdeps/microblaze/libc-tls.c
 create mode 100644 ports/sysdeps/microblaze/machine-gmon.h
 create mode 100644 ports/sysdeps/microblaze/memusage.h
 create mode 100644 ports/sysdeps/microblaze/nptl/Makefile
 create mode 100644 ports/sysdeps/microblaze/nptl/pthread_spin_lock.c
 create mode 100644 ports/sysdeps/microblaze/nptl/pthread_spin_trylock.c
 create mode 100644 ports/sysdeps/microblaze/nptl/pthreaddef.h
 create mode 100644 ports/sysdeps/microblaze/nptl/tcb-offsets.sym
 create mode 100644 ports/sysdeps/microblaze/nptl/tls.h
 create mode 100644 ports/sysdeps/microblaze/preconfigure
 create mode 100644 ports/sysdeps/microblaze/setjmp.S
 create mode 100644 ports/sysdeps/microblaze/stackinfo.h
 create mode 100644 ports/sysdeps/microblaze/start.S
 create mode 100644 ports/sysdeps/microblaze/sysdep.h
 create mode 100644 ports/sysdeps/microblaze/tls-macros.h
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/Makefile
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/Versions
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/____longjmp_chk.S
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/alphasort64.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/bits/fcntl.h
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/bits/ipc.h
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/bits/mman.h
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/bits/msq.h
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/bits/sem.h
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/bits/shm.h
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/bits/stat.h
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/brk.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/clone.S
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/configure
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/configure.in
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/dl-librecon.h
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/fchown.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/fchownat.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/fcntl.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/fxstat.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/fxstatat.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/getdents64.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/getegid.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/geteuid.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/getgid.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/getgroups.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/getmsg.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/getresgid.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/getresuid.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/getrlimit64.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/getsysstats.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/getuid.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/glob64.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/kernel_stat.h
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/lchown.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/ldconfig.h
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/lockf64.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/lxstat.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/mmap.S
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/msgctl.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/nptl/bits/pthreadtypes.h
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/nptl/bits/semaphore.h
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/nptl/createthread.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/nptl/fork.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/nptl/ld.abilist
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/nptl/libBrokenLocale.abilist
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/nptl/libanl.abilist
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/nptl/libc.abilist
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/nptl/libcrypt.abilist
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/nptl/libdl.abilist
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/nptl/libm.abilist
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/nptl/libnsl.abilist
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/nptl/libpthread.abilist
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/nptl/libresolv.abilist
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/nptl/librt.abilist
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/nptl/libthread_db.abilist
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/nptl/libutil.abilist
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/nptl/localplt.data
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/nptl/lowlevellock.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/nptl/lowlevellock.h
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/nptl/pt-vfork.S
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/nptl/pthread_once.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/nptl/vfork.S
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/oldgetrlimit64.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/profil-counter.h
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/putmsg.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/readdir64.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/readdir64_r.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/scandir64.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/semctl.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/setegid.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/seteuid.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/setfsgid.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/setfsuid.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/setgid.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/setgroups.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/setregid.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/setresgid.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/setresuid.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/setreuid.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/setrlimit.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/setuid.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/shmctl.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/sigcontextinfo.h
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/socket.S
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/sys/procfs.h
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/sys/user.h
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/syscall.S
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/syscalls.list
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/sysdep.S
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/sysdep.h
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/versionsort64.c
 create mode 100644 ports/sysdeps/unix/sysv/linux/microblaze/xstat.c

diff --git a/ports/ChangeLog.microblaze b/ports/ChangeLog.microblaze
new file mode 100644
index 0000000..468ce25
--- /dev/null
+++ b/ports/ChangeLog.microblaze
@@ -0,0 +1,137 @@
+2012-11-29  David Holsgrove  <david.holsgrove@xilinx.com>
+
+	* sysdeps/microblaze/Implies: New file
+	* sysdeps/microblaze/Makefile: New file
+	* sysdeps/microblaze/Versions: New file
+	* sysdeps/microblaze/__longjmp.S: New file
+	* sysdeps/microblaze/_mcount.S: New file
+	* sysdeps/microblaze/abort-instr.h: New file
+	* sysdeps/microblaze/asm-syntax.h: New file
+	* sysdeps/microblaze/backtrace.c: New file
+	* sysdeps/microblaze/backtrace_linux.c: New file
+	* sysdeps/microblaze/bits/atomic.h: New file
+	* sysdeps/microblaze/bits/endian.h: New file
+	* sysdeps/microblaze/bits/fenv.h: New file
+	* sysdeps/microblaze/bits/link.h: New file
+	* sysdeps/microblaze/bits/setjmp.h: New file
+	* sysdeps/microblaze/bits/wordsize.h: New file
+	* sysdeps/microblaze/bsd-_setjmp.S: New file
+	* sysdeps/microblaze/bsd-setjmp.S: New file
+	* sysdeps/microblaze/configure: New file
+	* sysdeps/microblaze/configure.in: New file
+	* sysdeps/microblaze/crti.S: New file
+	* sysdeps/microblaze/crtn.S: New file
+	* sysdeps/microblaze/dl-machine.h: New file
+	* sysdeps/microblaze/dl-tls.h: New file
+	* sysdeps/microblaze/dl-trampoline.S: New file
+	* sysdeps/microblaze/gccframe.h: New file
+	* sysdeps/microblaze/jmpbuf-unwind.h: New file
+	* sysdeps/microblaze/ldsodefs.h: New file
+	* sysdeps/microblaze/libc-tls.c: New file
+	* sysdeps/microblaze/machine-gmon.h: New file
+	* sysdeps/microblaze/memusage.h: New file
+	* sysdeps/microblaze/nptl/Makefile: New file
+	* sysdeps/microblaze/nptl/pthread_spin_lock.c: New file
+	* sysdeps/microblaze/nptl/pthread_spin_trylock.c: New file
+	* sysdeps/microblaze/nptl/pthreaddef.h: New file
+	* sysdeps/microblaze/nptl/tcb-offsets.sym: New file
+	* sysdeps/microblaze/nptl/tls.h: New file
+	* sysdeps/microblaze/preconfigure: New file
+	* sysdeps/microblaze/setjmp.S: New file
+	* sysdeps/microblaze/stackinfo.h: New file
+	* sysdeps/microblaze/start.S: New file
+	* sysdeps/microblaze/sysdep.h: New file
+	* sysdeps/microblaze/tls-macros.h: New file
+	* sysdeps/unix/sysv/linux/microblaze/Makefile: New file
+	* sysdeps/unix/sysv/linux/microblaze/Versions: New file
+	* sysdeps/unix/sysv/linux/microblaze/____longjmp_chk.S: New file
+	* sysdeps/unix/sysv/linux/microblaze/alphasort64.c: New file
+	* sysdeps/unix/sysv/linux/microblaze/bits/fcntl.h: New file
+	* sysdeps/unix/sysv/linux/microblaze/bits/ipc.h: New file
+	* sysdeps/unix/sysv/linux/microblaze/bits/mman.h: New file
+	* sysdeps/unix/sysv/linux/microblaze/bits/msq.h: New file
+	* sysdeps/unix/sysv/linux/microblaze/bits/sem.h: New file
+	* sysdeps/unix/sysv/linux/microblaze/bits/shm.h: New file
+	* sysdeps/unix/sysv/linux/microblaze/bits/stat.h: New file
+	* sysdeps/unix/sysv/linux/microblaze/brk.c: New file
+	* sysdeps/unix/sysv/linux/microblaze/clone.S: New file
+	* sysdeps/unix/sysv/linux/microblaze/configure: New file
+	* sysdeps/unix/sysv/linux/microblaze/configure.in: New file
+	* sysdeps/unix/sysv/linux/microblaze/dl-librecon.h: New file
+	* sysdeps/unix/sysv/linux/microblaze/fchown.c: New file
+	* sysdeps/unix/sysv/linux/microblaze/fchownat.c: New file
+	* sysdeps/unix/sysv/linux/microblaze/fcntl.c: New file
+	* sysdeps/unix/sysv/linux/microblaze/fxstat.c: New file
+	* sysdeps/unix/sysv/linux/microblaze/fxstatat.c: New file
+	* sysdeps/unix/sysv/linux/microblaze/getdents64.c: New file
+	* sysdeps/unix/sysv/linux/microblaze/getegid.c: New file
+	* sysdeps/unix/sysv/linux/microblaze/geteuid.c: New file
+	* sysdeps/unix/sysv/linux/microblaze/getgid.c: New file
+	* sysdeps/unix/sysv/linux/microblaze/getgroups.c: New file
+	* sysdeps/unix/sysv/linux/microblaze/getmsg.c: New file
+	* sysdeps/unix/sysv/linux/microblaze/getresgid.c: New file
+	* sysdeps/unix/sysv/linux/microblaze/getresuid.c: New file
+	* sysdeps/unix/sysv/linux/microblaze/getrlimit64.c: New file
+	* sysdeps/unix/sysv/linux/microblaze/getsysstats.c: New file
+	* sysdeps/unix/sysv/linux/microblaze/getuid.c: New file
+	* sysdeps/unix/sysv/linux/microblaze/glob64.c: New file
+	* sysdeps/unix/sysv/linux/microblaze/kernel_stat.h: New file
+	* sysdeps/unix/sysv/linux/microblaze/lchown.c: New file
+	* sysdeps/unix/sysv/linux/microblaze/ldconfig.h: New file
+	* sysdeps/unix/sysv/linux/microblaze/lockf64.c: New file
+	* sysdeps/unix/sysv/linux/microblaze/lxstat.c: New file
+	* sysdeps/unix/sysv/linux/microblaze/mmap.S: New file
+	* sysdeps/unix/sysv/linux/microblaze/msgctl.c: New file
+	* sysdeps/unix/sysv/linux/microblaze/nptl/bits/pthreadtypes.h: New file
+	* sysdeps/unix/sysv/linux/microblaze/nptl/bits/semaphore.h: New file
+	* sysdeps/unix/sysv/linux/microblaze/nptl/createthread.c: New file
+	* sysdeps/unix/sysv/linux/microblaze/nptl/fork.c: New file
+	* sysdeps/unix/sysv/linux/microblaze/nptl/ld.abilist: New file
+	* sysdeps/unix/sysv/linux/microblaze/nptl/libBrokenLocale.abilist: New file
+	* sysdeps/unix/sysv/linux/microblaze/nptl/libanl.abilist: New file
+	* sysdeps/unix/sysv/linux/microblaze/nptl/libc.abilist: New file
+	* sysdeps/unix/sysv/linux/microblaze/nptl/libcrypt.abilist: New file
+	* sysdeps/unix/sysv/linux/microblaze/nptl/libdl.abilist: New file
+	* sysdeps/unix/sysv/linux/microblaze/nptl/libm.abilist: New file
+	* sysdeps/unix/sysv/linux/microblaze/nptl/libnsl.abilist: New file
+	* sysdeps/unix/sysv/linux/microblaze/nptl/libpthread.abilist: New file
+	* sysdeps/unix/sysv/linux/microblaze/nptl/libresolv.abilist: New file
+	* sysdeps/unix/sysv/linux/microblaze/nptl/librt.abilist: New file
+	* sysdeps/unix/sysv/linux/microblaze/nptl/libthread_db.abilist: New file
+	* sysdeps/unix/sysv/linux/microblaze/nptl/libutil.abilist: New file
+	* sysdeps/unix/sysv/linux/microblaze/nptl/localplt.data: New file
+	* sysdeps/unix/sysv/linux/microblaze/nptl/lowlevellock.c: New file
+	* sysdeps/unix/sysv/linux/microblaze/nptl/lowlevellock.h: New file
+	* sysdeps/unix/sysv/linux/microblaze/nptl/pt-vfork.S: New file
+	* sysdeps/unix/sysv/linux/microblaze/nptl/pthread_once.c: New file
+	* sysdeps/unix/sysv/linux/microblaze/nptl/vfork.S: New file
+	* sysdeps/unix/sysv/linux/microblaze/oldgetrlimit64.c: New file
+	* sysdeps/unix/sysv/linux/microblaze/profil-counter.h: New file
+	* sysdeps/unix/sysv/linux/microblaze/putmsg.c: New file
+	* sysdeps/unix/sysv/linux/microblaze/readdir64.c: New file
+	* sysdeps/unix/sysv/linux/microblaze/readdir64_r.c: New file
+	* sysdeps/unix/sysv/linux/microblaze/scandir64.c: New file
+	* sysdeps/unix/sysv/linux/microblaze/semctl.c: New file
+	* sysdeps/unix/sysv/linux/microblaze/setegid.c: New file
+	* sysdeps/unix/sysv/linux/microblaze/seteuid.c: New file
+	* sysdeps/unix/sysv/linux/microblaze/setfsgid.c: New file
+	* sysdeps/unix/sysv/linux/microblaze/setfsuid.c: New file
+	* sysdeps/unix/sysv/linux/microblaze/setgid.c: New file
+	* sysdeps/unix/sysv/linux/microblaze/setgroups.c: New file
+	* sysdeps/unix/sysv/linux/microblaze/setregid.c: New file
+	* sysdeps/unix/sysv/linux/microblaze/setresgid.c: New file
+	* sysdeps/unix/sysv/linux/microblaze/setresuid.c: New file
+	* sysdeps/unix/sysv/linux/microblaze/setreuid.c: New file
+	* sysdeps/unix/sysv/linux/microblaze/setrlimit.c: New file
+	* sysdeps/unix/sysv/linux/microblaze/setuid.c: New file
+	* sysdeps/unix/sysv/linux/microblaze/shmctl.c: New file
+	* sysdeps/unix/sysv/linux/microblaze/sigcontextinfo.h: New file
+	* sysdeps/unix/sysv/linux/microblaze/socket.S: New file
+	* sysdeps/unix/sysv/linux/microblaze/sys/procfs.h: New file
+	* sysdeps/unix/sysv/linux/microblaze/sys/user.h: New file
+	* sysdeps/unix/sysv/linux/microblaze/syscall.S: New file
+	* sysdeps/unix/sysv/linux/microblaze/syscalls.list: New file
+	* sysdeps/unix/sysv/linux/microblaze/sysdep.S: New file
+	* sysdeps/unix/sysv/linux/microblaze/sysdep.h: New file
+	* sysdeps/unix/sysv/linux/microblaze/versionsort64.c: New file
+	* sysdeps/unix/sysv/linux/microblaze/xstat.c: New file
diff --git a/ports/sysdeps/microblaze/Implies b/ports/sysdeps/microblaze/Implies
new file mode 100644
index 0000000..73c766c
--- /dev/null
+++ b/ports/sysdeps/microblaze/Implies
@@ -0,0 +1,4 @@
+wordsize-32
+# MicroBlaze uses IEEE 754 floating point.
+ieee754/flt-32
+ieee754/dbl-64
diff --git a/ports/sysdeps/microblaze/Makefile b/ports/sysdeps/microblaze/Makefile
new file mode 100644
index 0000000..5635633
--- /dev/null
+++ b/ports/sysdeps/microblaze/Makefile
@@ -0,0 +1,31 @@
+pic-ccflag = -fPIC
+
+# Make sure setjmp.c is compiled with a frame pointer
+CFLAGS-setjmp.c := -fno-omit-frame-pointer
+
+ifeq ($(subdir),elf)
+CFLAGS-rtld.c += -Wno-uninitialized -Wno-unused
+endif
+
+ifeq ($(subdir),gmon)
+sysdep_routines += _mcount
+endif
+
+ifeq ($(subdir),resource)
+sysdep_routines += oldgetrlimit64 backtrace_linux
+endif
+
+$(objpfx)libm.so: $(elfobjdir)/ld.so
+$(objpfx)libcrypt.so: $(elfobjdir)/ld.so
+$(objpfx)libresolv.so: $(elfobjdir)/ld.so
+$(objpfx)libnss_dns.so: $(elfobjdir)/ld.so
+$(objpfx)libnss_files.so: $(elfobjdir)/ld.so
+$(objpfx)libnss_db.so: $(elfobjdir)/ld.so
+$(objpfx)libnss_nis.so: $(elfobjdir)/ld.so
+$(objpfx)libnss_nisplus.so: $(elfobjdir)/ld.so
+$(objpfx)libnss_hesiod.so: $(elfobjdir)/ld.so
+$(objpfx)libnss_compat.so: $(elfobjdir)/ld.so
+$(objpfx)libanl.so: $(elfobjdir)/ld.so
+$(objpfx)libnsl.so: $(elfobjdir)/ld.so
+$(objpfx)libcidn.so: $(elfobjdir)/ld.so
+$(objpfx)libutil.so: $(elfobjdir)/ld.so
diff --git a/ports/sysdeps/microblaze/Versions b/ports/sysdeps/microblaze/Versions
new file mode 100644
index 0000000..2b020f8
--- /dev/null
+++ b/ports/sysdeps/microblaze/Versions
@@ -0,0 +1,6 @@
+libc {
+  GLIBC_2.0 {
+    # Functions from libgcc.
+    __divdi3; __moddi3; __udivdi3; __umoddi3;
+  }
+}
diff --git a/ports/sysdeps/microblaze/__longjmp.S b/ports/sysdeps/microblaze/__longjmp.S
new file mode 100644
index 0000000..3a6b76f
--- /dev/null
+++ b/ports/sysdeps/microblaze/__longjmp.S
@@ -0,0 +1,55 @@
+/* Copyright (C) 1997-2012 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 Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <sysdep.h>
+
+/* Jump to the position specified by ENV, causing the
+   setjmp call there to return VAL, or 1 if VAL is 0.  */
+
+/* void __longjmp (__jmp_buf env, int val) */
+
+ENTRY(__longjmp)
+    lwi   r1,r5,0
+    lwi   r2,r5,4
+    lwi   r13,r5,8
+    lwi   r14,r5,12
+    lwi   r15,r5,16
+    lwi   r16,r5,20
+    lwi   r17,r5,24
+    lwi   r18,r5,28
+    lwi   r19,r5,32
+    lwi   r20,r5,36
+    lwi   r21,r5,40
+    lwi   r22,r5,44
+    lwi   r23,r5,48
+    lwi   r24,r5,52
+    lwi   r25,r5,56
+    lwi   r26,r5,60
+    lwi   r27,r5,64
+    lwi   r28,r5,68
+    lwi   r29,r5,72
+    lwi   r30,r5,76
+    lwi   r31,r5,80
+    addk  r3,r6,r0
+    beqi  r3,L(return_1)
+    rtsd  r15,8
+    nop
+L(return_1):
+    rtsd  r15,8
+    addik r3,r0,1	/* delay slot */
+END(__longjmp)
diff --git a/ports/sysdeps/microblaze/_mcount.S b/ports/sysdeps/microblaze/_mcount.S
new file mode 100644
index 0000000..d55a593
--- /dev/null
+++ b/ports/sysdeps/microblaze/_mcount.S
@@ -0,0 +1,91 @@
+/* Copyright (C) 1997-2012 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 Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+	.global	_mcount
+	.type	_mcount, @function
+_mcount:
+	# Save regs.
+	addik   r1, r1,-4 * 24
+	swi	r31, r1, 4 * 23
+	swi	r30, r1, 4 * 22
+	swi	r29, r1, 4 * 21
+	swi	r28, r1, 4 * 20
+	swi	r27, r1, 4 * 19
+	swi	r26, r1, 4 * 18
+	swi	r25, r1, 4 * 17
+	swi	r24, r1, 4 * 16
+	swi	r23, r1, 4 * 15
+	swi	r22, r1, 4 * 14
+	swi	r21, r1, 4 * 13
+	swi	r20, r1, 4 * 12
+	swi	r19, r1, 4 * 11
+	swi	r15, r1, 4 * 10
+	swi	r12, r1, 4 * 9
+	swi	r11, r1, 4 * 8
+	swi	r10, r1, 4 * 7
+	swi	r8, r1, 4 * 6
+	swi	r7, r1, 4 * 5
+	swi	r6, r1, 4 * 4
+	swi	r5, r1, 4 * 3
+	swi	r4, r1, 4 * 2
+	swi	r3, r1, 4 * 1
+	swi	r2, r1, 4 * 0
+
+#ifdef SHARED
+	mfs     r20,rpc
+	addik   r20,r20,_GLOBAL_OFFSET_TABLE_+8
+	addk	r6, r0, r15	# callee is in r15.
+	brlid	r15, __mcount_internal@PLT
+	lwi	r5, r1, 4 * 24	# caller is on the stack.
+#else
+	# Pass from/to in r5 and r6.
+	addk	r6, r0, r15	# callee is in r15.
+	bralid	r15, __mcount_internal
+	lwi	r5, r1, 4 * 24	# caller is on the stack.
+#endif
+
+	# Reload regs
+	lwi	r31, r1, 4 * 23
+	lwi	r30, r1, 4 * 22
+	lwi	r29, r1, 4 * 21
+	lwi	r28, r1, 4 * 20
+	lwi	r27, r1, 4 * 19
+	lwi	r26, r1, 4 * 18
+	lwi	r25, r1, 4 * 17
+	lwi	r24, r1, 4 * 16
+	lwi	r23, r1, 4 * 15
+	lwi	r22, r1, 4 * 14
+	lwi	r21, r1, 4 * 13
+	lwi	r20, r1, 4 * 12
+	lwi	r19, r1, 4 * 11
+	lwi	r15, r1, 4 * 10
+	lwi	r12, r1, 4 * 9
+	lwi	r11, r1, 4 * 8
+	lwi	r10, r1, 4 * 7
+	lwi	r8, r1, 4 * 6
+	lwi	r7, r1, 4 * 5
+	lwi	r6, r1, 4 * 4
+	lwi	r5, r1, 4 * 3
+	lwi	r4, r1, 4 * 2
+	lwi	r3, r1, 4 * 1
+	lwi	r2, r1, 4 * 0
+
+	rtsd	r15, 8
+	addik	r1, r1, 4 * 24
+
+	.size	_mcount, . - _mcount
diff --git a/ports/sysdeps/microblaze/abort-instr.h b/ports/sysdeps/microblaze/abort-instr.h
new file mode 100644
index 0000000..528ec90
--- /dev/null
+++ b/ports/sysdeps/microblaze/abort-instr.h
@@ -0,0 +1,2 @@
+/* An instruction which should crash any program is `illegal'.  */
+#define ABORT_INSTRUCTION asm ("brki r0, -1") /* Hope, this works */
diff --git a/ports/sysdeps/microblaze/asm-syntax.h b/ports/sysdeps/microblaze/asm-syntax.h
new file mode 100644
index 0000000..fc16f35
--- /dev/null
+++ b/ports/sysdeps/microblaze/asm-syntax.h
@@ -0,0 +1,44 @@
+/* Copyright (C) 1997-2012 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 Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifdef HAVE_ELF
+
+/* ELF uses byte-counts for .align, most others use log2 of count of bytes.  */
+#define ALIGNARG(log2) 1<<log2
+/* For ELF we need the `.type' directive to make shared libs work right.  */
+#define PROLOG(name) .type name,@function
+#define EPILOG(name) .size name,.-name
+/* For ELF we need to prefix register names and local labels.  */
+#ifdef __STDC__
+#define R_(r) %##r
+#define R(r) R_(r)
+#define L(label) .##label
+#else
+#define R(r) %/**/r
+#define L(label) ./**/label
+#endif
+
+#else
+
+#define ALIGNARG(log2) log2
+#define PROLOG(name) /* Nothing.  */
+#define EPILOG(name) /* Nothing.  */
+#define R(r) r
+#define L(label) label
+
+#endif
diff --git a/ports/sysdeps/microblaze/backtrace.c b/ports/sysdeps/microblaze/backtrace.c
new file mode 100644
index 0000000..7af1fb5
--- /dev/null
+++ b/ports/sysdeps/microblaze/backtrace.c
@@ -0,0 +1,117 @@
+
+#include <stdio.h>
+#include <string.h>
+#include <sysdep.h>
+#include <signal.h>
+#include <execinfo.h>
+
+extern int __backtrace_lookup_prev_stack_frame_sighandler(
+				unsigned long fp, unsigned long pc,
+				unsigned long *pprev_fp, unsigned long *pprev_pc,
+				unsigned long *retaddr);
+
+inline long get_frame_size(unsigned long instr)
+{
+	return abs((short signed)(instr & 0xFFFF));
+}
+
+static unsigned long *find_frame_creation(unsigned long *pc)
+{
+	int i;
+
+	/* NOTE: Distance to search is arbitrary
+	 *	 250 works well for most things,
+	 *	 750 picks up things like tcp_recvmsg(),
+	 *	1000 needed for fat_fill_super()
+	 */
+	for (i = 0; i < 1000; i++, pc--) {
+		unsigned long instr;
+		unsigned long frame_size;
+
+		instr = *pc;
+
+		/* addik r1, r1, foo ? */
+		if ((instr & 0xFFFF0000) != 0x30210000)
+			continue;	/* No */
+
+		frame_size = get_frame_size(instr);
+		if ((frame_size < 8) || (frame_size & 3)) {
+			return NULL;
+		}
+		return pc;
+	}
+
+	return NULL;
+}
+
+static int lookup_prev_stack_frame(unsigned long fp, unsigned long pc,
+				unsigned long *pprev_fp, unsigned long *pprev_pc,
+				unsigned long *retaddr)
+{
+	unsigned long *prologue = NULL;
+
+	int is_signalhandler = __backtrace_lookup_prev_stack_frame_sighandler(
+			fp, pc, pprev_fp, pprev_pc, retaddr);
+
+	if (!is_signalhandler) {
+		prologue = find_frame_creation((unsigned long *)pc);
+
+		if (prologue) {
+			long frame_size = get_frame_size(*prologue);
+			*pprev_fp = fp + frame_size;
+			if (*retaddr != 0) {
+				*pprev_pc = *retaddr;
+			} else {
+				*pprev_pc = *(unsigned long *)fp;
+			}
+			*retaddr = 0;
+			if ((!(*pprev_pc) || ((*pprev_pc) & 3))) {
+				prologue=0;
+			}
+		} else {
+			*pprev_pc = 0;
+			*pprev_fp = fp;
+			*retaddr = 0;
+		}
+	}
+	return (!(*pprev_pc) || ((*pprev_pc) & 3)) ? -1 : 0;
+}
+
+int __backtrace(void **array, int size)
+{
+	unsigned long pc, fp;
+	unsigned long ppc, pfp;
+	unsigned long retaddr; /* Return address(r15) is required in the signal
+							  handler case, since the return address of the
+							  function which causes the signal may not be
+							  recorded in the stack */
+	int count;
+	int rc = 0;
+
+	__asm__ __volatile__(
+"mfs %0, rpc"
+: "=r"(pc)
+);
+
+	__asm__ __volatile__(
+"add %0, r1, r0"
+: "=r"(fp)
+);
+
+	array[0]=(void *)pc;
+	retaddr = 0;
+	for (count=1; count < size; count++) {
+		rc = lookup_prev_stack_frame(fp, pc, &pfp, &ppc, &retaddr);
+
+		fp=pfp;
+		pc=ppc;
+		array[count]=(void *)pc;
+		if (rc) {
+			return count;
+		}
+	}
+	return count;
+}
+
+weak_alias (__backtrace, backtrace)
+libc_hidden_def (__backtrace)
diff --git a/ports/sysdeps/microblaze/backtrace_linux.c b/ports/sysdeps/microblaze/backtrace_linux.c
new file mode 100644
index 0000000..7b311e7
--- /dev/null
+++ b/ports/sysdeps/microblaze/backtrace_linux.c
@@ -0,0 +1,48 @@
+#include <stddef.h>
+#include <asm/sigcontext.h>
+#include <linux/signal.h>
+#include <asm-generic/ucontext.h>
+#include <asm/unistd.h>
+
+int __backtrace_lookup_prev_stack_frame_sighandler(
+				unsigned long fp, unsigned long pc,
+				unsigned long *pprev_fp, unsigned long *pprev_pc,
+				unsigned long *retaddr)
+{
+	unsigned long *tramp = 0;
+	struct ucontext *uc;
+
+	if (*retaddr == 0) {
+		/*fprintf(stderr, "working out sig-handler (pc = %08x)\n", pc);*/
+		/* In this case, the pc pointer should be accessible */
+		/* Kernel insert the a tramp between the signal handler frame and the
+		   caller frame in signal handling This is how the kernel add the tramp
+		   between frames:
+		   err |= __put_user(0x31800000 | __NR_rt_sigreturn ,
+		   frame->tramp + 0); // addi r12, r0, __NR_sigreturn
+		   err |= __put_user(0xb9cc0008, frame->tramp + 1); // brki r14, 0x8
+		   regs->r15 = ((unsigned long)frame->tramp)-8;
+		*/
+		tramp = (unsigned long *)pc;
+		tramp += 2;
+		if ((*tramp == (0x31800000 | __NR_rt_sigreturn)) && (*(tramp+1) == 0xb9cc0008)) {
+			/* Signal handler function argument is:
+			   (int sig_num, siginfo_t * info, void * ucontext)
+			   the uncontext is the 3rd argument
+			*/
+			unsigned long ucptr = ((unsigned long)tramp) - sizeof(struct ucontext);
+			/*fprintf(stderr, "tramp = %08x\n", tramp);*/
+			/*fprintf(stderr, "ucptr = %08x\n", ucptr);*/
+			uc = (struct ucontext *)ucptr;
+			*pprev_pc = uc->uc_mcontext.regs.pc;
+			/* Need to record the return address since the return address of the
+			   function which causes this signal may not be recorded in the stack
+			*/
+			*pprev_fp = uc->uc_mcontext.regs.r1;
+			*retaddr = uc->uc_mcontext.regs.r15;
+			/* it is a signal handler */
+			return 1;
+		}
+	}
+	return 0;
+}
diff --git a/ports/sysdeps/microblaze/bits/atomic.h b/ports/sysdeps/microblaze/bits/atomic.h
new file mode 100644
index 0000000..92b8380
--- /dev/null
+++ b/ports/sysdeps/microblaze/bits/atomic.h
@@ -0,0 +1,276 @@
+/* Copyright (C) 2003-2012 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 Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <stdint.h>
+#include <sysdep.h>
+
+
+typedef int8_t atomic8_t;
+typedef uint8_t uatomic8_t;
+typedef int_fast8_t atomic_fast8_t;
+typedef uint_fast8_t uatomic_fast8_t;
+
+typedef int32_t atomic32_t;
+typedef uint32_t uatomic32_t;
+typedef int_fast32_t atomic_fast32_t;
+typedef uint_fast32_t uatomic_fast32_t;
+
+typedef intptr_t atomicptr_t;
+typedef uintptr_t uatomicptr_t;
+typedef intmax_t atomic_max_t;
+typedef uintmax_t uatomic_max_t;
+
+
+/*
+ * Microblaze does not have byte and halfword forms of load and reserve and
+ * store conditional. So for microblaze we stub out the 8- and 16-bit forms.
+ */
+#define __arch_compare_and_exchange_bool_8_acq(mem, newval, oldval)                           \
+  (abort (), 0)
+
+#define __arch_compare_and_exchange_bool_16_acq(mem, newval, oldval)                          \
+  (abort (), 0)
+
+#define __arch_compare_and_exchange_bool_8_rel(mem, newval, oldval)                           \
+  (abort (), 0)
+
+#define __arch_compare_and_exchange_bool_16_rel(mem, newval, oldval)                          \
+  (abort (), 0)
+
+#define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval)                           \
+  ({                                                                                          \
+      __typeof (*(mem)) __tmp;                                                                \
+      __typeof (mem)  __memp = (mem);                                                         \
+      int test;                                                                               \
+      __asm __volatile (                                                                      \
+                "   addc    r0, r0, r0;"    /* clean carry bit*/                              \
+                "1: lwx     %0, %3, r0;"    /* atomic_add_return */                           \
+                "   addic   %1, r0, 0;"     /* check Carry*/                                  \
+                "   bnei    %1, 1b;"        /* jump if Carry is set*/                         \
+                "   cmp     %1, %0, %4;"    /* compare signed values loaded/newval */         \
+                "   bnei    %1, 2f;"        /* if is not equal - jump over */                 \
+                "   swx     %5, %3, r0;"    /* save newval */                                 \
+                "   addic   %1, r0, 0;"     /* check Carry if saving was OK */                \
+                "   bnei    %1, 1b;"        /* jump if swx wasn't successful */               \
+                "2:"                                                                          \
+                    : "=&r" (__tmp),        /* %0 */                                          \
+                    "=&r" (test),           /* %1 */                                          \
+                    "=m" (*__memp)          /* Dummy output so gcc knows writing *__memp */   \
+                    : "r" (__memp),         /* %3 */                                          \
+                    "r" (oldval),           /* %4 */                                          \
+                    "r" (newval)            /* %5 */                                          \
+                    : "cc", "memory");                                                        \
+      __tmp;                                                                                  \
+  })
+
+#define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval)                           \
+  (abort (), (__typeof (*mem)) 0)
+
+#define atomic_compare_and_exchange_val_acq(mem, newval, oldval)                              \
+  ({                                                                                          \
+    __typeof (*(mem)) __result;                                                               \
+    if (sizeof (*mem) == 4)                                                                   \
+      __result = __arch_compare_and_exchange_val_32_acq(mem, newval, oldval);                 \
+    else if (sizeof (*mem) == 8)                                                              \
+      __result = __arch_compare_and_exchange_val_64_acq(mem, newval, oldval);                 \
+    else                                                                                      \
+       abort ();                                                                              \
+    __result;                                                                                 \
+  })
+
+#define atomic_compare_and_exchange_val_rel(mem, newval, oldval)                              \
+  ({                                                                                          \
+    __typeof (*(mem)) __result;                                                               \
+    if (sizeof (*mem) == 4) {                                                                 \
+        if (__builtin_types_compatible_p (typeof (*mem), int))                                \
+            __result = __arch_compare_and_exchange_val_32_acq(mem, newval, oldval);           \
+        else if (__builtin_types_compatible_p (typeof (*mem), unsigned int))                  \
+            __result = __arch_compare_and_exchange_val_32_acq_unsigned(mem, newval, oldval);  \
+    }                                                                                         \
+    else if (sizeof (*mem) == 8)                                                              \
+      __result = __arch_compare_and_exchange_val_64_acq(mem, newval, oldval);                 \
+    else                                                                                      \
+       abort ();                                                                              \
+    __result;                                                                                 \
+  })
+
+#define __arch_atomic_exchange_32_acq(mem, value)                                             \
+  ({                                                                                          \
+      __typeof (*(mem)) __tmp;                                                                \
+      __typeof (mem)  __memp = (mem);                                                         \
+      int test;                                                                               \
+      __asm __volatile (                                                                      \
+                "   addc    r0, r0, r0;"    /* clean carry bit*/                              \
+                "1: lwx     %0, %4, r0;"    /* atomic_add_return */                           \
+                "   addic   %1, r0, 0;"     /* check Carry*/                                  \
+                "   bnei    %1, 1b;"        /* jump if Carry is set*/                         \
+                "   swx     %3, %4, r0;"    /* save newval */                                 \
+                "   addic   %1, r0, 0;"     /* check Carry if saving was OK */                \
+                "   bnei    %1, 1b;"        /* jump if swx wasn't successful */               \
+                    : "=&r" (__tmp),        /* %0 */                                          \
+                    "=&r" (test),           /* %1 */                                          \
+                    "=m" (*__memp)          /* Dummy output so gcc knows writing *__memp */   \
+                    : "r" (value),          /* %3 */                                          \
+                    "r" (__memp)            /* %4 */                                          \
+                    : "cc", "memory");                                                        \
+      __tmp;                                                                                  \
+  })
+
+#define __arch_atomic_exchange_64_acq(mem, newval)                                            \
+  (abort (), (__typeof (*mem)) 0)
+
+#define atomic_exchange_acq(mem, value)                                                       \
+  ({                                                                                          \
+    __typeof (*(mem)) __result;                                                               \
+    if (sizeof (*mem) == 4)                                                                   \
+      __result = __arch_atomic_exchange_32_acq (mem, value);                                  \
+    else if (sizeof (*mem) == 8)                                                              \
+      __result = __arch_atomic_exchange_64_acq (mem, value);                                  \
+    else                                                                                      \
+       abort ();                                                                              \
+    __result;                                                                                 \
+  })
+
+#define atomic_exchange_rel(mem, value)                                                       \
+  ({                                                                                          \
+    __typeof (*(mem)) __result;                                                               \
+    if (sizeof (*mem) == 4)                                                                   \
+      __result = __arch_atomic_exchange_32_acq (mem, value);                                  \
+    else if (sizeof (*mem) == 8)                                                              \
+      __result = __arch_atomic_exchange_64_acq (mem, value);                                  \
+    else                                                                                      \
+       abort ();                                                                              \
+    __result;                                                                                 \
+  })
+
+#define __arch_atomic_exchange_and_add_32(mem, value)                                         \
+  ({                                                                                          \
+    __typeof (*(mem)) __tmp;                                                                  \
+      __typeof (mem)  __memp = (mem);                                                         \
+    int test;                                                                                 \
+    __asm __volatile (                                                                        \
+                "   addc    r0, r0, r0;"    /* clean carry bit*/                              \
+                "1: lwx     %0, %4, r0;"    /* atomic_add_return */                           \
+                "   addic   %1, r0, 0;"     /* check Carry*/                                  \
+                "   bnei    %1, 1b;"        /* jump if Carry is set*/                         \
+                "   add     %1, %3, %0;"    /* add value */                                   \
+                "   swx     %1, %4, r0;"    /* save value back */                             \
+                "   addic   %1, r0, 0;"     /* check Carry if saving was OK */                \
+                "   bnei    %1, 1b;"        /* jump if swx wasn't successful */               \
+                    : "=&r" (__tmp),        /* %0 */                                          \
+                    "=&r" (test),           /* %1 */                                          \
+                    "=m" (*__memp)          /* Dummy output so gcc knows writing *__memp */   \
+                    : "r" (value),          /* %3 */                                          \
+                    "r" (__memp)            /* %4 */                                          \
+                    : "cc", "memory");                                                        \
+    __tmp;                                                                                    \
+  })
+
+#define __arch_atomic_exchange_and_add_64(mem, value)                                         \
+  (abort (), (__typeof (*mem)) 0)
+
+#define atomic_exchange_and_add(mem, value)                                                   \
+  ({                                                                                          \
+    __typeof (*(mem)) __result;                                                               \
+    if (sizeof (*mem) == 4)                                                                   \
+      __result = __arch_atomic_exchange_and_add_32 (mem, value);                              \
+    else if (sizeof (*mem) == 8)                                                              \
+      __result = __arch_atomic_exchange_and_add_64 (mem, value);                              \
+    else                                                                                      \
+       abort ();                                                                              \
+    __result;                                                                                 \
+  })
+
+#define __arch_atomic_increment_val_32(mem)                                                   \
+  ({                                                                                          \
+    __typeof (*(mem)) __val;                                                                  \
+    int test;                                                                                 \
+    __asm __volatile (                                                                        \
+                "   addc    r0, r0, r0;"    /* clean carry bit*/                              \
+                "1: lwx     %0, %3, r0;"    /* atomic_add_return*/                            \
+                "   addic   %1, r0, 0;"     /* check Carry*/                                  \
+                "   bnei    %1, 1b;"        /* jump if Carry is set*/                         \
+                "   addi    %0, %0, 1;"     /* add 1 */                                       \
+                "   swx     %0, %3, r0;"    /* save value back */                             \
+                "   addic   %1, r0, 0;"     /* check Carry if saving was OK */                \
+                "   bnei    %1, 1b;"        /* jump if swx wasn't successful */               \
+                    : "=&r" (__val),        /* %0 */                                          \
+                    "=&r" (test),           /* %1 */                                          \
+                    "=m" (*mem)             /* Dummy output so gcc knows writing *mem */      \
+                    : "r" (mem),            /* %3 */                                          \
+                    "m" (*mem)              /* %4 */                                          \
+                    : "cc", "memory");                                                        \
+    __val;                                                                                    \
+  })
+
+#define __arch_atomic_increment_val_64(mem)                                                   \
+  (abort (), (__typeof (*mem)) 0)
+
+#define atomic_increment_val(mem)                                                             \
+  ({                                                                                          \
+    __typeof (*(mem)) __result;                                                               \
+    if (sizeof (*(mem)) == 4)                                                                 \
+      __result = __arch_atomic_increment_val_32 (mem);                                        \
+    else if (sizeof (*(mem)) == 8)                                                            \
+      __result = __arch_atomic_increment_val_64 (mem);                                        \
+    else                                                                                      \
+       abort ();                                                                              \
+    __result;                                                                                 \
+  })
+
+#define atomic_increment(mem) ({ atomic_increment_val (mem); (void) 0; })
+
+#define __arch_atomic_decrement_val_32(mem)                                                   \
+  ({                                                                                          \
+    __typeof (*(mem)) __val;                                                                  \
+    int test;                                                                                 \
+    __asm __volatile (                                                                        \
+                "   addc    r0, r0, r0;"    /* clean carry bit*/                              \
+                "1: lwx     %0, %3, r0;"    /* atomic_add_return*/                            \
+                "   addic   %1, r0, 0;"     /* check Carry*/                                  \
+                "   bnei    %1, 1b;"        /* jump if Carry is set*/                         \
+                "   rsubi   %0, %0, 1;"     /* sub 1 */                                       \
+                "   swx     %0, %3, r0;"    /* save value back */                             \
+                "   addic   %1, r0, 0;"     /* check Carry if saving was OK */                \
+                "   bnei    %1, 1b;"        /* jump if swx wasn't successful */               \
+                    : "=&r" (__val),        /* %0 */                                          \
+                    "=&r" (test),           /* %1 */                                          \
+                    "=m" (*mem)             /* Dummy output so gcc knows writing *mem */      \
+                    : "r" (mem),            /* %3 */                                          \
+                    "m" (*mem)              /* %4 */                                          \
+                    : "cc", "memory");                                                        \
+    __val;                                                                                    \
+  })
+
+#define __arch_atomic_decrement_val_64(mem)                                                   \
+  (abort (), (__typeof (*mem)) 0)
+
+#define atomic_decrement_val(mem)                                                             \
+  ({                                                                                          \
+    __typeof (*(mem)) __result;                                                               \
+    if (sizeof (*(mem)) == 4)                                                                 \
+      __result = __arch_atomic_decrement_val_32 (mem);                                        \
+    else if (sizeof (*(mem)) == 8)                                                            \
+      __result = __arch_atomic_decrement_val_64 (mem);                                        \
+    else                                                                                      \
+       abort ();                                                                              \
+    __result;                                                                                 \
+  })
+
+
+#define atomic_decrement(mem) ({ atomic_decrement_val (mem); (void) 0; })
diff --git a/ports/sysdeps/microblaze/bits/endian.h b/ports/sysdeps/microblaze/bits/endian.h
new file mode 100644
index 0000000..42b4eaa
--- /dev/null
+++ b/ports/sysdeps/microblaze/bits/endian.h
@@ -0,0 +1,30 @@
+/* Copyright (C) 1997-2012 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 Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _ENDIAN_H
+# error "Never use <bits/endian.h> directly; include <endian.h> instead."
+#endif
+
+/* MicroBlaze can be either big or little endian.  */
+#ifdef _BIG_ENDIAN
+#define __BYTE_ORDER __BIG_ENDIAN
+#define __FLOAT_WORD_ORDER __BIG_ENDIAN
+#else
+#define __BYTE_ORDER __LITTLE_ENDIAN
+#define __FLOAT_WORD_ORDER __LITTLE_ENDIAN
+#endif
diff --git a/ports/sysdeps/microblaze/bits/fenv.h b/ports/sysdeps/microblaze/bits/fenv.h
new file mode 100644
index 0000000..e3de962
--- /dev/null
+++ b/ports/sysdeps/microblaze/bits/fenv.h
@@ -0,0 +1,77 @@
+/* Copyright (C) 2004-2012 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 Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _FENV_H
+# error "Never use <bits/fenv.h> directly; include <fenv.h> instead."
+#endif
+
+
+/* Define bits representing the exception.  We use the bit positions
+   of the appropriate bits in the FPU control word.  */
+enum
+  {
+    FE_INEXACT = 0x04,
+#define FE_INEXACT	FE_INEXACT
+    FE_UNDERFLOW = 0x08,
+#define FE_UNDERFLOW	FE_UNDERFLOW
+    FE_OVERFLOW = 0x10,
+#define FE_OVERFLOW	FE_OVERFLOW
+    FE_DIVBYZERO = 0x20,
+#define FE_DIVBYZERO	FE_DIVBYZERO
+    FE_INVALID = 0x40,
+#define FE_INVALID	FE_INVALID
+  };
+
+#define FE_ALL_EXCEPT \
+	(FE_INEXACT | FE_DIVBYZERO | FE_UNDERFLOW | FE_OVERFLOW | FE_INVALID)
+
+/* The MIPS FPU supports all of the four defined rounding modes.  We
+   use again the bit positions in the FPU control word as the values
+   for the appropriate macros.  */
+enum
+  {
+    FE_TONEAREST = 0x0,
+#define FE_TONEAREST	FE_TONEAREST
+    FE_TOWARDZERO = 0x1,
+#define FE_TOWARDZERO	FE_TOWARDZERO
+    FE_UPWARD = 0x2,
+#define FE_UPWARD	FE_UPWARD
+    FE_DOWNWARD = 0x3
+#define FE_DOWNWARD	FE_DOWNWARD
+  };
+
+
+/* Type representing exception flags.  */
+typedef unsigned short int fexcept_t;
+
+
+/* Type representing floating-point environment.  This function corresponds
+   to the layout of the block written by the `fstenv'.  */
+typedef struct
+  {
+    unsigned int __fp_control_register;
+  }
+fenv_t;
+
+/* If the default argument is used we use this value.  */
+#define FE_DFL_ENV	((__const fenv_t *) -1)
+
+#ifdef __USE_GNU
+/* Floating-point environment where none of the exception is masked.  */
+# define FE_NOMASK_ENV  ((__const fenv_t *) -2)
+#endif
diff --git a/ports/sysdeps/microblaze/bits/link.h b/ports/sysdeps/microblaze/bits/link.h
new file mode 100644
index 0000000..e958be4
--- /dev/null
+++ b/ports/sysdeps/microblaze/bits/link.h
@@ -0,0 +1,55 @@
+/* Copyright (C) 2005-2012 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 Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef	_LINK_H
+# error "Never include <bits/link.h> directly; use <link.h> instead."
+#endif
+
+
+/* Registers for entry into PLT on Microblaze.  */
+typedef struct La_microblaze_regs
+{
+  uint32_t lr_r0;
+  uint32_t lr_r1;
+  uint32_t lr_sp;
+} La_microblaze_regs;
+
+/* Return values for calls from PLT on Microblaze.  */
+typedef struct La_microblaze_retval
+{
+  uint32_t lrv_r3;
+} La_microblaze_retval;
+
+
+__BEGIN_DECLS
+
+extern Elf32_Addr la_microblaze_gnu_pltenter (Elf32_Sym *__sym, unsigned int __ndx,
+					uintptr_t *__refcook,
+					uintptr_t *__defcook,
+					La_microblaze_regs *__regs,
+					unsigned int *__flags,
+					const char *__symname,
+					long int *__framesizep);
+extern unsigned int la_microblaze_gnu_pltexit (Elf32_Sym *__sym, unsigned int __ndx,
+					 uintptr_t *__refcook,
+					 uintptr_t *__defcook,
+					 const La_microblaze_regs *__inregs,
+					 La_microblaze_retval *__outregs,
+					 const char *__symname);
+
+__END_DECLS
diff --git a/ports/sysdeps/microblaze/bits/setjmp.h b/ports/sysdeps/microblaze/bits/setjmp.h
new file mode 100644
index 0000000..041feb7
--- /dev/null
+++ b/ports/sysdeps/microblaze/bits/setjmp.h
@@ -0,0 +1,37 @@
+/* Copyright (C) 1997-2012 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 Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/* Define the machine-dependent type `jmp_buf'. */
+
+#ifndef _BITS_SETJMP_H
+#define _BITS_SETJMP_H 1
+
+#if !defined _SETJMP_H && !defined _PTHREAD_H
+# error "Never include <bits/setjmp.h> directly; use <setjmp.h> instead."
+#endif
+
+typedef struct
+  {
+    /* There are 21 4-byte registers that should be saved:
+       r1, r2, r13-r31. Actually, there seems no need to save
+       r14, r16, r17, r18 (return addresses for interrupt/exception/trap). */
+    int *__sp; /* dedicated name for r1 */
+    long int __gregs[20];
+  } __jmp_buf[1];
+
+#endif
diff --git a/ports/sysdeps/microblaze/bits/wordsize.h b/ports/sysdeps/microblaze/bits/wordsize.h
new file mode 100644
index 0000000..23d379a
--- /dev/null
+++ b/ports/sysdeps/microblaze/bits/wordsize.h
@@ -0,0 +1,3 @@
+/* Determine the wordsize from the preprocessor defines.  */
+
+# define __WORDSIZE	32
diff --git a/ports/sysdeps/microblaze/bsd-_setjmp.S b/ports/sysdeps/microblaze/bsd-_setjmp.S
new file mode 100644
index 0000000..7173a5a
--- /dev/null
+++ b/ports/sysdeps/microblaze/bsd-_setjmp.S
@@ -0,0 +1,22 @@
+/* BSD `_setjmp' entry point to `sigsetjmp (..., 0)'.
+   Copyright (C) 1997, 1998, 2002, 2008 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 Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#define setjmp_name _setjmp
+#define SAVEMASK 0
+
+#include <setjmp.S>
diff --git a/ports/sysdeps/microblaze/bsd-setjmp.S b/ports/sysdeps/microblaze/bsd-setjmp.S
new file mode 100644
index 0000000..6a03c5c
--- /dev/null
+++ b/ports/sysdeps/microblaze/bsd-setjmp.S
@@ -0,0 +1,22 @@
+/* BSD `setjmp' entry point to `sigsetjmp (..., 1)'.
+   Copyright (C) 1995-1997,2000,2001,2002,2003 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 Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#define setjmp_name setjmp
+#define SAVEMASK 1
+
+#include <setjmp.S>
diff --git a/ports/sysdeps/microblaze/configure b/ports/sysdeps/microblaze/configure
new file mode 100644
index 0000000..a1b3bd3
--- /dev/null
+++ b/ports/sysdeps/microblaze/configure
@@ -0,0 +1,122 @@
+
+# as_fn_set_status STATUS
+# -----------------------
+# Set $? to STATUS, without forking.
+as_fn_set_status ()
+{
+  return $1
+} # as_fn_set_status
+
+# as_fn_exit STATUS
+# -----------------
+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
+as_fn_exit ()
+{
+  set +e
+  as_fn_set_status $1
+  exit $1
+} # as_fn_exit
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+   test "X`expr 00001 : '.*\(...\)'`" = X001; then
+  as_expr=expr
+else
+  as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+  as_basename=basename
+else
+  as_basename=false
+fi
+
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+	 X"$0" : 'X\(//\)$' \| \
+	 X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+$as_echo X/"$0" |
+    sed '/^.*\/\([^/][^/]*\)\/*$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\/\)$/{
+	    s//\1/
+	    q
+	  }
+	  /^X\/\(\/\).*/{
+	    s//\1/
+	    q
+	  }
+	  s/.*/./; q'`
+
+
+  as_lineno_1=$LINENO as_lineno_1a=$LINENO
+  as_lineno_2=$LINENO as_lineno_2a=$LINENO
+  eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
+  test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
+  # Blame Lee E. McMahon (1931-1989) for sed's syntax.  :-)
+  sed -n '
+    p
+    /[$]LINENO/=
+  ' <$as_myself |
+    sed '
+      s/[$]LINENO.*/&-/
+      t lineno
+      b
+      :lineno
+      N
+      :loop
+      s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+      t loop
+      s/-\n.*//
+    ' >$as_me.lineno &&
+  chmod +x "$as_me.lineno" ||
+    { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+  # Don't try to exec as it changes $[0], causing all sort of problems
+  # (the dirname of $[0] is not the place where we might find the
+  # original and so on.  Autoconf is especially sensitive to this).
+  . "./$as_me.lineno"
+  # Exit status is that of the last command.
+  exit
+}
+
+# This file is generated from configure.in by Autoconf.  DO NOT EDIT!
+ # Local configure fragment for sysdeps/microblaze/elf.
+
+if test "$usetls" != no; then
+# Check for support of thread-local storage handling in assembler and
+# linker.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Microblaze TLS support" >&5
+$as_echo_n "checking for Microblaze TLS support... " >&6; }
+if test "${libc_cv_microblaze_tls+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat > conftest.s <<\EOF
+       .section .tdata,"awT",@progbits
+x:
+       .word 2
+       .text
+       addik r5,r20,x@TLSGD
+       addik r5,r20,x@TLSLDM'
+EOF
+if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'
+  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+  libc_cv_microblaze_tls=yes
+else
+  libc_cv_microblaze_tls=no
+fi
+rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_microblaze_tls" >&5
+$as_echo "$libc_cv_microblaze_tls" >&6; }
+if test $libc_cv_microblaze_tls = yes; then
+  $as_echo "#define HAVE_TLS_SUPPORT 1" >>confdefs.h
+
+fi
+fi
+
+#AC_DEFINE(PI_STATIC_AND_HIDDEN)
diff --git a/ports/sysdeps/microblaze/configure.in b/ports/sysdeps/microblaze/configure.in
new file mode 100644
index 0000000..1330fd2
--- /dev/null
+++ b/ports/sysdeps/microblaze/configure.in
@@ -0,0 +1,32 @@
+GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
+# Local configure fragment for sysdeps/microblaze/elf.
+
+if test "$usetls" != no; then
+# Check for support of thread-local storage handling in assembler and
+# linker.
+AC_CACHE_CHECK(for Microblaze TLS support, libc_cv_microblaze_tls, [dnl
+cat > conftest.s <<\EOF
+       .section .tdata,"awT",@progbits
+x:
+       .word 2
+       .text
+       addik r5,r20,x@TLSGD
+       addik r5,r20,x@TLSLDM'
+EOF
+dnl
+if AC_TRY_COMMAND(${CC-cc} -c $CFLAGS conftest.s 1>&AS_MESSAGE_LOG_FD); then
+  libc_cv_microblaze_tls=yes
+else
+  libc_cv_microblaze_tls=no
+fi
+rm -f conftest*])
+if test $libc_cv_microblaze_tls = yes; then
+  AC_DEFINE(HAVE_TLS_SUPPORT)
+fi
+fi
+
+dnl It is always possible to access static and hidden symbols in an
+dnl position independent way.
+dnl NOTE: This feature was added by the GCC TLS patches.  We should test for
+dnl it.  Until we do, don't define it.
+#AC_DEFINE(PI_STATIC_AND_HIDDEN)
diff --git a/ports/sysdeps/microblaze/crti.S b/ports/sysdeps/microblaze/crti.S
new file mode 100644
index 0000000..01ef591
--- /dev/null
+++ b/ports/sysdeps/microblaze/crti.S
@@ -0,0 +1,90 @@
+/* Special .init and .fini section support for MicroBlaze.
+   Copyright (C) 1995-2012 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 Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   In addition to the permissions in the GNU Lesser General Public
+   License, the Free Software Foundation gives you unlimited
+   permission to link the compiled version of this file with other
+   programs, and to distribute those programs without any restriction
+   coming from the use of this file. (The GNU Lesser General Public
+   License restrictions do apply in other respects; for example, they
+   cover modification of the file, and distribution when not linked
+   into another program.)
+
+   Note that people who make modified versions of this file are not
+   obligated to grant this special exception for their modified
+   versions; it is their choice whether to do so. The GNU Lesser
+   General Public License gives permission to release a modified
+   version without this exception; this exception also makes it
+   possible to release a modified version which carries forward this
+   exception.
+
+   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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/* crti.S puts a function prologue at the beginning of the .init and
+   .fini sections and defines global symbols for those addresses, so
+   they can be called as functions.  The symbols _init and _fini are
+   magic and cause the linker to emit DT_INIT and DT_FINI.  */
+
+#include <libc-symbols.h>
+#include <sysdep.h>
+
+#ifndef PREINIT_FUNCTION
+# define PREINIT_FUNCTION __gmon_start__
+#endif
+
+#ifndef PREINIT_FUNCTION_WEAK
+# define PREINIT_FUNCTION_WEAK 1
+#endif
+
+#if PREINIT_FUNCTION_WEAK
+	weak_extern (PREINIT_FUNCTION)
+#else
+	.hidden PREINIT_FUNCTION
+#endif
+
+	.section .init,"ax",@progbits
+	.align	2
+	.globl	_init
+	.type	_init, @function
+_init:
+	addik	r1,r1,-32
+	swi	r20,r1,28
+	mfs	r20,rpc
+	addik	r20,r20,_GLOBAL_OFFSET_TABLE_+8
+	lwi	r3,r20,PREINIT_FUNCTION@GOT
+#if PREINIT_FUNCTION_WEAK
+	beqid   r3,$Lno_weak_fn:
+	swi     r15,r1,0
+	brlid	r15,PREINIT_FUNCTION@PLT
+$Lno_weak_fn:
+#else
+	swi     r15,r1,0
+	brald	r15,r3
+#endif
+	nop		# Unfilled delay slot
+
+	.section .fini,"ax",@progbits
+	.align	2
+	.globl	_fini
+	.type	_fini, @function
+_fini:
+	addik	r1,r1,-32
+	swi	r20,r1,28
+	swi	r15,r1,0
+	mfs	r20,rpc
+	addik	r20,r20,_GLOBAL_OFFSET_TABLE_+8
+
diff --git a/ports/sysdeps/microblaze/crtn.S b/ports/sysdeps/microblaze/crtn.S
new file mode 100644
index 0000000..1683c96
--- /dev/null
+++ b/ports/sysdeps/microblaze/crtn.S
@@ -0,0 +1,55 @@
+/* Special .init and .fini section support for MicroBlaze.
+   Copyright (C) 1995-2012 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 Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   In addition to the permissions in the GNU Lesser General Public
+   License, the Free Software Foundation gives you unlimited
+   permission to link the compiled version of this file with other
+   programs, and to distribute those programs without any restriction
+   coming from the use of this file. (The GNU Lesser General Public
+   License restrictions do apply in other respects; for example, they
+   cover modification of the file, and distribution when not linked
+   into another program.)
+
+   Note that people who make modified versions of this file are not
+   obligated to grant this special exception for their modified
+   versions; it is their choice whether to do so. The GNU Lesser
+   General Public License gives permission to release a modified
+   version without this exception; this exception also makes it
+   possible to release a modified version which carries forward this
+   exception.
+
+   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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/* crti.S puts a function prologue at the beginning of the .init and
+   .fini sections and defines global symbols for those addresses, so
+   they can be called as functions.  The symbols _init and _fini are
+   magic and cause the linker to emit DT_INIT and DT_FINI.  */
+
+#include <sysdep.h>
+
+	.section .init,"ax",@progbits
+	lwi	r15,r1,0
+	lwi	r20,r1,28
+	rtsd	r15,8 
+	addik	r1,r1,32
+	
+	.section .fini,"ax",@progbits
+	lwi	r15,r1,0
+	lwi	r20,r1,28
+	rtsd	r15,8 
+	addik	r1,r1,32
+
diff --git a/ports/sysdeps/microblaze/dl-machine.h b/ports/sysdeps/microblaze/dl-machine.h
new file mode 100644
index 0000000..249d3af
--- /dev/null
+++ b/ports/sysdeps/microblaze/dl-machine.h
@@ -0,0 +1,303 @@
+/* Copyright (C) 1995-2012 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 Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef dl_machine_h
+#define dl_machine_h
+
+#define ELF_MACHINE_NAME "microblaze"
+
+#include <sys/param.h>
+#include <tls.h>
+
+/* Return nonzero iff ELF header is compatible with the running host.  */
+static inline int
+elf_machine_matches_host (const Elf32_Ehdr *ehdr)
+{
+  return (ehdr->e_machine == EM_MICROBLAZE ||
+		ehdr->e_machine == EM_NEW_MICROBLAZE ) ;
+}
+
+
+/* Return the link-time address of _DYNAMIC.  Conveniently, this is the
+   first element of the GOT.  This must be inlined in a function which
+   uses global data.  */
+static inline Elf32_Addr
+elf_machine_dynamic (void)
+{
+  /* This produces a GOTOFF reloc that resolves to zero at link time, so in
+     fact just loads from the GOT register directly.  By doing it without
+     an asm we can let the compiler choose any register.  */
+
+  Elf32_Addr got_entry_0;
+  __asm__ __volatile__(
+    "lwi %0,r20,0"
+    :"=r"(got_entry_0)
+    );
+  return got_entry_0;
+}
+
+
+/* Return the run-time load address of the shared object.  */
+static inline Elf32_Addr
+elf_machine_load_address (void)
+{
+  /* Compute the difference between the runtime address of _DYNAMIC as seen
+     by a GOTOFF reference, and the link-time address found in the special
+     unrelocated first GOT entry.  */
+
+  Elf32_Addr dyn;
+  __asm__ __volatile__ (
+    "addik %0,r20,_DYNAMIC@GOTOFF"
+    : "=r"(dyn)
+    );
+  return dyn - elf_machine_dynamic ();
+}
+
+
+/* Set up the loaded object described by L so its unrelocated PLT
+   entries will jump to the on-demand fixup code in dl-runtime.c.  */
+
+static inline int __attribute__ ((always_inline))
+elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
+{
+  Elf32_Addr *got;
+  extern void _dl_runtime_resolve (Elf32_Word);
+  extern void _dl_runtime_profile (Elf32_Word);
+
+  return lazy;
+}
+
+/* The PLT uses Elf32_Rela relocs.  */
+#define elf_machine_relplt elf_machine_rela
+
+/* Mask identifying addresses reserved for the user program,
+   where the dynamic linker should not map anything.  */
+#define ELF_MACHINE_USER_ADDRESS_MASK	0x80000000UL
+
+/* Initial entry point code for the dynamic linker.
+   The C function `_dl_start' is the real entry point;
+   its return value is the user program's entry point.  */
+
+#define RTLD_START asm ("\
+	.text\n\
+	.globl _start\n\
+	.type _start,@function\n\
+_start:\n\
+	addk  r5,r0,r1\n\
+	addk  r3,r0,r0\n\
+1:\n\
+	addik r5,r5,4\n\
+	lw    r4,r5,r0\n\
+	bneid r4,1b\n\
+	addik r3,r3,1\n\
+	addik r3,r3,-1\n\
+	addk  r5,r0,r1\n\
+	sw    r3,r5,r0\n\
+	addik r1,r1,-24\n\
+	sw    r15,r1,r0\n\
+	brlid r15,_dl_start\n\
+	nop\n\
+	/* FALLTHRU */\n\
+\n\
+	.globl _dl_start_user\n\
+	.type _dl_start_user,@function\n\
+_dl_start_user:\n\
+	mfs   r20,rpc\n\
+	addik r20,r20,_GLOBAL_OFFSET_TABLE_+8\n\
+	lwi   r4,r20,_dl_skip_args@GOTOFF\n\
+	lwi   r5,r1,24\n\
+	rsubk r5,r4,r5\n\
+	addk  r4,r4,r4\n\
+	addk  r4,r4,r4\n\
+	addk  r1,r1,r4\n\
+	swi   r5,r1,24\n\
+	swi   r3,r1,20\n\
+	addk  r6,r5,r0\n\
+	addk  r5,r5,r5\n\
+	addk  r5,r5,r5\n\
+	addik r7,r1,28\n\
+	addk  r8,r7,r5\n\
+	addik r8,r8,4\n\
+	lwi   r5,r20,_rtld_local@GOTOFF\n\
+	brlid r15,_dl_init_internal\n\
+	nop\n\
+	lwi   r5,r1,24\n\
+	lwi   r3,r1,20\n\
+	addk  r4,r5,r5\n\
+	addk  r4,r4,r4\n\
+	addik r6,r1,28\n\
+	addk  r7,r6,r4\n\
+	addik r7,r7,4\n\
+	addik r15,r20,_dl_fini@GOTOFF\n\
+	addik r15,r15,-8\n\
+	brad  r3\n\
+	addik r1,r1,24\n\
+	nop\n\
+	.size _dl_start_user, . - _dl_start_user\n\
+	.previous");
+
+/* ELF_RTYPE_CLASS_PLT iff TYPE describes relocation of a PLT entry, so
+   PLT entries should not be allowed to define the value.
+   ELF_RTYPE_CLASS_NOCOPY iff TYPE should not be allowed to resolve to one
+   of the main executable's symbols, as for a COPY reloc.  */
+#if (!defined RTLD_BOOTSTRAP || USE___THREAD)
+#define elf_machine_type_class(type) \
+  (((type) == R_MICROBLAZE_JUMP_SLOT || \
+    (type) == R_MICROBLAZE_TLSDTPREL32 || \
+    (type) == R_MICROBLAZE_TLSDTPMOD32 || \
+    (type) == R_MICROBLAZE_TLSTPREL32 \
+     ) * ELF_RTYPE_CLASS_PLT \
+   | ((type) == R_MICROBLAZE_COPY) * ELF_RTYPE_CLASS_COPY)
+#else
+#define elf_machine_type_class(type) \
+  (((type) == R_MICROBLAZE_JUMP_SLOT) * ELF_RTYPE_CLASS_PLT \
+   | ((type) == R_MICROBLAZE_COPY) * ELF_RTYPE_CLASS_COPY)
+#endif
+
+/* A reloc type used for ld.so cmdline arg lookups to reject PLT entries.  */
+#define ELF_MACHINE_JMP_SLOT	R_MICROBLAZE_JUMP_SLOT
+
+/* The microblaze never uses Elf32_Rel relocations.  */
+#define ELF_MACHINE_NO_REL 1
+
+static inline Elf32_Addr
+elf_machine_fixup_plt (struct link_map *map, lookup_t t,
+		       const Elf32_Rela *reloc,
+		       Elf32_Addr *reloc_addr, Elf32_Addr value)
+{
+  return *reloc_addr = value;
+}
+
+/* Return the final value of a plt relocation. Ignore the addend.  */
+static inline Elf32_Addr
+elf_machine_plt_value (struct link_map *map, const Elf32_Rela *reloc,
+		       Elf32_Addr value)
+{
+  return value;
+}
+
+#endif /* !dl_machine_h */
+
+/* Names of the architecture-specific auditing callback functions.  */
+#define ARCH_LA_PLTENTER microblaze_gnu_pltenter
+#define ARCH_LA_PLTEXIT microblaze_gnu_pltexit
+
+#ifdef RESOLVE_MAP
+
+/* Perform the relocation specified by RELOC and SYM (which is fully resolved).
+   MAP is the object containing the reloc.  */
+
+/* Macro to put 32-bit relocation value into 2 words */
+#define PUT_REL_64(rel_addr,val) \
+  do { \
+    ((unsigned short *)(rel_addr))[1] = (val) >> 16; \
+    ((unsigned short *)(rel_addr))[3] = (val) & 0xffff; \
+  } while (0)
+
+auto inline void __attribute__ ((always_inline))
+elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
+		  const Elf32_Sym *sym, const struct r_found_version *version,
+		  void *const reloc_addr_arg, int skip_ifunc)
+{
+  Elf32_Addr *const reloc_addr = reloc_addr_arg;
+  const int r_type = ELF32_R_TYPE (reloc->r_info);
+
+  if (__builtin_expect (r_type == R_MICROBLAZE_64_PCREL, 0))
+    PUT_REL_64(reloc_addr, map->l_addr + reloc->r_addend);
+  else if (r_type == R_MICROBLAZE_REL)
+    *reloc_addr = map->l_addr + reloc->r_addend;
+  else
+    {
+      const Elf32_Sym *const refsym = sym;
+      struct link_map *sym_map = RESOLVE_MAP (&sym, version, r_type);
+      Elf32_Addr value = sym == NULL ? 0 : sym_map->l_addr + sym->st_value;
+
+      value += reloc->r_addend;
+      if (r_type == R_MICROBLAZE_GLOB_DAT ||
+          r_type == R_MICROBLAZE_JUMP_SLOT ||
+          r_type == R_MICROBLAZE_32)
+	{
+	  *reloc_addr = value;
+	}
+      else if (r_type == R_MICROBLAZE_COPY)
+	{
+	  if (sym != NULL && (sym->st_size > refsym->st_size
+	      || (sym->st_size < refsym->st_size && GLRO(dl_verbose))) )
+	    {
+	      const char *strtab;
+
+	      strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]);
+	      _dl_error_printf ("\
+%s: Symbol `%s' has different size in shared object, consider re-linking\n",
+				rtld_progname ?: "<program name unknown>",
+				strtab + refsym->st_name);
+	    }
+	  memcpy (reloc_addr_arg, (void *) value,
+		  MIN (sym->st_size, refsym->st_size));
+	}
+      else if (r_type == R_MICROBLAZE_NONE)
+	{
+	}
+#if !defined RTLD_BOOTSTRAP
+      else if (r_type == R_MICROBLAZE_TLSDTPMOD32)
+	{
+	  if (sym_map != NULL)
+	    *reloc_addr = sym_map->l_tls_modid;
+	}
+      else if (r_type == R_MICROBLAZE_TLSDTPREL32)
+	{
+	  if (sym != NULL)
+	    *reloc_addr = sym->st_value + reloc->r_addend;
+	}
+      else if (r_type == R_MICROBLAZE_TLSTPREL32)
+	{
+	  if (sym != NULL)
+	    {
+	      CHECK_STATIC_TLS (map, sym_map);
+	      *reloc_addr = sym->st_value + sym_map->l_tls_offset + reloc->r_addend;
+	    }
+	}
+#endif
+      else
+	{
+	  _dl_reloc_bad_type (map, r_type, 0);
+	}
+    }
+}
+
+auto inline void
+elf_machine_rela_relative (Elf32_Addr l_addr, const Elf32_Rela *reloc,
+			   void *const reloc_addr_arg)
+{
+  Elf32_Addr *const reloc_addr = reloc_addr_arg;
+  PUT_REL_64(reloc_addr, l_addr + reloc->r_addend);
+}
+
+auto inline void
+elf_machine_lazy_rel (struct link_map *map,
+		      Elf32_Addr l_addr, const Elf32_Rela *reloc,
+		      int skip_ifunc)
+{
+  Elf32_Addr *const reloc_addr = (void *) (l_addr + reloc->r_offset);
+  if (ELF32_R_TYPE (reloc->r_info) == R_MICROBLAZE_JUMP_SLOT)
+    *reloc_addr += l_addr;
+  else
+    _dl_reloc_bad_type (map, ELF32_R_TYPE (reloc->r_info), 1);
+}
+
+#endif /* RESOLVE_MAP */
diff --git a/ports/sysdeps/microblaze/dl-tls.h b/ports/sysdeps/microblaze/dl-tls.h
new file mode 100644
index 0000000..c004e0f
--- /dev/null
+++ b/ports/sysdeps/microblaze/dl-tls.h
@@ -0,0 +1,29 @@
+/* Copyright (C) 2005-2012 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 Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/* Type used for the representation of TLS information in the GOT.  */
+typedef struct
+{
+  unsigned long int ti_module;
+  unsigned long int ti_offset;
+} tls_index;
+
+extern void *__tls_get_addr (tls_index *ti);
+
+/* Value used for dtv entries for which the allocation is delayed.  */
+#define TLS_DTV_UNALLOCATED	((void *) -1l)
diff --git a/ports/sysdeps/microblaze/dl-trampoline.S b/ports/sysdeps/microblaze/dl-trampoline.S
new file mode 100644
index 0000000..170fb5b
--- /dev/null
+++ b/ports/sysdeps/microblaze/dl-trampoline.S
@@ -0,0 +1,109 @@
+/* Copyright (C) 2005-2012 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 Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <sysdep.h>
+#include <libc-symbols.h>
+
+#ifndef PROF
+
+    .text
+    .globl  _dl_runtime_resolve
+    .type   _dl_runtime_resolve, @function
+    .align  4
+_dl_runtime_resolve:
+    addik r1,r1,-40
+    swi   r5,r1,12
+    swi   r6,r1,16
+    swi   r7,r1,20
+    swi   r8,r1,24
+    swi   r9,r1,28
+    swi   r10,r1,32
+    swi   r15,r1,0
+    addk r5,r0,r4
+    brlid r15, _dl_fixup
+    addk r6,r0,r3; /* delay slot */
+    lwi   r10,r1,32
+    lwi   r9,r1,28
+    lwi   r8,r1,24
+    lwi   r7,r1,20
+    lwi   r6,r1,16
+    lwi   r5,r1,12
+    lwi   r15,r1,0
+    brad  r3
+    addik r1,r1,40; /* delay slot */
+    .size _dl_runtime_resolve, . - _dl_runtime_resolve
+
+    .text
+    .globl  _dl_runtime_profile
+    .type   _dl_runtime_profile, @function
+    .align  4
+_dl_runtime_profile:
+    addik r1,r1,-40
+    swi   r5,r1,12
+    swi   r6,r1,16
+    swi   r7,r1,20
+    swi   r8,r1,24
+    swi   r9,r1,28
+    swi   r10,r1,32
+    swi   r15,r1,0
+    addk r5,r0,r4
+    brlid r15, _dl_profile_fixup
+    addk r6,r0,r3; /* delay slot */
+    lwi   r10,r1,32
+    lwi   r9,r1,28
+    lwi   r8,r1,24
+    lwi   r7,r1,20
+    lwi   r6,r1,16
+    lwi   r5,r1,12
+    lwi   r15,r1,0
+    brad  r3
+    addik r1,r1,40; /* delay slot */
+    .size _dl_runtime_profile, . - _dl_runtime_profile
+
+#else
+
+    .text
+    .globl  _dl_runtime_resolve
+    .type   _dl_runtime_resolve, @function
+    .align  4
+_dl_runtime_resolve:
+    addik r1,r1,-40
+    swi   r5,r1,12
+    swi   r6,r1,16
+    swi   r7,r1,20
+    swi   r8,r1,24
+    swi   r9,r1,28
+    swi   r10,r1,32
+    swi   r15,r1,0
+    addk r5,r0,r4
+    brlid r15, fixup
+    addk r6,r0,r3; /* delay slot */
+    lwi   r10,r1,32
+    lwi   r9,r1,28
+    lwi   r8,r1,24
+    lwi   r7,r1,20
+    lwi   r6,r1,16
+    lwi   r5,r1,12
+    lwi   r15,r1,0
+    brad  r3
+    addik r1,r1,40; /* delay slot */
+    .size _dl_runtime_resolve, . - _dl_runtime_resolve
+    .globl _dl_runtime_profile
+    .set _dl_runtime_profile, _dl_runtime_resolve
+
+#endif
diff --git a/ports/sysdeps/microblaze/gccframe.h b/ports/sysdeps/microblaze/gccframe.h
new file mode 100644
index 0000000..0129585
--- /dev/null
+++ b/ports/sysdeps/microblaze/gccframe.h
@@ -0,0 +1,21 @@
+/* Copyright (C) 2005-2012 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 Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#define FIRST_PSEUDO_REGISTER 78
+
+#include <sysdeps/generic/gccframe.h>
diff --git a/ports/sysdeps/microblaze/jmpbuf-unwind.h b/ports/sysdeps/microblaze/jmpbuf-unwind.h
new file mode 100644
index 0000000..b0751da
--- /dev/null
+++ b/ports/sysdeps/microblaze/jmpbuf-unwind.h
@@ -0,0 +1,46 @@
+/* Copyright (C) 2005-2012 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 Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <setjmp.h>
+#include <stdint.h>
+#include <unwind.h>
+#include <sysdep.h>
+
+/* Test if longjmp to JMPBUF would unwind the frame
+   containing a local variable at ADDRESS.  */
+#define _JMPBUF_UNWINDS(jmpbuf, address, demangle)		\
+  ((void *) (address) < (void *) demangle ((jmpbuf)[0].__sp))
+
+#define _JMPBUF_CFA_UNWINDS_ADJ(_jmpbuf, _context, _adj) \
+  _JMPBUF_UNWINDS_ADJ (_jmpbuf, (void *) _Unwind_GetCFA (_context), _adj)
+
+static inline uintptr_t __attribute__ ((unused))
+_jmpbuf_sp (__jmp_buf regs)
+{
+  uintptr_t sp = regs[0].__sp;
+#ifdef PTR_DEMANGLE
+  PTR_DEMANGLE (sp);
+#endif
+  return sp;
+}
+
+#define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \
+  ((uintptr_t) (_address) - (_adj) < _jmpbuf_sp (_jmpbuf) - (_adj))
+
+/* We use the normal longjmp for unwinding.  */
+#define __libc_unwind_longjmp(buf, val) __libc_longjmp (buf, val)
diff --git a/ports/sysdeps/microblaze/ldsodefs.h b/ports/sysdeps/microblaze/ldsodefs.h
new file mode 100644
index 0000000..48c061f
--- /dev/null
+++ b/ports/sysdeps/microblaze/ldsodefs.h
@@ -0,0 +1,41 @@
+/* Copyright (C) 2005-2012 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 Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _MICROBLAZE_LDSODEFS_H
+#define _MICROBLAZE_LDSODEFS_H 1
+
+#include <elf.h>
+
+struct La_microblaze_regs;
+struct La_microblaze_retval;
+
+#define ARCH_PLTENTER_MEMBERS \
+    Elf32_Addr (*microblaze_gnu_pltenter) (Elf32_Sym *, unsigned int, uintptr_t *,	\
+				     uintptr_t *, struct La_microblaze_regs *,	\
+				     unsigned int *, const char *name,		\
+				     long int *framesizep);
+
+#define ARCH_PLTEXIT_MEMBERS \
+    unsigned int (*microblaze_gnu_pltexit) (Elf32_Sym *, unsigned int, uintptr_t *,	\
+				      uintptr_t *,				\
+				      const struct La_microblaze_regs *,		\
+				      struct La_microblaze_retval *, const char *);
+
+#include_next <ldsodefs.h>
+
+#endif
diff --git a/ports/sysdeps/microblaze/libc-tls.c b/ports/sysdeps/microblaze/libc-tls.c
new file mode 100644
index 0000000..67b67fe
--- /dev/null
+++ b/ports/sysdeps/microblaze/libc-tls.c
@@ -0,0 +1,32 @@
+/* Copyright (C) 2005-2012 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 Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <csu/libc-tls.c>
+#include <dl-tls.h>
+
+/* On Microblaze, linker optimizations are not required, so __tls_get_addr
+   can be called even in statically linked binaries.  In this case module
+   must be always 1 and PT_TLS segment exist in the binary, otherwise it
+   would not link.  */
+
+void *
+__tls_get_addr (tls_index *ti)
+{
+  dtv_t *dtv = THREAD_DTV ();
+  return (char *) dtv[1].pointer.val + ti->ti_offset;
+}
diff --git a/ports/sysdeps/microblaze/machine-gmon.h b/ports/sysdeps/microblaze/machine-gmon.h
new file mode 100644
index 0000000..2153835
--- /dev/null
+++ b/ports/sysdeps/microblaze/machine-gmon.h
@@ -0,0 +1,30 @@
+/* Copyright (C) 2011-2012 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 Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/* We need a special version of the `mcount' function because it has
+   to preserve more registers than your usual function.  */
+
+void __mcount_internal (unsigned long frompc, unsigned long selfpc);
+
+#define _MCOUNT_DECL(frompc, selfpc) \
+void __mcount_internal (unsigned long frompc, unsigned long selfpc)
+
+
+/* Define MCOUNT as empty since we have the implementation in another
+   file.  */
+#define MCOUNT
diff --git a/ports/sysdeps/microblaze/memusage.h b/ports/sysdeps/microblaze/memusage.h
new file mode 100644
index 0000000..bd57016
--- /dev/null
+++ b/ports/sysdeps/microblaze/memusage.h
@@ -0,0 +1,21 @@
+/* Copyright (C) 2000-2012 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 Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#define GETSP() ({ register uintptr_t stack_ptr asm ("r1"); stack_ptr; })
+
+#include <sysdeps/generic/memusage.h>
diff --git a/ports/sysdeps/microblaze/nptl/Makefile b/ports/sysdeps/microblaze/nptl/Makefile
new file mode 100644
index 0000000..0b4b221
--- /dev/null
+++ b/ports/sysdeps/microblaze/nptl/Makefile
@@ -0,0 +1,21 @@
+# Copyright (C) 2005-2012 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 Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 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
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with the GNU C Library.  If not, see
+# <http://www.gnu.org/licenses/>.
+
+ifeq ($(subdir),csu)
+gen-as-const-headers += tcb-offsets.sym
+endif
diff --git a/ports/sysdeps/microblaze/nptl/pthread_spin_lock.c b/ports/sysdeps/microblaze/nptl/pthread_spin_lock.c
new file mode 100644
index 0000000..7d2f129
--- /dev/null
+++ b/ports/sysdeps/microblaze/nptl/pthread_spin_lock.c
@@ -0,0 +1,30 @@
+/* Copyright (C) 2008-2012 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 Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <atomic.h>
+#include "pthreadP.h"
+
+int
+pthread_spin_lock (pthread_spinlock_t *lock)
+{
+  while (atomic_compare_and_exchange_val_acq (lock, 1, 0) != 0)
+   while (*lock != 0)
+    ;
+
+  return 0;
+}
diff --git a/ports/sysdeps/microblaze/nptl/pthread_spin_trylock.c b/ports/sysdeps/microblaze/nptl/pthread_spin_trylock.c
new file mode 100644
index 0000000..4a876c1
--- /dev/null
+++ b/ports/sysdeps/microblaze/nptl/pthread_spin_trylock.c
@@ -0,0 +1,27 @@
+/* Copyright (C) 2008-2012 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 Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <errno.h>
+#include <atomic.h>
+#include "pthreadP.h"
+
+int
+pthread_spin_trylock (pthread_spinlock_t *lock)
+{
+  return atomic_compare_and_exchange_val_acq (lock, 1, 0) ? EBUSY : 0;
+}
diff --git a/ports/sysdeps/microblaze/nptl/pthreaddef.h b/ports/sysdeps/microblaze/nptl/pthreaddef.h
new file mode 100644
index 0000000..eb8ee89
--- /dev/null
+++ b/ports/sysdeps/microblaze/nptl/pthreaddef.h
@@ -0,0 +1,39 @@
+/* Copyright (C) 2002-2012 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 Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/* Default stack size.  */
+#define ARCH_STACK_DEFAULT_SIZE	(2 * 1024 * 1024)
+
+/* Required stack pointer alignment at beginning.  SSE requires 16
+   bytes.  */
+#define STACK_ALIGN		16
+
+/* Minimal stack size after allocating thread descriptor and guard size.  */
+#define MINIMAL_REST_STACK	2048
+
+/* Alignment requirement for TCB.  */
+#define TCB_ALIGNMENT		16
+
+
+/* Location of current stack frame. */
+#define CURRENT_STACK_FRAME	(__builtin_frame_address (0) )
+
+
+/* XXX Until we have a better place keep the definitions here.  */
+#define __exit_thread_inline(val) \
+  INLINE_SYSCALL (exit, 1, (val))
diff --git a/ports/sysdeps/microblaze/nptl/tcb-offsets.sym b/ports/sysdeps/microblaze/nptl/tcb-offsets.sym
new file mode 100644
index 0000000..92cc441
--- /dev/null
+++ b/ports/sysdeps/microblaze/nptl/tcb-offsets.sym
@@ -0,0 +1,11 @@
+#include <sysdep.h>
+#include <tls.h>
+
+--
+
+-- Derive offsets relative to the thread register.
+#define thread_offsetof(mem)	(long)(offsetof(struct pthread, mem) - sizeof(struct pthread))
+
+MULTIPLE_THREADS_OFFSET		thread_offsetof (header.multiple_threads)
+PID_OFFSET			thread_offsetof (pid)
+TID_OFFSET			thread_offsetof (tid)
diff --git a/ports/sysdeps/microblaze/nptl/tls.h b/ports/sysdeps/microblaze/nptl/tls.h
new file mode 100644
index 0000000..8c48607
--- /dev/null
+++ b/ports/sysdeps/microblaze/nptl/tls.h
@@ -0,0 +1,162 @@
+/* Copyright (C) 2005-2012 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 Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _TLS_H
+#define _TLS_H	1
+
+#include <dl-sysdep.h>
+
+#ifndef __ASSEMBLER__
+# include <stdbool.h>
+# include <stddef.h>
+# include <stdint.h>
+
+/* Type for the dtv.  */
+typedef union dtv
+{
+  size_t counter;
+  struct
+  {
+    void *val;
+    bool is_static;
+  } pointer;
+} dtv_t;
+
+#else /* __ASSEMBLER__ */
+# include <tcb-offsets.h>
+#endif /* __ASSEMBLER__ */
+
+#ifndef __ASSEMBLER__
+
+/* Get system call information.  */
+# include <sysdep.h>
+
+/* The TP points to the start of the thread blocks.  */
+# define TLS_DTV_AT_TP	1
+
+/* Get the thread descriptor definition.  */
+# include <nptl/descr.h>
+
+typedef struct
+{
+  dtv_t *dtv;
+  void *private;
+} tcbhead_t;
+
+/* r21 is reserved for thread pointer */
+static inline int __microblaze_set_thread_area(void *tp)
+{
+	asm("or r21,r0,%0" : : "r" (tp));
+	return 0;
+}
+static inline void *__microblaze_get_thread_area(void)
+{
+	register void * volatile __microblaze_thread_area asm ("r21");
+	return (void *)__microblaze_thread_area;
+}
+
+# define READ_THREAD_POINTER() \
+    ({ __microblaze_get_thread_area(); })
+
+# define SET_THREAD_POINTER(x) \
+    ({ __microblaze_set_thread_area(x); })
+
+/* This is the size of the initial TCB.  */
+# define TLS_INIT_TCB_SIZE	sizeof (tcbhead_t)
+
+/* Alignment requirements for the initial TCB.  */
+# define TLS_INIT_TCB_ALIGN	16
+
+/* This is the size of the TCB.  */
+# define TLS_TCB_SIZE		sizeof (tcbhead_t)
+
+/* This is the size we need before TCB.  */
+# define TLS_PRE_TCB_SIZE	sizeof (struct pthread)
+
+/* Alignment requirements for the TCB.  */
+# define TLS_TCB_ALIGN		16
+
+/* Install the dtv pointer.  The pointer passed is to the element with
+   index -1 which contain the length.  */
+# define INSTALL_DTV(tcbp, dtvp) \
+  (((tcbhead_t *) (tcbp))->dtv = (dtvp) + 1)
+
+/* Install new dtv for current thread.  */
+# define INSTALL_NEW_DTV(dtv) \
+  (THREAD_DTV() = (dtv))
+
+/* Return dtv of given thread descriptor.  */
+# define GET_DTV(tcbp) \
+  (((tcbhead_t *) (tcbp))->dtv)
+
+/* Code to initially initialize the thread pointer. */
+# define TLS_INIT_TP(tcbp, secondcall) \
+  ({  SET_THREAD_POINTER ((tcbp)); })
+
+/* Return the address of the dtv for the current thread.  */
+# define THREAD_DTV() \
+  (((tcbhead_t *) READ_THREAD_POINTER())->dtv)
+
+/* Return the thread descriptor for the current thread.  */
+# define THREAD_SELF \
+ (((struct pthread *) READ_THREAD_POINTER()) - 1)
+
+/* Magic for libthread_db to know how to do THREAD_SELF.  */
+# define DB_THREAD_SELF \
+  CONST_THREAD_AREA (32, sizeof (struct pthread))
+
+/* Access to data in the thread descriptor is easy.  */
+#define THREAD_GETMEM(descr, member) \
+  descr->member
+#define THREAD_GETMEM_NC(descr, member, idx) \
+  descr->member[idx]
+#define THREAD_SETMEM(descr, member, value) \
+  descr->member = (value)
+#define THREAD_SETMEM_NC(descr, member, idx, value) \
+  descr->member[idx] = (value)
+
+/* Initializing the thread pointer will generate a SIGILL if the syscall
+   is not available.  */
+#define TLS_INIT_TP_EXPENSIVE 1
+
+/* Get and set the global scope generation counter in struct pthread.  */
+#define THREAD_GSCOPE_FLAG_UNUSED 0
+#define THREAD_GSCOPE_FLAG_USED   1
+#define THREAD_GSCOPE_FLAG_WAIT   2
+#define THREAD_GSCOPE_RESET_FLAG() \
+  do									     \
+    { int __res								     \
+	= atomic_exchange_rel (&THREAD_SELF->header.gscope_flag,	     \
+			       THREAD_GSCOPE_FLAG_UNUSED);		     \
+      if (__res == THREAD_GSCOPE_FLAG_WAIT)				     \
+	lll_futex_wake (&THREAD_SELF->header.gscope_flag, 1, LLL_PRIVATE);   \
+    }									     \
+  while (0)
+#define THREAD_GSCOPE_SET_FLAG() \
+  do									     \
+    {									     \
+      THREAD_SELF->header.gscope_flag = THREAD_GSCOPE_FLAG_USED;	     \
+      atomic_write_barrier ();						     \
+    }									     \
+  while (0)
+#define THREAD_GSCOPE_WAIT() \
+  GL(dl_wait_lookup_done) ()
+
+#endif /* __ASSEMBLER__ */
+
+#endif	/* tls.h */
diff --git a/ports/sysdeps/microblaze/preconfigure b/ports/sysdeps/microblaze/preconfigure
new file mode 100644
index 0000000..90e2e63
--- /dev/null
+++ b/ports/sysdeps/microblaze/preconfigure
@@ -0,0 +1,3 @@
+case "$machine" in
+microblaze*)	base_machine=microblaze machine=microblaze ;;
+esac
diff --git a/ports/sysdeps/microblaze/setjmp.S b/ports/sysdeps/microblaze/setjmp.S
new file mode 100644
index 0000000..e67e97e
--- /dev/null
+++ b/ports/sysdeps/microblaze/setjmp.S
@@ -0,0 +1,75 @@
+/* Copyright (C) 1997-2012 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 Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <sysdep.h>
+
+/* This source produces 3 functions:
+   __sigsetjmp(jmpbuf,savemask)
+   setjmp(jmpbuf) - equivalent to __sigsetjump(jmpbuf, 1)
+   _setjmp(jmpbuf) - equivalent to __sigsetjump(jmpbuf, 0)
+*/
+
+#ifndef setjmp_name
+#define setjmp_name __sigsetjmp
+#define SET_MASK_ARG
+#else
+#define SET_MASK_ARG    addik r6,r0,SAVEMASK
+#endif
+
+ENTRY (setjmp_name)
+    swi   r1,r5,0
+    swi   r2,r5,4
+    swi   r13,r5,8
+    swi   r14,r5,12
+    swi   r15,r5,16
+    swi   r16,r5,20
+    swi   r17,r5,24
+    swi   r18,r5,28
+    swi   r19,r5,32
+    swi   r20,r5,36
+    swi   r21,r5,40
+    swi   r22,r5,44
+    swi   r23,r5,48
+    swi   r24,r5,52
+    swi   r25,r5,56
+    swi   r26,r5,60
+    swi   r27,r5,64
+    swi   r28,r5,68
+    swi   r29,r5,72
+    swi   r30,r5,76
+    swi   r31,r5,80
+
+    SET_MASK_ARG
+
+	/* Make a tail call to __sigjmp_save; it takes the same args.  */
+#ifdef	PIC
+	/* We cannot use the PLT, because it requires that r20 be set, but
+           we can't save and restore our caller's value.  Instead, we do an
+           indirect jump through the GOT, using for the temporary register
+           %ecx, which is call-clobbered.  */
+    mfs   r12,rpc
+    addik r12,r12,_GLOBAL_OFFSET_TABLE_+8
+    lwi   r12,r12,__sigjmp_save@GOT
+    brad  r12
+#else
+    brid  __sigjmp_save
+#endif
+    nop
+END (setjmp_name)
+
+MICROBLAZE_HIDDEN_DEF (setjmp_name)
diff --git a/ports/sysdeps/microblaze/stackinfo.h b/ports/sysdeps/microblaze/stackinfo.h
new file mode 100644
index 0000000..228b3f5
--- /dev/null
+++ b/ports/sysdeps/microblaze/stackinfo.h
@@ -0,0 +1,34 @@
+/* Copyright (C) 2001-2012 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 Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/* This file contains a bit of information about the stack allocation
+   of the processor.  */
+
+#ifndef _STACKINFO_H
+#define _STACKINFO_H	1
+
+#include <elf.h>
+
+/* On MicroBlaze the stack grows down.  */
+#define _STACK_GROWS_DOWN	1
+
+/* Default to an executable stack.  PF_X can be overridden if PT_GNU_STACK is
+ * present, but it is presumed absent.  */
+#define DEFAULT_STACK_PERMS (PF_R|PF_W|PF_X)
+
+#endif	/* stackinfo.h */
diff --git a/ports/sysdeps/microblaze/start.S b/ports/sysdeps/microblaze/start.S
new file mode 100644
index 0000000..51939e5
--- /dev/null
+++ b/ports/sysdeps/microblaze/start.S
@@ -0,0 +1,67 @@
+/* Copyright (C) 1995-2012 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 Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+	.text
+	.globl _start
+	.type _start,@function
+_start:
+	/* On entry the stack contains the following args:
+           r1+0 - argc
+           r1+4 - argv[0]
+           ...
+           r1+4*(argc-1) - argv[argc-1]
+           r1+4*argc - NULL
+           r1+4*argc + 4 - envp[0]
+           ...
+           NULL
+	*/
+	addk	r3,r0,r0
+	addk	r5,r1,r0
+1:
+	addik	r5,r5,4
+	lw	r4,r5,r0
+	bneid	r4,1b
+	addik	r3,r3,1
+	addik	r6,r3,-1
+	sw	r6,r1,r0
+	addik	r7,r1,4
+	addik	r1,r1,-24
+#ifdef SHARED
+	/* Setup PIC */
+	mfs	r20,rpc
+	addik	r20,r20,_GLOBAL_OFFSET_TABLE_+8
+	lwi	r5,r20,main@GOT
+	lwi	r8,r20,__libc_csu_init@GOT
+	lwi	r9,r20,__libc_csu_fini@GOT
+	brid	__libc_start_main@PLT
+	addk	r10,r0,r0
+#else
+	addik	r5,r0,main
+	addik	r8,r0,__libc_csu_init
+	addik	r9,r0,__libc_csu_fini
+	brid	__libc_start_main
+	addk	r10,r0,r0
+#endif
+
+/* Define a symbol for the first piece of initialized data.  */
+	.data
+	.globl __data_start
+__data_start:
+	.long 0
+	.weak data_start
+	data_start = __data_start
diff --git a/ports/sysdeps/microblaze/sysdep.h b/ports/sysdeps/microblaze/sysdep.h
new file mode 100644
index 0000000..4baa091
--- /dev/null
+++ b/ports/sysdeps/microblaze/sysdep.h
@@ -0,0 +1,113 @@
+/* Copyright (C) 1997-2012 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 Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <sysdeps/generic/sysdep.h>
+
+#ifdef __ASSEMBLER__
+
+/* Syntactic details of assembler.  */
+
+# ifdef HAVE_ELF
+
+/* ELF uses byte-counts for .align, most others use log2 of count of bytes.  */
+#  define ALIGNARG(log2) 1<<log2
+/* For ELF we need the `.type' directive to make shared libs work right.  */
+#  define ASM_TYPE_DIRECTIVE(name,typearg) .type name,typearg
+#  define ASM_SIZE_DIRECTIVE(name) .size name,.-name
+
+/* In ELF C symbols are asm symbols.  */
+#  undef NO_UNDERSCORES
+#  define NO_UNDERSCORES
+
+# else
+
+#  define ALIGNARG(log2) log2
+#  define ASM_TYPE_DIRECTIVE(name,type)	/* Nothing is specified.  */
+#  define ASM_SIZE_DIRECTIVE(name)	/* Nothing is specified.  */
+
+# endif
+
+
+/* Define an entry point visible from C.
+
+   There is currently a bug in gdb which prevents us from specifying
+   incomplete stabs information.  Fake some entries here which specify
+   the current source file.  */
+# define ENTRY(name)							      \
+  .globl C_SYMBOL_NAME(name);						      \
+  ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function);			      \
+  .align ALIGNARG(2);							      \
+  C_LABEL(name)								      \
+  CALL_MCOUNT
+
+# undef END
+# define END(name) ASM_SIZE_DIRECTIVE(name)
+
+
+/* If compiled for profiling, call `_mcount' at the start of each function.  */
+# ifdef	PROF
+/* The mcount code relies on a normal frame pointer being on the stack
+   to locate our caller, so push one just for its benefit.  */
+#  define CALL_MCOUNT \
+  addik r1,r1,-4;	\
+  swi r15,r1,0;		\
+  brlid r15,JUMPTARGET(mcount); \
+  nop;			\
+  lwi r15,r1,0;		\
+  addik r1,r1,4;
+# else
+#  define CALL_MCOUNT		/* Do nothing.  */
+# endif
+
+# ifdef	NO_UNDERSCORES
+/* Since C identifiers are not normally prefixed with an underscore
+   on this system, the asm identifier `syscall_error' intrudes on the
+   C name space.  Make sure we use an innocuous name.  */
+#  define syscall_error	__syscall_error
+#  define mcount	_mcount
+# endif
+
+# define PSEUDO(name, syscall_name, args)				      \
+  .globl syscall_error;							      \
+  ENTRY (name)								      \
+    DO_CALL (syscall_name, args);					      \
+    /* jcc JUMPTARGET(syscall_error) FIXME */
+
+# define ret \
+  rtsd r15,8; nop;
+
+# undef PSEUDO_END
+# define PSEUDO_END(name)						      \
+  END (name)
+
+# undef JUMPTARGET
+# ifdef PIC
+#  define JUMPTARGET(name)	name##@PLTPC
+# else
+#  define JUMPTARGET(name)	name
+# endif
+
+/* Assembler local label name */
+#define L(name) $L##name
+
+#define MICROBLAZE_HIDDEN_DEF_REAL(x) \
+hidden_def(x)
+
+#define MICROBLAZE_HIDDEN_DEF(x) MICROBLAZE_HIDDEN_DEF_REAL(C_SYMBOL_NAME(x))
+
+#endif	/* __ASSEMBLER__ */
diff --git a/ports/sysdeps/microblaze/tls-macros.h b/ports/sysdeps/microblaze/tls-macros.h
new file mode 100644
index 0000000..9a8030a
--- /dev/null
+++ b/ports/sysdeps/microblaze/tls-macros.h
@@ -0,0 +1,44 @@
+/* Copyright (C) 2009-2012 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 Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#define TLS_LD(x)					\
+  ({ char *__result;					\
+     int __offset;					\
+     extern void *__tls_get_addr (void *);		\
+     asm ("mfs r20,rpc \n"				\
+	  "addik r20,r20,_GLOBAL_OFFSET_TABLE_+8\n"     \
+	  "addik %0,r20," #x "@TLSLDM"                  \
+	  : "=r" (__result));				\
+     __result = (char *)__tls_get_addr (__result);	\
+     asm ("addik %0,r0,"#x"@TLSDTPREL"                  \
+	  : "=r" (__offset));				\
+     (int *) (__result + __offset); })
+
+
+#define TLS_GD(x)					\
+  ({ int *__result;					\
+     extern void *__tls_get_addr (void *);		\
+     asm ("mfs  r20,rpc\n"				\
+	  "addik r20,r20,_GLOBAL_OFFSET_TABLE_+8\n"     \
+	  "addik %0,r20," #x "@TLSGD"			\
+	  : "=r" (__result));				\
+     (int *)__tls_get_addr (__result); })
+
+#define TLS_LE(x) TLS_LD(x)
+
+#define TLS_IE(x) TLS_GD(x)
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/Makefile b/ports/sysdeps/unix/sysv/linux/microblaze/Makefile
new file mode 100644
index 0000000..3cf2b6a
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/Makefile
@@ -0,0 +1,12 @@
+ifeq ($(subdir),misc)
+sysdep_routines += mremap
+endif
+
+ifeq ($(subdir),elf)
+sysdep-others += lddlibc4
+install-bin += lddlibc4
+endif
+
+ifeq ($(subdir),resource)
+sysdep_routines += oldgetrlimit64 backtrace_linux
+endif
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/Versions b/ports/sysdeps/unix/sysv/linux/microblaze/Versions
new file mode 100644
index 0000000..cf363fa
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/Versions
@@ -0,0 +1,42 @@
+libc {
+  GLIBC_2.0 {
+    # Exception handling support functions from libgcc
+    __register_frame; __register_frame_table; __deregister_frame;
+    __frame_state_for; __register_frame_info_table;
+
+    # c*
+    cacheflush;
+  }
+  GLIBC_2.2 {
+    # functions used in other libraries
+    __xstat64; __fxstat64; __lxstat64;
+
+    # a*
+    alphasort64;
+
+    # g*
+    glob64;
+
+    # New rlimit interface
+    getrlimit; setrlimit; getrlimit64; setrlimit64;
+
+    # r*
+    readdir64; readdir64_r;
+
+    # s*
+    scandir64;
+
+    # v*
+    versionsort64;
+  }
+  GLIBC_2.3.3 {
+    posix_fadvise64; posix_fallocate64;
+    setcontext; getcontext; swapcontext; makecontext;
+  }
+  GLIBC_2.3.4 {
+    setcontext; getcontext; swapcontext; makecontext;
+  }
+  GLIBC_2.11 {
+    fallocate64;
+  }
+}
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/____longjmp_chk.S b/ports/sysdeps/unix/sysv/linux/microblaze/____longjmp_chk.S
new file mode 100644
index 0000000..5fed890
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/____longjmp_chk.S
@@ -0,0 +1,29 @@
+/* Copyright (C) 1997-2012 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 Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <sysdep.h>
+
+	.text
+ENTRY (__revisit_longjmp_chk)
+	rtsd	r15,0
+	nop
+PSEUDO_END (__revisit_longjmp_chk)
+ENTRY (____longjmp_chk)
+	rtsd	r15,0
+	nop
+PSEUDO_END (____longjmp_chk)
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/alphasort64.c b/ports/sysdeps/unix/sysv/linux/microblaze/alphasort64.c
new file mode 100644
index 0000000..0b5ae47
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/alphasort64.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/alphasort64.c>
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/bits/fcntl.h b/ports/sysdeps/unix/sysv/linux/microblaze/bits/fcntl.h
new file mode 100644
index 0000000..076c4a2
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/bits/fcntl.h
@@ -0,0 +1,57 @@
+/* O_*, F_*, FD_* bit values for Linux.
+   Copyright (C) 2011, 2012 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 Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef	_FCNTL_H
+# error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
+#endif
+
+# define O_DIRECTORY    0200000 /* Must be a directory.  */
+# define O_NOFOLLOW     0400000 /* Do not follow links.  */
+# define O_DIRECT        040000 /* Direct disk access.  */
+#ifdef __USE_LARGEFILE64
+# define O_LARGEFILE    0100000
+#endif
+
+struct flock
+  {
+    short int l_type;	/* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK.	*/
+    short int l_whence;	/* Where `l_start' is relative to (like `lseek').  */
+#ifndef __USE_FILE_OFFSET64
+    __off_t l_start;	/* Offset where the lock begins.  */
+    __off_t l_len;	/* Size of the locked area; zero means until EOF.  */
+#else
+    __off64_t l_start;	/* Offset where the lock begins.  */
+    __off64_t l_len;	/* Size of the locked area; zero means until EOF.  */
+#endif
+    __pid_t l_pid;	/* Process holding the lock.  */
+  };
+
+#ifdef __USE_LARGEFILE64
+struct flock64
+  {
+    short int l_type;	/* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK.	*/
+    short int l_whence;	/* Where `l_start' is relative to (like `lseek').  */
+    __off64_t l_start;	/* Offset where the lock begins.  */
+    __off64_t l_len;	/* Size of the locked area; zero means until EOF.  */
+    __pid_t l_pid;	/* Process holding the lock.  */
+  };
+#endif
+
+/* Include generic Linux declarations.  */
+#include <bits/fcntl-linux.h>
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/bits/ipc.h b/ports/sysdeps/unix/sysv/linux/microblaze/bits/ipc.h
new file mode 100644
index 0000000..f3acb93
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/bits/ipc.h
@@ -0,0 +1,55 @@
+/* Copyright (C) 2011, 2012 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 Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _SYS_IPC_H
+# error "Never use <bits/ipc.h> directly; include <sys/ipc.h> instead."
+#endif
+
+#include <bits/types.h>
+
+/* Mode bits for `msgget', `semget', and `shmget'.  */
+#define IPC_CREAT	01000		/* Create key if key does not exist. */
+#define IPC_EXCL	02000		/* Fail if key exists.  */
+#define IPC_NOWAIT	04000		/* Return error on wait.  */
+
+/* Control commands for `msgctl', `semctl', and `shmctl'.  */
+#define IPC_RMID	0		/* Remove identifier.  */
+#define IPC_SET		1		/* Set `ipc_perm' options.  */
+#define IPC_STAT	2		/* Get `ipc_perm' options.  */
+#ifdef __USE_GNU
+# define IPC_INFO	3		/* See ipcs.  */
+#endif
+
+/* Special key values.  */
+#define IPC_PRIVATE	((__key_t) 0)	/* Private key.  */
+
+
+/* Data structure used to pass permission information to IPC operations.  */
+struct ipc_perm
+  {
+    __key_t __key;			/* Key.  */
+    __uid_t uid;			/* Owner's user ID.  */
+    __gid_t gid;			/* Owner's group ID.  */
+    __uid_t cuid;			/* Creator's user ID.  */
+    __gid_t cgid;			/* Creator's group ID.  */
+    unsigned short int mode;		/* Read/write permission.  */
+    unsigned short int __seq;		/* Sequence number.  */
+    unsigned short int __pad1;
+    unsigned long int __unused1;
+    unsigned long int __unused2;
+  };
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/bits/mman.h b/ports/sysdeps/unix/sysv/linux/microblaze/bits/mman.h
new file mode 100644
index 0000000..740e70c
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/bits/mman.h
@@ -0,0 +1,114 @@
+/* Definitions for POSIX memory map interface.  Linux/MicroBlaze version.
+
+   Copyright (C) 1997-2012 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 Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _SYS_MMAN_H
+# error "Never use <bits/mman.h> directly; include <sys/mman.h> instead."
+#endif
+
+/* The following definitions basically come from the kernel headers.
+   But the kernel header is not namespace clean.  */
+
+
+/* Protections are chosen from these bits, OR'd together.  The
+   implementation does not necessarily support PROT_EXEC or PROT_WRITE
+   without PROT_READ.  The only guarantees are that no writing will be
+   allowed without PROT_WRITE and no access will be allowed for PROT_NONE. */
+
+#define PROT_READ	0x1		/* Page can be read.  */
+#define PROT_WRITE	0x2		/* Page can be written.  */
+#define PROT_EXEC	0x4		/* Page can be executed.  */
+#define PROT_NONE	0x0		/* Page can not be accessed.  */
+#define PROT_GROWSDOWN	0x01000000	/* Extend change to start of
+					   growsdown vma (mprotect only).  */
+#define PROT_GROWSUP	0x02000000	/* Extend change to start of
+					   growsup vma (mprotect only).  */
+
+/* Sharing types (must choose one and only one of these).  */
+#define MAP_SHARED	0x01		/* Share changes.  */
+#define MAP_PRIVATE	0x02		/* Changes are private.  */
+#ifdef __USE_MISC
+# define MAP_TYPE	0x0f		/* Mask for type of mapping.  */
+#endif
+
+/* Other flags.  */
+#define MAP_FIXED	0x10		/* Interpret addr exactly.  */
+#ifdef __USE_MISC
+# define MAP_FILE	0
+# define MAP_ANONYMOUS	0x20		/* Don't use a file.  */
+# define MAP_ANON	MAP_ANONYMOUS
+#endif
+
+/* These are Linux-specific.  */
+#ifdef __USE_MISC
+# define MAP_GROWSDOWN	0x00100		/* Stack-like segment.  */
+# define MAP_DENYWRITE	0x00800		/* ETXTBSY */
+# define MAP_EXECUTABLE	0x01000		/* Mark it as an executable.  */
+# define MAP_LOCKED	0x02000		/* Lock the mapping.  */
+# define MAP_NORESERVE	0x04000		/* Don't check for reservations.  */
+# define MAP_POPULATE	0x08000		/* Populate (prefault) pagetables.  */
+# define MAP_NONBLOCK	0x10000		/* Do not block on IO.  */
+# define MAP_STACK	0x20000		/* Allocation is for a stack.  */
+# define MAP_HUGETLB	0x40000		/* Create huge page mapping.  */
+#endif
+
+/* Flags to `msync'.  */
+#define MS_ASYNC	1		/* Sync memory asynchronously.  */
+#define MS_SYNC		4		/* Synchronous memory sync.  */
+#define MS_INVALIDATE	2		/* Invalidate the caches.  */
+
+/* Flags for `mlockall'.  */
+#define MCL_CURRENT	1		/* Lock all currently mapped pages.  */
+#define MCL_FUTURE	2		/* Lock all additions to address
+					   space.  */
+
+/* Flags for `mremap'.  */
+#ifdef __USE_GNU
+# define MREMAP_MAYMOVE	1
+# define MREMAP_FIXED	2
+#endif
+
+/* Advice to `madvise'.  */
+#ifdef __USE_BSD
+# define MADV_NORMAL	  0	/* No further special treatment.  */
+# define MADV_RANDOM	  1	/* Expect random page references.  */
+# define MADV_SEQUENTIAL  2	/* Expect sequential page references.  */
+# define MADV_WILLNEED	  3	/* Will need these pages.  */
+# define MADV_DONTNEED	  4	/* Don't need these pages.  */
+# define MADV_REMOVE	  9	/* Remove these pages and resources.  */
+# define MADV_DONTFORK	  10	/* Do not inherit across fork.  */
+# define MADV_DOFORK	  11	/* Do inherit across fork.  */
+# define MADV_MERGEABLE	  12	/* KSM may merge identical pages.  */
+# define MADV_UNMERGEABLE 13	/* KSM may not merge identical pages.  */
+# define MADV_HUGEPAGE	  14	/* Worth backing with hugepages.  */
+# define MADV_NOHUGEPAGE  15	/* Not worth backing with hugepages.  */
+# define MADV_DONTDUMP	  16    /* Explicity exclude from the core dump,
+                                   overrides the coredump filter bits.  */
+# define MADV_DODUMP	  17	/* Clear the MADV_DONTDUMP flag.  */
+# define MADV_HWPOISON	  100	/* Poison a page for testing.  */
+#endif
+
+/* The POSIX people had to invent similar names for the same things.  */
+#ifdef __USE_XOPEN2K
+# define POSIX_MADV_NORMAL	0 /* No further special treatment.  */
+# define POSIX_MADV_RANDOM	1 /* Expect random page references.  */
+# define POSIX_MADV_SEQUENTIAL	2 /* Expect sequential page references.  */
+# define POSIX_MADV_WILLNEED	3 /* Will need these pages.  */
+# define POSIX_MADV_DONTNEED	4 /* Don't need these pages.  */
+#endif
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/bits/msq.h b/ports/sysdeps/unix/sysv/linux/microblaze/bits/msq.h
new file mode 100644
index 0000000..cb7eca7
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/bits/msq.h
@@ -0,0 +1,77 @@
+/* Copyright (C) 1997-2012 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 Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _SYS_MSG_H
+# error "Never use <bits/msq.h> directly; include <sys/msg.h> instead."
+#endif
+
+#include <bits/types.h>
+
+/* Define options for message queue functions.  */
+#define MSG_NOERROR	010000	/* no error if message is too big */
+#ifdef __USE_GNU
+# define MSG_EXCEPT	020000	/* recv any msg except of specified type */
+#endif
+
+/* Types used in the structure definition.  */
+typedef unsigned long int msgqnum_t;
+typedef unsigned long int msglen_t;
+
+
+/* Structure of record for one message inside the kernel.
+   The type `struct msg' is opaque.  */
+struct msqid_ds
+{
+  struct ipc_perm msg_perm;	/* structure describing operation permission */
+  __time_t msg_stime;		/* time of last msgsnd command */
+  unsigned long int __unused1;
+  __time_t msg_rtime;		/* time of last msgrcv command */
+  unsigned long int __unused2;
+  __time_t msg_ctime;		/* time of last change */
+  unsigned long int __unused3;
+  unsigned long int __msg_cbytes; /* current number of bytes on queue */
+  msgqnum_t msg_qnum;		/* number of messages currently on queue */
+  msglen_t msg_qbytes;		/* max number of bytes allowed on queue */
+  __pid_t msg_lspid;		/* pid of last msgsnd() */
+  __pid_t msg_lrpid;		/* pid of last msgrcv() */
+  unsigned long int __unused4;
+  unsigned long int __unused5;
+};
+
+#ifdef __USE_MISC
+
+# define msg_cbytes	__msg_cbytes
+
+/* ipcs ctl commands */
+# define MSG_STAT 11
+# define MSG_INFO 12
+
+/* buffer for msgctl calls IPC_INFO, MSG_INFO */
+struct msginfo
+  {
+    int msgpool;
+    int msgmap;
+    int msgmax;
+    int msgmnb;
+    int msgmni;
+    int msgssz;
+    int msgtql;
+    unsigned short int msgseg;
+  };
+
+#endif /* __USE_MISC */
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/bits/sem.h b/ports/sysdeps/unix/sysv/linux/microblaze/bits/sem.h
new file mode 100644
index 0000000..2968301
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/bits/sem.h
@@ -0,0 +1,87 @@
+/* Copyright (C) 1997-2012 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 Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _SYS_SEM_H
+# error "Never include <bits/sem.h> directly; use <sys/sem.h> instead."
+#endif
+
+#include <sys/types.h>
+
+/* Flags for `semop'.  */
+#define SEM_UNDO	0x1000		/* undo the operation on exit */
+
+/* Commands for `semctl'.  */
+#define GETPID		11		/* get sempid */
+#define GETVAL		12		/* get semval */
+#define GETALL		13		/* get all semval's */
+#define GETNCNT		14		/* get semncnt */
+#define GETZCNT		15		/* get semzcnt */
+#define SETVAL		16		/* set semval */
+#define SETALL		17		/* set all semval's */
+
+
+/* Data structure describing a set of semaphores.  */
+struct semid_ds
+{
+  struct ipc_perm sem_perm;		/* operation permission struct */
+  __time_t sem_otime;			/* last semop() time */
+  unsigned long int __unused1;
+  __time_t sem_ctime;			/* last time changed by semctl() */
+  unsigned long int __unused2;
+  unsigned long int sem_nsems;		/* number of semaphores in set */
+  unsigned long int __unused3;
+  unsigned long int __unused4;
+};
+
+/* The user should define a union like the following to use it for arguments
+   for `semctl'.
+
+   union semun
+   {
+     int val;				<= value for SETVAL
+     struct semid_ds *buf;		<= buffer for IPC_STAT & IPC_SET
+     unsigned short int *array;		<= array for GETALL & SETALL
+     struct seminfo *__buf;		<= buffer for IPC_INFO
+   };
+
+   Previous versions of this file used to define this union but this is
+   incorrect.  One can test the macro _SEM_SEMUN_UNDEFINED to see whether
+   one must define the union or not.  */
+#define _SEM_SEMUN_UNDEFINED	1
+
+#ifdef __USE_MISC
+
+/* ipcs ctl cmds */
+# define SEM_STAT 18
+# define SEM_INFO 19
+
+struct  seminfo
+{
+  int semmap;
+  int semmni;
+  int semmns;
+  int semmnu;
+  int semmsl;
+  int semopm;
+  int semume;
+  int semusz;
+  int semvmx;
+  int semaem;
+};
+
+#endif /* __USE_MISC */
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/bits/shm.h b/ports/sysdeps/unix/sysv/linux/microblaze/bits/shm.h
new file mode 100644
index 0000000..8460718
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/bits/shm.h
@@ -0,0 +1,102 @@
+/* Copyright (C) 1997-2012 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 Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _SYS_SHM_H
+# error "Never include <bits/shm.h> directly; use <sys/shm.h> instead."
+#endif
+
+#include <bits/types.h>
+
+/* Permission flag for shmget.  */
+#define SHM_R		0400		/* or S_IRUGO from <linux/stat.h> */
+#define SHM_W		0200		/* or S_IWUGO from <linux/stat.h> */
+
+/* Flags for `shmat'.  */
+#define SHM_RDONLY	010000		/* attach read-only else read-write */
+#define SHM_RND		020000		/* round attach address to SHMLBA */
+#define SHM_REMAP	040000		/* take-over region on attach */
+
+/* Commands for `shmctl'.  */
+#define SHM_LOCK	11		/* lock segment (root only) */
+#define SHM_UNLOCK	12		/* unlock segment (root only) */
+
+__BEGIN_DECLS
+
+/* Segment low boundary address multiple.  */
+#define SHMLBA		(__getpagesize ())
+extern int __getpagesize (void) __THROW __attribute__ ((__const__));
+
+
+/* Type to count number of attaches.  */
+typedef unsigned long int shmatt_t;
+
+/* Data structure describing a set of semaphores.  */
+struct shmid_ds
+  {
+    struct ipc_perm shm_perm;		/* operation permission struct */
+    size_t shm_segsz;			/* size of segment in bytes */
+    __time_t shm_atime;			/* time of last shmat() */
+    unsigned long int __unused1;
+    __time_t shm_dtime;			/* time of last shmdt() */
+    unsigned long int __unused2;
+    __time_t shm_ctime;			/* time of last change by shmctl() */
+    unsigned long int __unused3;
+    __pid_t shm_cpid;			/* pid of creator */
+    __pid_t shm_lpid;			/* pid of last shmop */
+    shmatt_t shm_nattch;		/* number of current attaches */
+    unsigned long int __unused4;
+    unsigned long int __unused5;
+  };
+
+#ifdef __USE_MISC
+
+/* ipcs ctl commands */
+# define SHM_STAT 	13
+# define SHM_INFO 	14
+
+/* shm_mode upper byte flags */
+# define SHM_DEST	01000	/* segment will be destroyed on last detach */
+# define SHM_LOCKED	02000   /* segment will not be swapped */
+# define SHM_HUGETLB	04000	/* segment is mapped via hugetlb */
+
+struct	shminfo
+  {
+    unsigned long int shmmax;
+    unsigned long int shmmin;
+    unsigned long int shmmni;
+    unsigned long int shmseg;
+    unsigned long int shmall;
+    unsigned long int __unused1;
+    unsigned long int __unused2;
+    unsigned long int __unused3;
+    unsigned long int __unused4;
+  };
+
+struct shm_info
+  {
+    int used_ids;
+    unsigned long int shm_tot;	/* total allocated shm */
+    unsigned long int shm_rss;	/* total resident shm */
+    unsigned long int shm_swp;	/* total swapped shm */
+    unsigned long int swap_attempts;
+    unsigned long int swap_successes;
+  };
+
+#endif /* __USE_MISC */
+
+__END_DECLS
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/bits/stat.h b/ports/sysdeps/unix/sysv/linux/microblaze/bits/stat.h
new file mode 100644
index 0000000..edf0212
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/bits/stat.h
@@ -0,0 +1,203 @@
+/* Copyright (C) 1997-2012 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 Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#if !defined _SYS_STAT_H && !defined _FCNTL_H
+# error "Never include <bits/stat.h> directly; use <sys/stat.h> instead."
+#endif
+
+#ifndef _BITS_STAT_H
+#define _BITS_STAT_H	1
+
+/* Versions of the `struct stat' data structure.  */
+#define _STAT_VER_LINUX_OLD	1
+#define _STAT_VER_KERNEL	1
+#define _STAT_VER_SVR4		2
+#define _STAT_VER_LINUX		3
+#define _STAT_VER		_STAT_VER_LINUX	/* The one defined below.  */
+
+/* Versions of the `xmknod' interface.  */
+#define _MKNOD_VER_LINUX	1
+#define _MKNOD_VER_SVR4		2
+#define _MKNOD_VER		_MKNOD_VER_LINUX /* The bits defined below.  */
+
+#ifndef __USE_FILE_OFFSET64
+struct stat
+{
+        __dev_t         st_dev; /* Device. */
+        __ino_t         st_ino; /* File serial number. */
+        __mode_t        st_mode; /* File mode. */
+        __nlink_t       st_nlink; /* Link count. */
+        __uid_t         st_uid; /* User ID of the file's owner. */
+        __gid_t         st_gid; /* Group ID of the file's group. */
+        __dev_t         st_rdev; /* Device number, if device. */
+        unsigned long   __pad2;
+        __off_t         st_size; /* Size of file, in bytes. */
+        __blksize_t     st_blksize; /* Optimal block size for I/O. */
+        int             __pad3;
+        __blkcnt_t      st_blocks; /* Number 512-byte blocks allocated. */
+#ifdef __USE_MISC
+        /* Nanosecond resolution timestamps are stored in a format
+         * equivalent to 'struct timespec'. This is the type used
+         * whenever possible but the Unix namespace rules do not allow the
+         * identifier 'timespec' to appear in the <sys/stat.h> header.
+         * Therefore we have to handle the use of this header in strictly
+         * standard-compliant sources special. */
+        struct timespec         st_atim; /* Time of last access. */
+        struct timespec         st_mtim; /* Time of last modification. */
+        struct timespec         st_ctim; /* Time of last status change. */
+# define st_atime st_atim.tv_sec        /* Backward compatibility. */
+# define st_mtime st_mtim.tv_sec
+# define st_ctime st_ctim.tv_sec
+#else
+        __time_t                st_atime; /* Time of last access. */
+        unsigned long int       st_atimensec; /* Nscecs of last access. */
+        __time_t                st_mtime; /* Time of last modification. */
+        unsigned long int       st_mtimensec; /* Nsecs of last modification. */
+        __time_t                st_ctime; /* Time of last status change. */
+        unsigned long int       st_ctimensec; /* Nsecs of last status change. */
+#endif
+        unsigned int    __unused4;
+        unsigned int    __unused5;
+};
+#else /* __USE_FILE_OFFSET64 */
+/* MS: If __USE_FILE_OFFSET64 is setup then struct stat should match stat64
+ * structure. Glibc has no type __dev64_t that's why I had to use standard
+ * type for st_dev and st_rdev. Several architectures uses pads after st_dev
+ * but this approach covers BIG and LITTLE endian. I think it is better to
+ * create one ifdef to separate stats structures. */
+struct stat
+{
+        unsigned long long      st_dev; /* Device. */
+        __ino64_t               st_ino; /* 32bit file serial number. */
+        __mode_t                st_mode; /* File mode. */
+        __nlink_t               st_nlink; /* Link count. */
+        __uid_t                 st_uid; /* User ID of the file's owner. */
+        __gid_t                 st_gid; /* Group ID of the file's group. */
+        unsigned long long      st_rdev; /* Device number, if device. */
+        unsigned long long      __pad2;
+        __off64_t               st_size; /* Size of file, in bytes. */
+        __blksize_t             st_blksize; /* Optimal block size for I/O. */
+        int                     __pad3;
+        __blkcnt64_t            st_blocks; /* Number 512-byte blocks allocated. */
+#ifdef __USE_MISC
+        /* Nanosecond resolution timestamps are stored in a format
+         * equivalent to 'struct timespec'. This is the type used
+         * whenever possible but the Unix namespace rules do not allow the
+         * identifier 'timespec' to appear in the <sys/stat.h> header.
+         * Therefore we have to handle the use of this header in strictly
+         * standard-compliant sources special. */
+        struct timespec         st_atim; /* Time of last access. */
+        struct timespec         st_mtim; /* Time of last modification. */
+        struct timespec         st_ctim; /* Time of last status change. */
+# define st_atime st_atim.tv_sec        /* Backward compatibility. */
+# define st_mtime st_mtim.tv_sec
+# define st_ctime st_ctim.tv_sec
+#else
+        __time_t                st_atime; /* Time of last access. */
+        unsigned long int       st_atimensec; /* Nscecs of last access. */
+        __time_t                st_mtime; /* Time of last modification. */
+        unsigned long int       st_mtimensec; /* Nsecs of last modification. */
+        __time_t                st_ctime; /* Time of last status change. */
+        unsigned long int       st_ctimensec; /* Nsecs of last status change. */
+#endif
+        unsigned int    __unused4;
+        unsigned int    __unused5;
+};
+#endif /* __USE_FILE_OFFSET64 */
+
+#ifdef __USE_LARGEFILE64
+struct stat64
+{
+        unsigned long long      st_dev; /* Device. */
+        __ino64_t               st_ino; /* 32bit file serial number. */
+        __mode_t                st_mode; /* File mode. */
+        __nlink_t               st_nlink; /* Link count. */
+        __uid_t                 st_uid; /* User ID of the file's owner. */
+        __gid_t                 st_gid; /* Group ID of the file's group. */
+        unsigned long long      st_rdev; /* Device number, if device. */
+        unsigned long long      __pad2;
+        __off64_t               st_size; /* Size of file, in bytes. */
+        __blksize_t             st_blksize; /* Optimal block size for I/O. */
+        int                     __pad3;
+        __blkcnt64_t            st_blocks; /* Number 512-byte blocks allocated. */
+#ifdef __USE_MISC
+        /* Nanosecond resolution timestamps are stored in a format
+         * equivalent to 'struct timespec'. This is the type used
+         * whenever possible but the Unix namespace rules do not allow the
+         * identifier 'timespec' to appear in the <sys/stat.h> header.
+         * Therefore we have to handle the use of this header in strictly
+         * standard-compliant sources special. */
+        struct timespec         st_atim; /* Time of last access. */
+        struct timespec         st_mtim; /* Time of last modification. */
+        struct timespec         st_ctim; /* Time of last status change. */
+# define st_atime st_atim.tv_sec        /* Backward compatibility. */
+# define st_mtime st_mtim.tv_sec
+# define st_ctime st_ctim.tv_sec
+#else
+        __time_t                st_atime; /* Time of last access. */
+        unsigned long int       st_atimensec; /* Nscecs of last access. */
+        __time_t                st_mtime; /* Time of last modification. */
+        unsigned long int       st_mtimensec; /* Nsecs of last modification. */
+        __time_t                st_ctime; /* Time of last status change. */
+        unsigned long int       st_ctimensec; /* Nsecs of last status change. */
+#endif
+        unsigned int    __unused4;
+        unsigned int    __unused5;
+};
+#endif
+
+/* Tell code we have these members.  */
+#define _STATBUF_ST_BLKSIZE
+#define _STATBUF_ST_RDEV
+/* Nanosecond resolution time values are supported.  */
+#define _STATBUF_ST_NSEC
+
+/* Encoding of the file mode.  */
+
+#define __S_IFMT        0170000 /* These bits determine file type.  */
+
+/* File types.  */
+#define __S_IFDIR       0040000 /* Directory.  */
+#define __S_IFCHR       0020000 /* Character device.  */
+#define __S_IFBLK       0060000 /* Block device.  */
+#define __S_IFREG       0100000 /* Regular file.  */
+#define __S_IFIFO       0010000 /* FIFO.  */
+#define __S_IFLNK       0120000 /* Symbolic link.  */
+#define __S_IFSOCK      0140000 /* Socket.  */
+
+/* POSIX.1b objects.  Note that these macros always evaluate to zero.  But
+   they do it by enforcing the correct use of the macros.  */
+#define __S_TYPEISMQ(buf)  ((buf)->st_mode - (buf)->st_mode)
+#define __S_TYPEISSEM(buf) ((buf)->st_mode - (buf)->st_mode)
+#define __S_TYPEISSHM(buf) ((buf)->st_mode - (buf)->st_mode)
+
+/* Protection bits.  */
+
+#define __S_ISUID       04000   /* Set user ID on execution.  */
+#define __S_ISGID       02000   /* Set group ID on execution.  */
+#define __S_ISVTX       01000   /* Save swapped text after use (sticky).  */
+#define __S_IREAD       0400    /* Read by owner.  */
+#define __S_IWRITE      0200    /* Write by owner.  */
+#define __S_IEXEC       0100    /* Execute by owner.  */
+
+#ifdef __USE_ATFILE
+# define UTIME_NOW	((1l << 30) - 1l)
+# define UTIME_OMIT	((1l << 30) - 2l)
+#endif
+
+#endif	/* bits/stat.h */
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/brk.c b/ports/sysdeps/unix/sysv/linux/microblaze/brk.c
new file mode 100644
index 0000000..da10866
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/brk.c
@@ -0,0 +1,47 @@
+/* Copyright (C) 1997-2012 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 Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <errno.h>
+#include <unistd.h>
+#include <sysdep.h>
+
+void *__curbrk = 0;
+
+/* Old braindamage in GCC's crtstuff.c requires this symbol in an attempt
+   to work around different old braindamage in the old Linux/x86 ELF
+   dynamic linker.  Sigh.  */
+weak_alias (__curbrk, ___brk_addr)
+
+int
+__brk (void *addr)
+{
+  void *newbrk;
+
+  INTERNAL_SYSCALL_DECL (err);
+  newbrk = (void *) INTERNAL_SYSCALL (brk, err, 1, addr);
+  __curbrk = newbrk;
+
+  if (newbrk < addr)
+    {
+      __set_errno (ENOMEM);
+      return -1;
+    }
+
+  return 0;
+}
+weak_alias (__brk, brk)
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/clone.S b/ports/sysdeps/unix/sysv/linux/microblaze/clone.S
new file mode 100644
index 0000000..f86404d
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/clone.S
@@ -0,0 +1,70 @@
+/* Copyright (C) 1996-2012  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 Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/* clone() is even more special than fork() as it mucks with stacks
+   and invokes a function in the right context after its all over.  */
+
+#include <sysdep.h>
+#define _ERRNO_H	1
+#include <bits/errno.h>
+
+/* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg,
+	     pid_t *ptid, struct user_desc *tls, pid_t *ctid);
+
+   INCOMING: r5 (fn), r6(child_stack), r7(flags), r8(arg), r9(ptid)
+             r10 (tls), 28(r1) ctid
+   OUTGOING:
+
+   linux: arch/microblaze/entry.S: sys_clone expects
+	r5 (flags)  r6(child stack) r7(stack_size) r8(ptid) r9(ctid) r10(tls)
+*/
+
+        .text
+ENTRY (__clone)
+	addik	r3,r0,-EINVAL
+	beqi	r5,SYSCALL_ERROR_LABEL	; // Invalid func
+	beqi	r6,SYSCALL_ERROR_LABEL	; // Invalid stack
+	addik	r6,r6,-8
+	swi	r5,r6,0			; // Push fn onto child's stack
+	swi	r8,r6,4			; // Push arg for child
+	addk	r5,r0,r7		; // flags for clone() syscall
+	addk	r7,r0,r0
+	addk	r8,r0,r9		; // parent tid ptr
+	lwi	r9,r1,28		; // child tid ptr
+	addik	r12,r0,SYS_ify(clone)
+	brki	r14,8
+	addk	r0,r0,r0
+	addik	r4,r0,-4095
+	cmpu	r4,r4,r3
+	bgei	r4,SYSCALL_ERROR_LABEL
+	beqi	r3,L(thread_start)
+	rtsd	r15,8
+	nop
+
+L(thread_start):
+	lwi	r12,r1,0		; // fn
+	lwi	r5,r1,4			; // arg
+	brald	r15,r12
+	nop
+	addk	r5,r0,r3
+	addik	r12,r0,SYS_ify(exit)
+	brki	r14,8
+	nop
+PSEUDO_END(__clone)
+
+weak_alias(__clone,clone)
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/configure b/ports/sysdeps/unix/sysv/linux/microblaze/configure
new file mode 100644
index 0000000..4486fba
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/configure
@@ -0,0 +1,4 @@
+# This file is generated from configure.in by Autoconf.  DO NOT EDIT!
+
+libc_cv_gcc_unwind_find_fde=yes
+arch_minimum_kernel=2.0.10
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/configure.in b/ports/sysdeps/unix/sysv/linux/microblaze/configure.in
new file mode 100644
index 0000000..cfb6163
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/configure.in
@@ -0,0 +1,5 @@
+GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
+# Local configure fragment for sysdeps/unix/sysv/linux/microblaze.
+
+libc_cv_gcc_unwind_find_fde=yes
+arch_minimum_kernel=2.0.10
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/dl-librecon.h b/ports/sysdeps/unix/sysv/linux/microblaze/dl-librecon.h
new file mode 100644
index 0000000..dbb4e75
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/dl-librecon.h
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/dl-librecon.h>
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/fchown.c b/ports/sysdeps/unix/sysv/linux/microblaze/fchown.c
new file mode 100644
index 0000000..3a69ecc
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/fchown.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/fchown.c>
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/fchownat.c b/ports/sysdeps/unix/sysv/linux/microblaze/fchownat.c
new file mode 100644
index 0000000..dfed76a
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/fchownat.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/fchownat.c>
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/fcntl.c b/ports/sysdeps/unix/sysv/linux/microblaze/fcntl.c
new file mode 100644
index 0000000..ea951bc
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/fcntl.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/fcntl.c>
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/fxstat.c b/ports/sysdeps/unix/sysv/linux/microblaze/fxstat.c
new file mode 100644
index 0000000..4f219f0
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/fxstat.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/fxstat.c>
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/fxstatat.c b/ports/sysdeps/unix/sysv/linux/microblaze/fxstatat.c
new file mode 100644
index 0000000..0f8b313
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/fxstatat.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/fxstatat.c>
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/getdents64.c b/ports/sysdeps/unix/sysv/linux/microblaze/getdents64.c
new file mode 100644
index 0000000..0c75fb5
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/getdents64.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/getdents64.c>
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/getegid.c b/ports/sysdeps/unix/sysv/linux/microblaze/getegid.c
new file mode 100644
index 0000000..37b4b4a
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/getegid.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/getegid.c>
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/geteuid.c b/ports/sysdeps/unix/sysv/linux/microblaze/geteuid.c
new file mode 100644
index 0000000..ebcb555
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/geteuid.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/geteuid.c>
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/getgid.c b/ports/sysdeps/unix/sysv/linux/microblaze/getgid.c
new file mode 100644
index 0000000..0a4d606
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/getgid.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/getgid.c>
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/getgroups.c b/ports/sysdeps/unix/sysv/linux/microblaze/getgroups.c
new file mode 100644
index 0000000..102ea24
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/getgroups.c
@@ -0,0 +1,2 @@
+/* We also have to rewrite the kernel gid_t to the user land type.  */
+#include <sysdeps/unix/sysv/linux/i386/getgroups.c>
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/getmsg.c b/ports/sysdeps/unix/sysv/linux/microblaze/getmsg.c
new file mode 100644
index 0000000..3a1fa08
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/getmsg.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/getmsg.c>
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/getresgid.c b/ports/sysdeps/unix/sysv/linux/microblaze/getresgid.c
new file mode 100644
index 0000000..b703a41
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/getresgid.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/getresgid.c>
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/getresuid.c b/ports/sysdeps/unix/sysv/linux/microblaze/getresuid.c
new file mode 100644
index 0000000..0b14cef
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/getresuid.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/getresuid.c>
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/getrlimit64.c b/ports/sysdeps/unix/sysv/linux/microblaze/getrlimit64.c
new file mode 100644
index 0000000..fef018f
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/getrlimit64.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/getrlimit64.c>
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/getsysstats.c b/ports/sysdeps/unix/sysv/linux/microblaze/getsysstats.c
new file mode 100644
index 0000000..4c8443e
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/getsysstats.c
@@ -0,0 +1,35 @@
+/* Copyright (C) 1997-2012 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 Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/* We need to define a special parser for /proc/cpuinfo.  */
+#define GET_NPROCS_PARSER(FD, BUFFER, CP, RE, BUFFER_END, RESULT)	  \
+  do									  \
+    {									  \
+      (RESULT) = 0;							  \
+      /* Read all lines and count the lines starting with the string	  \
+	 "CPU:".  We don't have to fear extremely long lines since	  \
+	 the kernel will not generate them.  8192 bytes are really	  \
+	 enough.  */							  \
+      char *l;								  \
+      while ((l = next_line (FD, BUFFER, &CP, &RE, BUFFER_END)) != NULL)  \
+	if (strncmp (l, "CPU:", 4) == 0)	      	     		  \
+	  ++(RESULT);							  \
+    }									  \
+  while (0)
+
+#include <sysdeps/unix/sysv/linux/getsysstats.c>
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/getuid.c b/ports/sysdeps/unix/sysv/linux/microblaze/getuid.c
new file mode 100644
index 0000000..d682c79
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/getuid.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/getuid.c>
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/glob64.c b/ports/sysdeps/unix/sysv/linux/microblaze/glob64.c
new file mode 100644
index 0000000..82a9a29
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/glob64.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/glob64.c>
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/kernel_stat.h b/ports/sysdeps/unix/sysv/linux/microblaze/kernel_stat.h
new file mode 100644
index 0000000..b855c1b
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/kernel_stat.h
@@ -0,0 +1,32 @@
+/* Definition of `struct stat' used in the kernel..  */
+
+struct kernel_stat
+{
+        unsigned long   st_dev;         /* Device.  */
+        unsigned long   st_ino;         /* File serial number.  */
+        unsigned int    st_mode;        /* File mode.  */
+        unsigned int    st_nlink;       /* Link count.  */
+        unsigned int    st_uid;         /* User ID of the file's owner.  */
+        unsigned int    st_gid;         /* Group ID of the file's group. */
+        unsigned long   st_rdev;        /* Device number, if device.  */
+        unsigned long   __pad2;
+#define _HAVE_STAT___PAD2
+#define _HAVE_STAT64___PAD2
+        long            st_size;        /* Size of file, in bytes.  */
+        int             st_blksize;     /* Optimal block size for I/O.  */
+        int             __pad3;
+#define _HAVE_STAT___PAD3
+#define _HAVE_STAT64___PAD3
+        long            st_blocks;      /* Number 512-byte blocks allocated. */
+        struct timespec st_atim;
+        struct timespec st_mtim;
+        struct timespec st_ctim;
+#define _HAVE_STAT_NSEC
+#define _HAVE_STAT64_NSEC
+        unsigned int    __unused4;
+#define _HAVE_STAT___UNUSED4
+#define _HAVE_STAT64___UNUSED4
+        unsigned int    __unused5;
+#define _HAVE_STAT___UNUSED5
+#define _HAVE_STAT64___UNUSED5
+};
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/lchown.c b/ports/sysdeps/unix/sysv/linux/microblaze/lchown.c
new file mode 100644
index 0000000..c89de99
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/lchown.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/lchown.c>
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/ldconfig.h b/ports/sysdeps/unix/sysv/linux/microblaze/ldconfig.h
new file mode 100644
index 0000000..31770f1
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/ldconfig.h
@@ -0,0 +1,19 @@
+/* Copyright (C) 2009-2012 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 Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <sysdeps/unix/sysv/linux/i386/ldconfig.h>
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/lockf64.c b/ports/sysdeps/unix/sysv/linux/microblaze/lockf64.c
new file mode 100644
index 0000000..a88f5a7
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/lockf64.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/lockf64.c>
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/lxstat.c b/ports/sysdeps/unix/sysv/linux/microblaze/lxstat.c
new file mode 100644
index 0000000..0efa0ae
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/lxstat.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/lxstat.c>
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/mmap.S b/ports/sysdeps/unix/sysv/linux/microblaze/mmap.S
new file mode 100644
index 0000000..ffcb303
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/mmap.S
@@ -0,0 +1,50 @@
+/* Copyright (C) 2009-2012 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 Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <sysdep.h>
+
+#define EINVAL 22
+	.text
+ENTRY (__mmap)
+	addik	r3,r0,-EINVAL
+	andi	r4,r10,0xfff
+	bnei	r4,L(skip)
+	addik	r12,r0,SYS_ify(mmap2)
+	sra	r10,r10
+	sra	r10,r10
+	sra	r10,r10
+	sra	r10,r10
+	sra	r10,r10
+	sra	r10,r10
+	sra	r10,r10
+	sra	r10,r10
+	sra	r10,r10
+	sra	r10,r10
+	sra	r10,r10
+	sra	r10,r10 ;	/* mmap2 takes the offset in pages. */
+	brki	r14,8
+	nop
+L(skip):
+	addik	r4,r0,-4095
+	cmpu	r4,r4,r3
+	bgei	r4,SYSCALL_ERROR_LABEL
+	rtsd	r15,8
+	nop
+PSEUDO_END (__mmap)
+
+weak_alias (__mmap, mmap)
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/msgctl.c b/ports/sysdeps/unix/sysv/linux/microblaze/msgctl.c
new file mode 100644
index 0000000..376ad0f
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/msgctl.c
@@ -0,0 +1,130 @@
+/* Copyright (C) 2009-2012 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 Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <errno.h>
+#include <sys/msg.h>
+#include <ipc_priv.h>
+
+#include <sysdep.h>
+#include <string.h>
+#include <sys/syscall.h>
+#include <shlib-compat.h>
+#include <bp-checks.h>
+
+#include "kernel-features.h"
+
+struct __old_msqid_ds
+{
+  struct __old_ipc_perm msg_perm;	/* structure describing operation permission */
+  struct msg *__unbounded __msg_first;	/* pointer to first message on queue */
+  struct msg *__unbounded __msg_last;	/* pointer to last message on queue */
+  __time_t msg_stime;			/* time of last msgsnd command */
+  __time_t msg_rtime;			/* time of last msgrcv command */
+  __time_t msg_ctime;			/* time of last change */
+  struct wait_queue *__unbounded __wwait; /* ??? */
+  struct wait_queue *__unbounded __rwait; /* ??? */
+  unsigned short int __msg_cbytes;	/* current number of bytes on queue */
+  unsigned short int msg_qnum;		/* number of messages currently on queue */
+  unsigned short int msg_qbytes;	/* max number of bytes allowed on queue */
+  __ipc_pid_t msg_lspid;		/* pid of last msgsnd() */
+  __ipc_pid_t msg_lrpid;		/* pid of last msgrcv() */
+};
+
+/* Allows to control internal state and destruction of message queue
+   objects.  */
+#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)
+int __old_msgctl (int, int, struct __old_msqid_ds *);
+#endif
+int __new_msgctl (int, int, struct msqid_ds *);
+
+#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)
+int
+attribute_compat_text_section
+__old_msgctl (int msqid, int cmd, struct __old_msqid_ds *buf)
+{
+  return INLINE_SYSCALL (msgctl, 3, msqid, cmd, CHECK_1 (buf));
+}
+compat_symbol (libc, __old_msgctl, msgctl, GLIBC_2_0);
+#endif
+
+int
+__new_msgctl (int msqid, int cmd, struct msqid_ds *buf)
+{
+
+#if __ASSUME_IPC64 > 0
+  return INLINE_SYSCALL (msgctl, 3, msqid, cmd | __IPC_64, CHECK_1 (buf));
+#else
+  switch (cmd) {
+    case MSG_STAT:
+    case IPC_STAT:
+    case IPC_SET:
+      break;
+    default:
+      return INLINE_SYSCALL (msgctl, 3, msqid, cmd, CHECK_1 (buf));
+  }
+
+  {
+    int result;
+    struct __old_msqid_ds old;
+
+    /* Unfortunately there is no way how to find out for sure whether
+       we should use old or new msgctl.  */
+    result = INLINE_SYSCALL (msgctl, 3, msqid, cmd | __IPC_64, CHECK_1 (buf));
+    if (result != -1 || errno != EINVAL)
+      return result;
+
+    if (cmd == IPC_SET)
+      {
+	old.msg_perm.uid = buf->msg_perm.uid;
+	old.msg_perm.gid = buf->msg_perm.gid;
+	old.msg_perm.mode = buf->msg_perm.mode;
+	old.msg_qbytes = buf->msg_qbytes;
+	if (old.msg_perm.uid != buf->msg_perm.uid ||
+	    old.msg_perm.gid != buf->msg_perm.gid ||
+	    old.msg_qbytes != buf->msg_qbytes)
+	  {
+	    __set_errno (EINVAL);
+	    return -1;
+	  }
+      }
+    result = INLINE_SYSCALL (msgctl, 3, msqid, cmd, __ptrvalue (&old));
+    if (result != -1 && cmd != IPC_SET)
+      {
+	memset(buf, 0, sizeof(*buf));
+	buf->msg_perm.__key = old.msg_perm.__key;
+	buf->msg_perm.uid = old.msg_perm.uid;
+	buf->msg_perm.gid = old.msg_perm.gid;
+	buf->msg_perm.cuid = old.msg_perm.cuid;
+	buf->msg_perm.cgid = old.msg_perm.cgid;
+	buf->msg_perm.mode = old.msg_perm.mode;
+	buf->msg_perm.__seq = old.msg_perm.__seq;
+	buf->msg_stime = old.msg_stime;
+	buf->msg_rtime = old.msg_rtime;
+	buf->msg_ctime = old.msg_ctime;
+	buf->__msg_cbytes = old.__msg_cbytes;
+	buf->msg_qnum = old.msg_qnum;
+	buf->msg_qbytes = old.msg_qbytes;
+	buf->msg_lspid = old.msg_lspid;
+	buf->msg_lrpid = old.msg_lrpid;
+      }
+    return result;
+  }
+#endif
+}
+
+versioned_symbol (libc, __new_msgctl, msgctl, GLIBC_2_2);
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/nptl/bits/pthreadtypes.h b/ports/sysdeps/unix/sysv/linux/microblaze/nptl/bits/pthreadtypes.h
new file mode 100644
index 0000000..5a422b6
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/nptl/bits/pthreadtypes.h
@@ -0,0 +1,185 @@
+/* Copyright (C) 2002-2012 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 Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _BITS_PTHREADTYPES_H
+#define _BITS_PTHREADTYPES_H	1
+
+#include <endian.h>
+
+#define __SIZEOF_PTHREAD_ATTR_T 36
+#define __SIZEOF_PTHREAD_MUTEX_T 24
+#define __SIZEOF_PTHREAD_MUTEXATTR_T 4
+#define __SIZEOF_PTHREAD_COND_T 48
+#define __SIZEOF_PTHREAD_COND_COMPAT_T 12
+#define __SIZEOF_PTHREAD_CONDATTR_T 4
+#define __SIZEOF_PTHREAD_RWLOCK_T 32
+#define __SIZEOF_PTHREAD_RWLOCKATTR_T 8
+#define __SIZEOF_PTHREAD_BARRIER_T 20
+#define __SIZEOF_PTHREAD_BARRIERATTR_T 4
+
+
+/* Thread identifiers.  The structure of the attribute type is not
+   exposed on purpose.  */
+typedef unsigned long int pthread_t;
+
+
+union pthread_attr_t
+{
+  char __size[__SIZEOF_PTHREAD_ATTR_T];
+  long int __align;
+};
+#ifndef __have_pthread_attr_t
+typedef union pthread_attr_t pthread_attr_t;
+# define __have_pthread_attr_t	1
+#endif
+
+
+typedef struct __pthread_internal_slist
+{
+  struct __pthread_internal_slist *__next;
+} __pthread_slist_t;
+
+
+/* Data structures for mutex handling.  The structure of the attribute
+   type is not exposed on purpose.  */
+typedef union
+{
+  struct __pthread_mutex_s
+  {
+    int __lock;
+    unsigned int __count;
+    int __owner;
+    /* KIND must stay at this position in the structure to maintain
+       binary compatibility.  */
+    int __kind;
+    unsigned int __nusers;
+    __extension__ union
+    {
+      int __spins;
+      __pthread_slist_t __list;
+    };
+  } __data;
+  char __size[__SIZEOF_PTHREAD_MUTEX_T];
+  long int __align;
+} pthread_mutex_t;
+
+typedef union
+{
+  char __size[__SIZEOF_PTHREAD_MUTEXATTR_T];
+  int __align;
+} pthread_mutexattr_t;
+
+
+/* Data structure for conditional variable handling.  The structure of
+   the attribute type is not exposed on purpose.  */
+typedef union
+{
+  struct
+  {
+    int __lock;
+    unsigned int __futex;
+    __extension__ unsigned long long int __total_seq;
+    __extension__ unsigned long long int __wakeup_seq;
+    __extension__ unsigned long long int __woken_seq;
+    void *__mutex;
+    unsigned int __nwaiters;
+    unsigned int __broadcast_seq;
+  } __data;
+  char __size[__SIZEOF_PTHREAD_COND_T];
+  __extension__ long long int __align;
+} pthread_cond_t;
+
+typedef union
+{
+  char __size[__SIZEOF_PTHREAD_CONDATTR_T];
+  int __align;
+} pthread_condattr_t;
+
+
+/* Keys for thread-specific data */
+typedef unsigned int pthread_key_t;
+
+
+/* Once-only execution */
+typedef int pthread_once_t;
+
+
+#if defined __USE_UNIX98 || defined __USE_XOPEN2K
+/* Data structure for read-write lock variable handling.  The
+   structure of the attribute type is not exposed on purpose.  */
+typedef union
+{
+  struct
+  {
+    int __lock;
+    unsigned int __nr_readers;
+    unsigned int __readers_wakeup;
+    unsigned int __writer_wakeup;
+    unsigned int __nr_readers_queued;
+    unsigned int __nr_writers_queued;
+#if __BYTE_ORDER == __BIG_ENDIAN
+    unsigned char __pad1;
+    unsigned char __pad2;
+    unsigned char __shared;
+    /* FLAGS must stay at this position in the structure to maintain
+       binary compatibility.  */
+    unsigned char __flags;
+#else
+    /* FLAGS must stay at this position in the structure to maintain
+       binary compatibility.  */
+    unsigned char __flags;
+    unsigned char __shared;
+    unsigned char __pad1;
+    unsigned char __pad2;
+#endif
+    int __writer;
+  } __data;
+  char __size[__SIZEOF_PTHREAD_RWLOCK_T];
+  long int __align;
+} pthread_rwlock_t;
+
+typedef union
+{
+  char __size[__SIZEOF_PTHREAD_RWLOCKATTR_T];
+  long int __align;
+} pthread_rwlockattr_t;
+#endif
+
+
+#ifdef __USE_XOPEN2K
+/* POSIX spinlock data type.  */
+typedef volatile int pthread_spinlock_t;
+
+
+/* POSIX barriers data type.  The structure of the type is
+   deliberately not exposed.  */
+typedef union
+{
+  char __size[__SIZEOF_PTHREAD_BARRIER_T];
+  long int __align;
+} pthread_barrier_t;
+
+typedef union
+{
+  char __size[__SIZEOF_PTHREAD_BARRIERATTR_T];
+  int __align;
+} pthread_barrierattr_t;
+#endif
+
+
+#endif	/* bits/pthreadtypes.h */
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/nptl/bits/semaphore.h b/ports/sysdeps/unix/sysv/linux/microblaze/nptl/bits/semaphore.h
new file mode 100644
index 0000000..0ae59ec
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/nptl/bits/semaphore.h
@@ -0,0 +1,35 @@
+/* Copyright (C) 2002-2012 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 Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _SEMAPHORE_H
+# error "Never use <bits/semaphore.h> directly; include <semaphore.h> instead."
+#endif
+
+
+#define __SIZEOF_SEM_T	16
+
+
+/* Value returned if `sem_open' failed.  */
+#define SEM_FAILED      ((sem_t *) 0)
+
+
+typedef union
+{
+  char __size[__SIZEOF_SEM_T];
+  long int __align;
+} sem_t;
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/nptl/createthread.c b/ports/sysdeps/unix/sysv/linux/microblaze/nptl/createthread.c
new file mode 100644
index 0000000..19e4318
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/nptl/createthread.c
@@ -0,0 +1,23 @@
+/* Copyright (C) 2005-2012 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 Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/* Value passed to 'clone' for initialization of the thread register.  */
+#define TLS_VALUE (pd + 1)
+
+/* Get the real implementation.	 */
+#include <nptl/sysdeps/pthread/createthread.c>
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/nptl/fork.c b/ports/sysdeps/unix/sysv/linux/microblaze/nptl/fork.c
new file mode 100644
index 0000000..dcd4307
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/nptl/fork.c
@@ -0,0 +1,29 @@
+/* Copyright (C) 2005-2012 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 Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <sched.h>
+#include <signal.h>
+#include <sysdep.h>
+#include <tls.h>
+
+#define ARCH_FORK() \
+  INLINE_SYSCALL (clone, 5,                                                   \
+                  CLONE_CHILD_SETTID | CLONE_CHILD_CLEARTID | SIGCHLD, 0,     \
+                  NULL, NULL, &THREAD_SELF->tid)
+
+#include <nptl/sysdeps/unix/sysv/linux/fork.c>
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/nptl/ld.abilist b/ports/sysdeps/unix/sysv/linux/microblaze/nptl/ld.abilist
new file mode 100644
index 0000000..fc11e36
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/nptl/ld.abilist
@@ -0,0 +1,18 @@
+GLIBC_2.0
+ GLIBC_2.0 A
+ __libc_memalign F
+ _r_debug D 0x14
+ calloc F
+ free F
+ malloc F
+ realloc F
+GLIBC_2.1
+ GLIBC_2.1 A
+ __libc_stack_end D 0x4
+ _dl_mcount F
+GLIBC_2.3
+ GLIBC_2.3 A
+ __tls_get_addr F
+GLIBC_2.4
+ GLIBC_2.4 A
+ __stack_chk_guard D 0x4
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/nptl/libBrokenLocale.abilist b/ports/sysdeps/unix/sysv/linux/microblaze/nptl/libBrokenLocale.abilist
new file mode 100644
index 0000000..f4ca37f
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/nptl/libBrokenLocale.abilist
@@ -0,0 +1,3 @@
+GLIBC_2.0
+ GLIBC_2.0 A
+ __ctype_get_mb_cur_max F
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/nptl/libanl.abilist b/ports/sysdeps/unix/sysv/linux/microblaze/nptl/libanl.abilist
new file mode 100644
index 0000000..c9755d8
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/nptl/libanl.abilist
@@ -0,0 +1,6 @@
+GLIBC_2.2.3
+ GLIBC_2.2.3 A
+ gai_cancel F
+ gai_error F
+ gai_suspend F
+ getaddrinfo_a F
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/nptl/libc.abilist b/ports/sysdeps/unix/sysv/linux/microblaze/nptl/libc.abilist
new file mode 100644
index 0000000..c2f036d
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/nptl/libc.abilist
@@ -0,0 +1,2174 @@
+GCC_3.0
+ GCC_3.0 A
+ _Unwind_Find_FDE F
+ __deregister_frame_info_bases F
+ __register_frame_info_bases F
+ __register_frame_info_table_bases F
+GLIBC_2.0
+ GLIBC_2.0 A
+ _IO_adjust_column F
+ _IO_default_doallocate F
+ _IO_default_finish F
+ _IO_default_pbackfail F
+ _IO_default_uflow F
+ _IO_default_xsgetn F
+ _IO_default_xsputn F
+ _IO_do_write F
+ _IO_doallocbuf F
+ _IO_fclose F
+ _IO_fdopen F
+ _IO_feof F
+ _IO_ferror F
+ _IO_fflush F
+ _IO_fgetpos F
+ _IO_fgets F
+ _IO_file_attach F
+ _IO_file_close F
+ _IO_file_close_it F
+ _IO_file_doallocate F
+ _IO_file_fopen F
+ _IO_file_init F
+ _IO_file_jumps D 0x54
+ _IO_file_open F
+ _IO_file_overflow F
+ _IO_file_read F
+ _IO_file_seek F
+ _IO_file_seekoff F
+ _IO_file_setbuf F
+ _IO_file_stat F
+ _IO_file_sync F
+ _IO_file_underflow F
+ _IO_file_write F
+ _IO_file_xsputn F
+ _IO_flockfile F
+ _IO_flush_all F
+ _IO_flush_all_linebuffered F
+ _IO_fopen F
+ _IO_fprintf F
+ _IO_fputs F
+ _IO_fread F
+ _IO_free_backup_area F
+ _IO_fsetpos F
+ _IO_ftell F
+ _IO_ftrylockfile F
+ _IO_funlockfile F
+ _IO_fwrite F
+ _IO_getc F
+ _IO_getline F
+ _IO_gets F
+ _IO_init F
+ _IO_init_marker F
+ _IO_link_in F
+ _IO_list_all D 0x4
+ _IO_marker_delta F
+ _IO_marker_difference F
+ _IO_padn F
+ _IO_peekc_locked F
+ _IO_popen F
+ _IO_printf F
+ _IO_proc_close F
+ _IO_proc_open F
+ _IO_putc F
+ _IO_puts F
+ _IO_remove_marker F
+ _IO_seekmark F
+ _IO_seekoff F
+ _IO_seekpos F
+ _IO_setb F
+ _IO_setbuffer F
+ _IO_setvbuf F
+ _IO_sgetn F
+ _IO_sprintf F
+ _IO_sputbackc F
+ _IO_sscanf F
+ _IO_stderr_ D 0x50
+ _IO_stdin_ D 0x50
+ _IO_stdout_ D 0x50
+ _IO_str_init_readonly F
+ _IO_str_init_static F
+ _IO_str_overflow F
+ _IO_str_pbackfail F
+ _IO_str_seekoff F
+ _IO_str_underflow F
+ _IO_sungetc F
+ _IO_switch_to_get_mode F
+ _IO_un_link F
+ _IO_ungetc F
+ _IO_unsave_markers F
+ _IO_vfprintf F
+ _IO_vfscanf F
+ _IO_vsprintf F
+ ___brk_addr D 0x4
+ __after_morecore_hook D 0x4
+ __argz_count F
+ __argz_next F
+ __argz_stringify F
+ __assert_fail F
+ __assert_perror_fail F
+ __bsd_getpgrp F
+ __bzero F
+ __check_rhosts_file D 0x4
+ __cmsg_nxthdr F
+ __ctype32_b D 0x4
+ __ctype_b D 0x4
+ __ctype_get_mb_cur_max F
+ __ctype_tolower D 0x4
+ __ctype_toupper D 0x4
+ __curbrk D 0x4
+ __daylight D 0x4
+ __dcgettext F
+ __default_morecore F
+ __deregister_frame F
+ __deregister_frame_info F
+ __dgettext F
+ __dup2 F
+ __divdi3 F
+ __environ D 0x4
+ __errno_location F
+ __fcntl F
+ __ffs F
+ __finite F
+ __finitef F
+ __finitel F
+ __fork F
+ __fpu_control D 0x4
+ __frame_state_for F
+ __free_hook D 0x4
+ __fxstat F
+ __getdelim F
+ __getpagesize F
+ __getpgid F
+ __getpid F
+ __gettimeofday F
+ __gmtime_r F
+ __h_errno_location F
+ __isinf F
+ __isinff F
+ __isinfl F
+ __isnan F
+ __isnanf F
+ __isnanl F
+ __iswctype F
+ __ivaliduser F
+ __libc_calloc F
+ __libc_free F
+ __libc_init_first F
+ __libc_mallinfo F
+ __libc_malloc F
+ __libc_mallopt F
+ __libc_memalign F
+ __libc_pvalloc F
+ __libc_realloc F
+ __libc_start_main F
+ __libc_valloc F
+ __lxstat F
+ __malloc_hook D 0x4
+ __malloc_initialize_hook D 0x4
+ __mbrlen F
+ __mbrtowc F
+ __memalign_hook D 0x4
+ __mempcpy F
+ __moddi3 F
+ __monstartup F
+ __morecore D 0x4
+ __nss_configure_lookup F
+ __nss_database_lookup F
+ __nss_group_lookup F
+ __nss_hosts_lookup F
+ __nss_next F
+ __nss_passwd_lookup F
+ __overflow F
+ __pipe F
+ __printf_fp F
+ __profile_frequency F
+ __progname D 0x4
+ __progname_full D 0x4
+ __rcmd_errstr D 0x4
+ __realloc_hook D 0x4
+ __register_frame F
+ __register_frame_info F
+ __register_frame_info_table F
+ __register_frame_table F
+ __res_randomid F
+ __sbrk F
+ __secure_getenv F
+ __select F
+ __setpgid F
+ __sigaction F
+ __sigaddset F
+ __sigdelset F
+ __sigismember F
+ __sigpause F
+ __statfs F
+ __stpcpy F
+ __stpncpy F
+ __strcasecmp F
+ __strdup F
+ __strerror_r F
+ __strtod_internal F
+ __strtof_internal F
+ __strtok_r F
+ __strtol_internal F
+ __strtold_internal F
+ __strtoll_internal F
+ __strtoq_internal F
+ __strtoul_internal F
+ __strtoull_internal F
+ __strtouq_internal F
+ __sysv_signal F
+ __timezone D 0x4
+ __tzname D 0x8
+ __udivdi3 F
+ __uflow F
+ __umoddi3 F
+ __underflow F
+ __vfscanf F
+ __vsnprintf F
+ __vsscanf F
+ __wait F
+ __waitpid F
+ __wcstod_internal F
+ __wcstof_internal F
+ __wcstol_internal F
+ __wcstold_internal F
+ __wcstoll_internal F
+ __wcstoul_internal F
+ __wcstoull_internal F
+ __xmknod F
+ __xpg_basename F
+ __xstat F
+ _environ D 0x4
+ _exit F
+ _libc_intl_domainname D 0x5
+ _longjmp F
+ _mcleanup F
+ _mcount F
+ _nl_default_dirname D 0x12
+ _nl_domain_bindings D 0x4
+ _nl_msg_cat_cntr D 0x4
+ _null_auth D 0xc
+ _obstack D 0x4
+ _obstack_allocated_p F
+ _obstack_begin F
+ _obstack_begin_1 F
+ _obstack_free F
+ _obstack_memory_used F
+ _obstack_newchunk F
+ _res D 0x200
+ _rpc_dtablesize F
+ _seterr_reply F
+ _setjmp F
+ _sys_errlist D 0x1ec
+ _sys_nerr D 0x4
+ _sys_siglist D 0x80
+ _tolower F
+ _toupper F
+ a64l F
+ abort F
+ abs F
+ accept F
+ addmntent F
+ adjtime F
+ advance F
+ alphasort F
+ argz_add F
+ argz_add_sep F
+ argz_append F
+ argz_count F
+ argz_create F
+ argz_create_sep F
+ argz_delete F
+ argz_extract F
+ argz_insert F
+ argz_next F
+ argz_replace F
+ argz_stringify F
+ asctime F
+ asctime_r F
+ asprintf F
+ atexit F
+ atof F
+ atoi F
+ atol F
+ atoll F
+ authnone_create F
+ authunix_create F
+ authunix_create_default F
+ basename F
+ bcmp F
+ bcopy F
+ bind F
+ bindresvport F
+ bindtextdomain F
+ brk F
+ bsd_signal F
+ bsearch F
+ btowc F
+ bzero F
+ cacheflush F
+ calloc F
+ callrpc F
+ canonicalize_file_name F
+ catclose F
+ catgets F
+ catopen F
+ cfgetispeed F
+ cfgetospeed F
+ cfmakeraw F
+ cfree F
+ cfsetispeed F
+ cfsetospeed F
+ cfsetspeed F
+ chdir F
+ chflags F
+ chmod F
+ chown F
+ chroot F
+ clearenv F
+ clearerr F
+ clearerr_unlocked F
+ clnt_broadcast F
+ clnt_create F
+ clnt_pcreateerror F
+ clnt_perrno F
+ clnt_perror F
+ clnt_spcreateerror F
+ clnt_sperrno F
+ clnt_sperror F
+ clntraw_create F
+ clnttcp_create F
+ clntudp_bufcreate F
+ clntudp_create F
+ clock F
+ clone F
+ close F
+ closedir F
+ closelog F
+ confstr F
+ connect F
+ copysign F
+ copysignf F
+ copysignl F
+ ctermid F
+ ctime F
+ ctime_r F
+ cuserid F
+ daemon F
+ daylight D 0x4
+ dcgettext F
+ dgettext F
+ difftime F
+ dirfd F
+ dirname F
+ div F
+ dprintf F
+ drand48 F
+ drand48_r F
+ dysize F
+ ecvt F
+ ecvt_r F
+ endaliasent F
+ endfsent F
+ endgrent F
+ endhostent F
+ endmntent F
+ endnetent F
+ endnetgrent F
+ endprotoent F
+ endpwent F
+ endrpcent F
+ endservent F
+ endspent F
+ endttyent F
+ endusershell F
+ endutent F
+ environ D 0x4
+ envz_add F
+ envz_entry F
+ envz_get F
+ envz_merge F
+ envz_remove F
+ envz_strip F
+ erand48 F
+ erand48_r F
+ err F
+ error F
+ error_at_line F
+ error_message_count D 0x4
+ error_one_per_line D 0x4
+ error_print_progname D 0x4
+ errx F
+ ether_aton F
+ ether_aton_r F
+ ether_hostton F
+ ether_line F
+ ether_ntoa F
+ ether_ntoa_r F
+ ether_ntohost F
+ euidaccess F
+ execl F
+ execle F
+ execlp F
+ execv F
+ execve F
+ execvp F
+ exit F
+ fchflags F
+ fchown F
+ fclose F
+ fcloseall F
+ fcntl F
+ fcvt F
+ fcvt_r F
+ fdopen F
+ feof F
+ feof_unlocked F
+ ferror F
+ ferror_unlocked F
+ fexecve F
+ fflush F
+ fflush_unlocked F
+ ffs F
+ fgetc F
+ fgetgrent F
+ fgetgrent_r F
+ fgetpos F
+ fgetpwent F
+ fgetpwent_r F
+ fgets F
+ fgetspent F
+ fgetspent_r F
+ fileno F
+ fileno_unlocked F
+ finite F
+ finitef F
+ finitel F
+ flockfile F
+ fnmatch F
+ fopen F
+ fopencookie F
+ fork F
+ fpathconf F
+ fprintf F
+ fputc F
+ fputc_unlocked F
+ fputs F
+ fread F
+ free F
+ freeaddrinfo F
+ freopen F
+ frexp F
+ frexpf F
+ frexpl F
+ fscanf F
+ fseek F
+ fsetpos F
+ ftell F
+ ftime F
+ ftok F
+ ftrylockfile F
+ fts_children F
+ fts_close F
+ fts_open F
+ fts_read F
+ fts_set F
+ ftw F
+ funlockfile F
+ fwrite F
+ gcvt F
+ get_avphys_pages F
+ get_current_dir_name F
+ get_myaddress F
+ get_nprocs F
+ get_nprocs_conf F
+ get_phys_pages F
+ getaddrinfo F
+ getaliasbyname F
+ getaliasbyname_r F
+ getaliasent F
+ getaliasent_r F
+ getc F
+ getc_unlocked F
+ getchar F
+ getchar_unlocked F
+ getcwd F
+ getdelim F
+ getdirentries F
+ getdomainname F
+ getdtablesize F
+ getegid F
+ getenv F
+ geteuid F
+ getfsent F
+ getfsfile F
+ getfsspec F
+ getgid F
+ getgrent F
+ getgrent_r F
+ getgrgid F
+ getgrgid_r F
+ getgrnam F
+ getgrnam_r F
+ getgroups F
+ gethostbyaddr F
+ gethostbyaddr_r F
+ gethostbyname F
+ gethostbyname2 F
+ gethostbyname2_r F
+ gethostbyname_r F
+ gethostent F
+ gethostent_r F
+ gethostid F
+ gethostname F
+ getline F
+ getlogin F
+ getlogin_r F
+ getmntent F
+ getmntent_r F
+ getnetbyaddr F
+ getnetbyaddr_r F
+ getnetbyname F
+ getnetbyname_r F
+ getnetent F
+ getnetent_r F
+ getnetgrent F
+ getnetgrent_r F
+ getopt F
+ getopt_long F
+ getopt_long_only F
+ getpagesize F
+ getpass F
+ getpid F
+ getpriority F
+ getprotobyname F
+ getprotobyname_r F
+ getprotobynumber F
+ getprotobynumber_r F
+ getprotoent F
+ getprotoent_r F
+ getpublickey F
+ getpw F
+ getpwent F
+ getpwent_r F
+ getpwnam F
+ getpwnam_r F
+ getpwuid F
+ getpwuid_r F
+ getresgid F
+ getresuid F
+ getrpcbyname F
+ getrpcbyname_r F
+ getrpcbynumber F
+ getrpcbynumber_r F
+ getrpcent F
+ getrpcent_r F
+ getrpcport F
+ gets F
+ getsecretkey F
+ getservbyname F
+ getservbyname_r F
+ getservbyport F
+ getservbyport_r F
+ getservent F
+ getservent_r F
+ getsockname F
+ getspent F
+ getspent_r F
+ getspnam F
+ getspnam_r F
+ getsubopt F
+ gettext F
+ getttyent F
+ getttynam F
+ getuid F
+ getusershell F
+ getutent F
+ getutent_r F
+ getutid F
+ getutid_r F
+ getutline F
+ getutline_r F
+ getw F
+ getwd F
+ glob F
+ glob_pattern_p F
+ globfree F
+ gmtime F
+ gmtime_r F
+ group_member F
+ gsignal F
+ gtty F
+ h_errlist D 0x14
+ h_nerr D 0x4
+ hasmntopt F
+ hcreate F
+ hcreate_r F
+ hdestroy F
+ hdestroy_r F
+ herror F
+ hsearch F
+ hsearch_r F
+ hstrerror F
+ htonl F
+ htons F
+ index F
+ inet_addr F
+ inet_aton F
+ inet_lnaof F
+ inet_makeaddr F
+ inet_netof F
+ inet_network F
+ inet_nsap_addr F
+ inet_nsap_ntoa F
+ inet_ntoa F
+ inet_ntop F
+ inet_pton F
+ initgroups F
+ initstate F
+ initstate_r F
+ innetgr F
+ insque F
+ iruserok F
+ isalnum F
+ isalpha F
+ isascii F
+ isatty F
+ isblank F
+ iscntrl F
+ isdigit F
+ isfdtype F
+ isgraph F
+ isinf F
+ isinff F
+ isinfl F
+ islower F
+ isnan F
+ isnanf F
+ isnanl F
+ isprint F
+ ispunct F
+ isspace F
+ isupper F
+ iswalnum F
+ iswalpha F
+ iswcntrl F
+ iswctype F
+ iswdigit F
+ iswgraph F
+ iswlower F
+ iswprint F
+ iswpunct F
+ iswspace F
+ iswupper F
+ iswxdigit F
+ isxdigit F
+ jrand48 F
+ jrand48_r F
+ kill F
+ killpg F
+ l64a F
+ labs F
+ lchown F
+ lckpwdf F
+ lcong48 F
+ lcong48_r F
+ ldexp F
+ ldexpf F
+ ldexpl F
+ ldiv F
+ lfind F
+ listen F
+ llabs F
+ lldiv F
+ llseek F
+ loc1 D 0x4
+ loc2 D 0x4
+ localeconv F
+ localtime F
+ localtime_r F
+ lockf F
+ locs D 0x4
+ longjmp F
+ lrand48 F
+ lrand48_r F
+ lsearch F
+ lseek F
+ mallinfo F
+ malloc F
+ malloc_get_state F
+ malloc_set_state F
+ malloc_stats F
+ malloc_trim F
+ malloc_usable_size F
+ mallopt F
+ mallwatch D 0x4
+ mblen F
+ mbrlen F
+ mbrtowc F
+ mbsinit F
+ mbsnrtowcs F
+ mbsrtowcs F
+ mbstowcs F
+ mbtowc F
+ mcheck F
+ memalign F
+ memccpy F
+ memchr F
+ memcmp F
+ memcpy F
+ memfrob F
+ memmem F
+ memmove F
+ memset F
+ mkfifo F
+ mkstemp F
+ mktemp F
+ mktime F
+ modf F
+ modff F
+ modfl F
+ monstartup F
+ mprobe F
+ mrand48 F
+ mrand48_r F
+ msgctl F
+ msgget F
+ msgrcv F
+ msgsnd F
+ mtrace F
+ muntrace F
+ nice F
+ nl_langinfo F
+ nrand48 F
+ nrand48_r F
+ ntohl F
+ ntohs F
+ obstack_alloc_failed_handler D 0x4
+ obstack_exit_failure D 0x4
+ obstack_free F
+ obstack_printf F
+ obstack_vprintf F
+ on_exit F
+ open F
+ open_memstream F
+ opendir F
+ openlog F
+ optarg D 0x4
+ opterr D 0x4
+ optind D 0x4
+ optopt D 0x4
+ parse_printf_format F
+ pathconf F
+ pclose F
+ perror F
+ personality F
+ pmap_getmaps F
+ pmap_getport F
+ pmap_rmtcall F
+ pmap_set F
+ pmap_unset F
+ popen F
+ printf F
+ profil F
+ program_invocation_name D 0x4
+ program_invocation_short_name D 0x4
+ pselect F
+ psignal F
+ pthread_attr_destroy F
+ pthread_attr_getdetachstate F
+ pthread_attr_getinheritsched F
+ pthread_attr_getschedparam F
+ pthread_attr_getschedpolicy F
+ pthread_attr_getscope F
+ pthread_attr_init F
+ pthread_attr_setdetachstate F
+ pthread_attr_setinheritsched F
+ pthread_attr_setschedparam F
+ pthread_attr_setschedpolicy F
+ pthread_attr_setscope F
+ pthread_cond_broadcast F
+ pthread_cond_destroy F
+ pthread_cond_init F
+ pthread_cond_signal F
+ pthread_cond_timedwait F
+ pthread_cond_wait F
+ pthread_condattr_destroy F
+ pthread_condattr_init F
+ pthread_equal F
+ pthread_exit F
+ pthread_getschedparam F
+ pthread_mutex_destroy F
+ pthread_mutex_init F
+ pthread_mutex_lock F
+ pthread_mutex_unlock F
+ pthread_self F
+ pthread_setcancelstate F
+ pthread_setcanceltype F
+ pthread_setschedparam F
+ ptrace F
+ putc F
+ putc_unlocked F
+ putchar F
+ putchar_unlocked F
+ putenv F
+ putpwent F
+ puts F
+ putspent F
+ pututline F
+ putw F
+ pvalloc F
+ qecvt F
+ qecvt_r F
+ qfcvt F
+ qfcvt_r F
+ qgcvt F
+ qsort F
+ raise F
+ rand F
+ rand_r F
+ random F
+ random_r F
+ rcmd F
+ re_comp F
+ re_compile_fastmap F
+ re_compile_pattern F
+ re_exec F
+ re_match F
+ re_match_2 F
+ re_max_failures D 0x4
+ re_search F
+ re_search_2 F
+ re_set_registers F
+ re_set_syntax F
+ re_syntax_options D 0x4
+ read F
+ readdir F
+ readdir_r F
+ readlink F
+ readv F
+ realloc F
+ realpath F
+ reboot F
+ regcomp F
+ regerror F
+ regexec F
+ regfree F
+ register_printf_function F
+ registerrpc F
+ remove F
+ remque F
+ res_init F
+ revoke F
+ rewind F
+ rewinddir F
+ rexec F
+ rexecoptions D 0x4
+ rindex F
+ rpc_createerr D 0x10
+ rpmatch F
+ rresvport F
+ ruserok F
+ ruserpass F
+ sbrk F
+ scalbn F
+ scalbnf F
+ scalbnl F
+ scandir F
+ scanf F
+ seed48 F
+ seed48_r F
+ seekdir F
+ semctl F
+ semget F
+ semop F
+ setaliasent F
+ setbuf F
+ setbuffer F
+ setcontext F
+ setegid F
+ setenv F
+ seteuid F
+ setfsent F
+ setfsgid F
+ setfsuid F
+ setgid F
+ setgrent F
+ setgroups F
+ sethostent F
+ sethostid F
+ setlinebuf F
+ setlocale F
+ setlogin F
+ setlogmask F
+ setmntent F
+ setnetent F
+ setnetgrent F
+ setpgrp F
+ setprotoent F
+ setpwent F
+ setregid F
+ setresgid F
+ setresuid F
+ setreuid F
+ setrpcent F
+ setservent F
+ setsockopt F
+ setspent F
+ setstate F
+ setstate_r F
+ setttyent F
+ setuid F
+ setusershell F
+ setutent F
+ setvbuf F
+ sgetspent F
+ sgetspent_r F
+ shmat F
+ shmctl F
+ shmdt F
+ shmget F
+ sigaction F
+ sigaddset F
+ sigandset F
+ sigblock F
+ sigdelset F
+ sigemptyset F
+ sigfillset F
+ siggetmask F
+ siginterrupt F
+ sigisemptyset F
+ sigismember F
+ siglongjmp F
+ signal F
+ sigorset F
+ sigpause F
+ sigpending F
+ sigprocmask F
+ sigreturn F
+ sigsetmask F
+ sigstack F
+ sigsuspend F
+ sigvec F
+ sigwait F
+ sleep F
+ snprintf F
+ socket F
+ sprintf F
+ srand F
+ srand48 F
+ srand48_r F
+ srandom F
+ srandom_r F
+ sscanf F
+ ssignal F
+ sstk F
+ stderr D 0x4
+ stdin D 0x4
+ stdout D 0x4
+ step F
+ stpcpy F
+ stpncpy F
+ strcasecmp F
+ strcat F
+ strchr F
+ strcmp F
+ strcoll F
+ strcpy F
+ strcspn F
+ strdup F
+ strerror F
+ strerror_r F
+ strfmon F
+ strfry F
+ strftime F
+ strlen F
+ strncasecmp F
+ strncat F
+ strncmp F
+ strncpy F
+ strndup F
+ strnlen F
+ strpbrk F
+ strptime F
+ strrchr F
+ strsep F
+ strsignal F
+ strspn F
+ strstr F
+ strtod F
+ strtof F
+ strtok F
+ strtok_r F
+ strtol F
+ strtold F
+ strtoll F
+ strtoq F
+ strtoul F
+ strtoull F
+ strtouq F
+ strxfrm F
+ stty F
+ svc_exit F
+ svc_fdset D 0x80
+ svc_getreq F
+ svc_getreqset F
+ svc_register F
+ svc_run F
+ svc_sendreply F
+ svc_unregister F
+ svcauthdes_stats D 0xc
+ svcerr_auth F
+ svcerr_decode F
+ svcerr_noproc F
+ svcerr_noprog F
+ svcerr_progvers F
+ svcerr_systemerr F
+ svcerr_weakauth F
+ svcfd_create F
+ svcraw_create F
+ svctcp_create F
+ svcudp_bufcreate F
+ svcudp_create F
+ svcudp_enablecache F
+ swab F
+ sys_errlist D 0x1ec
+ sys_nerr D 0x4
+ sys_sigabbrev D 0x80
+ sys_siglist D 0x80
+ syscall F
+ sysconf F
+ sysctl F
+ syslog F
+ system F
+ tcdrain F
+ tcflow F
+ tcflush F
+ tcgetattr F
+ tcgetpgrp F
+ tcsendbreak F
+ tcsetattr F
+ tcsetpgrp F
+ tdelete F
+ telldir F
+ tempnam F
+ textdomain F
+ tfind F
+ time F
+ timegm F
+ timelocal F
+ times F
+ timezone D 0x4
+ tmpfile F
+ tmpnam F
+ tmpnam_r F
+ toascii F
+ tolower F
+ toupper F
+ towctrans F
+ towlower F
+ towupper F
+ tr_break F
+ tsearch F
+ ttyname F
+ ttyname_r F
+ ttyslot F
+ twalk F
+ tzname D 0x8
+ tzset F
+ ualarm F
+ ulckpwdf F
+ ulimit F
+ ungetc F
+ unlink F
+ unsetenv F
+ updwtmp F
+ usleep F
+ ustat F
+ utimes F
+ utmpname F
+ valloc F
+ vasprintf F
+ vdprintf F
+ verr F
+ verrx F
+ vfprintf F
+ vfscanf F
+ vlimit F
+ vprintf F
+ vscanf F
+ vsnprintf F
+ vsprintf F
+ vsscanf F
+ vsyslog F
+ vtimes F
+ vwarn F
+ vwarnx F
+ wait F
+ wait3 F
+ waitpid F
+ warn F
+ warnx F
+ wcpcpy F
+ wcpncpy F
+ wcrtomb F
+ wcscat F
+ wcschr F
+ wcscmp F
+ wcscoll F
+ wcscpy F
+ wcscspn F
+ wcsdup F
+ wcslen F
+ wcsncat F
+ wcsncmp F
+ wcsncpy F
+ wcsnrtombs F
+ wcspbrk F
+ wcsrchr F
+ wcsrtombs F
+ wcsspn F
+ wcsstr F
+ wcstod F
+ wcstof F
+ wcstok F
+ wcstol F
+ wcstold F
+ wcstombs F
+ wcstoq F
+ wcstoul F
+ wcstouq F
+ wcswidth F
+ wcsxfrm F
+ wctob F
+ wctomb F
+ wctrans F
+ wctype F
+ wcwidth F
+ wmemchr F
+ wmemcmp F
+ wmemcpy F
+ wmemmove F
+ wmemset F
+ write F
+ writev F
+ xdr_accepted_reply F
+ xdr_array F
+ xdr_authunix_parms F
+ xdr_bool F
+ xdr_bytes F
+ xdr_callhdr F
+ xdr_callmsg F
+ xdr_char F
+ xdr_cryptkeyarg F
+ xdr_cryptkeyarg2 F
+ xdr_cryptkeyres F
+ xdr_des_block F
+ xdr_double F
+ xdr_enum F
+ xdr_float F
+ xdr_free F
+ xdr_int F
+ xdr_key_netstarg F
+ xdr_key_netstres F
+ xdr_keybuf F
+ xdr_keystatus F
+ xdr_long F
+ xdr_netobj F
+ xdr_opaque F
+ xdr_opaque_auth F
+ xdr_pmap F
+ xdr_pmaplist F
+ xdr_pointer F
+ xdr_reference F
+ xdr_rejected_reply F
+ xdr_replymsg F
+ xdr_rmtcall_args F
+ xdr_rmtcallres F
+ xdr_short F
+ xdr_string F
+ xdr_u_char F
+ xdr_u_int F
+ xdr_u_long F
+ xdr_u_short F
+ xdr_union F
+ xdr_vector F
+ xdr_void F
+ xdr_wrapstring F
+ xdrmem_create F
+ xdrrec_create F
+ xdrrec_endofrecord F
+ xdrrec_eof F
+ xdrrec_skiprecord F
+ xdrstdio_create F
+ xencrypt F
+ xprt_register F
+ xprt_unregister F
+GLIBC_2.1
+ GLIBC_2.1 A
+ _IO_2_1_stderr_ D 0x98
+ _IO_2_1_stdin_ D 0x98
+ _IO_2_1_stdout_ D 0x98
+ _IO_do_write F
+ _IO_fclose F
+ _IO_fdopen F
+ _IO_fgetpos64 F
+ _IO_file_attach F
+ _IO_file_close_it F
+ _IO_file_finish F
+ _IO_file_fopen F
+ _IO_file_init F
+ _IO_file_overflow F
+ _IO_file_seekoff F
+ _IO_file_setbuf F
+ _IO_file_sync F
+ _IO_file_underflow F
+ _IO_file_write F
+ _IO_file_xsputn F
+ _IO_fopen F
+ _IO_fsetpos64 F
+ _IO_getline_info F
+ _IO_popen F
+ _IO_proc_close F
+ _IO_proc_open F
+ __asprintf F
+ __backtrace F
+ __backtrace_symbols F
+ __backtrace_symbols_fd F
+ __duplocale F
+ __freelocale F
+ __fxstat64 F
+ __isalnum_l F
+ __isalpha_l F
+ __isascii_l F
+ __isblank_l F
+ __iscntrl_l F
+ __isdigit_l F
+ __isgraph_l F
+ __islower_l F
+ __isprint_l F
+ __ispunct_l F
+ __isspace_l F
+ __isupper_l F
+ __iswalnum_l F
+ __iswalpha_l F
+ __iswblank_l F
+ __iswcntrl_l F
+ __iswctype_l F
+ __iswdigit_l F
+ __iswgraph_l F
+ __iswlower_l F
+ __iswprint_l F
+ __iswpunct_l F
+ __iswspace_l F
+ __iswupper_l F
+ __iswxdigit_l F
+ __isxdigit_l F
+ __key_decryptsession_pk_LOCAL D 0x4
+ __key_encryptsession_pk_LOCAL D 0x4
+ __key_gendes_LOCAL D 0x4
+ __libc_allocate_rtsig F
+ __libc_current_sigrtmax F
+ __libc_current_sigrtmin F
+ __libc_freeres F
+ __libc_sa_len F
+ __lxstat64 F
+ __newlocale F
+ __pread64 F
+ __pwrite64 F
+ __rawmemchr F
+ __signbit F
+ __signbitf F
+ __strcasecmp_l F
+ __strcasestr F
+ __strcoll_l F
+ __strfmon_l F
+ __strncasecmp_l F
+ __strtod_l F
+ __strtof_l F
+ __strtol_l F
+ __strtold_l F
+ __strtoll_l F
+ __strtoul_l F
+ __strtoull_l F
+ __strxfrm_l F
+ __toascii_l F
+ __tolower_l F
+ __toupper_l F
+ __towctrans F
+ __towctrans_l F
+ __towlower_l F
+ __towupper_l F
+ __wcscasecmp_l F
+ __wcscoll_l F
+ __wcsncasecmp_l F
+ __wcstod_l F
+ __wcstof_l F
+ __wcstol_l F
+ __wcstold_l F
+ __wcstoll_l F
+ __wcstoul_l F
+ __wcstoull_l F
+ __wcsxfrm_l F
+ __wctype_l F
+ __xstat64 F
+ _authenticate F
+ _dl_mcount_wrapper F
+ _dl_mcount_wrapper_check F
+ _sys_errlist D 0x1f4
+ _sys_nerr D 0x4
+ _sys_siglist D 0x100
+ addseverity F
+ alphasort64 F
+ argp_err_exit_status D 0x4
+ argp_error F
+ argp_failure F
+ argp_help F
+ argp_parse F
+ argp_program_bug_address D 0x4
+ argp_program_version D 0x4
+ argp_program_version_hook D 0x4
+ argp_state_help F
+ argp_usage F
+ authdes_create F
+ authdes_getucred F
+ authdes_pk_create F
+ backtrace F
+ backtrace_symbols F
+ backtrace_symbols_fd F
+ cbc_crypt F
+ clntunix_create F
+ creat64 F
+ des_setparity F
+ ecb_crypt F
+ endutxent F
+ fattach F
+ fclose F
+ fdetach F
+ fdopen F
+ ffsl F
+ ffsll F
+ fgetc_unlocked F
+ fgetpos64 F
+ fgets_unlocked F
+ fmtmsg F
+ fopen F
+ fopen64 F
+ fputs_unlocked F
+ fread_unlocked F
+ freopen64 F
+ fseeko F
+ fseeko64 F
+ fsetpos64 F
+ fstatfs64 F
+ fstatvfs F
+ fstatvfs64 F
+ ftello F
+ ftello64 F
+ ftruncate64 F
+ ftw64 F
+ fwrite_unlocked F
+ gai_strerror F
+ getcontext F
+ getdate F
+ getdate_err D 0x4
+ getdate_r F
+ getmsg F
+ getnameinfo F
+ getnetname F
+ getpt F
+ getrlimit64 F
+ getutxent F
+ getutxid F
+ getutxline F
+ glob64 F
+ globfree64 F
+ gnu_get_libc_release F
+ gnu_get_libc_version F
+ grantpt F
+ host2netname F
+ iconv F
+ iconv_close F
+ iconv_open F
+ if_freenameindex F
+ if_indextoname F
+ if_nameindex F
+ if_nametoindex F
+ in6addr_any D 0x10
+ in6addr_loopback D 0x10
+ isastream F
+ iswblank F
+ key_decryptsession F
+ key_decryptsession_pk F
+ key_encryptsession F
+ key_encryptsession_pk F
+ key_gendes F
+ key_get_conv F
+ key_secretkey_is_set F
+ key_setnet F
+ key_setsecret F
+ lockf64 F
+ lseek64 F
+ makecontext F
+ mempcpy F
+ mmap64 F
+ netname2host F
+ netname2user F
+ nftw F
+ nftw64 F
+ ntp_gettime F
+ open64 F
+ passwd2des F
+ pclose F
+ popen F
+ pread F
+ pread64 F
+ printf_size F
+ printf_size_info F
+ pthread_attr_init F
+ ptsname F
+ ptsname_r F
+ putgrent F
+ putmsg F
+ pututxline F
+ pwrite F
+ pwrite64 F
+ rawmemchr F
+ readdir64 F
+ readdir64_r F
+ rtime F
+ scandir64 F
+ setrlimit64 F
+ setutxent F
+ sighold F
+ sigignore F
+ sigqueue F
+ sigrelse F
+ sigset F
+ sigtimedwait F
+ sigwaitinfo F
+ statfs64 F
+ statvfs F
+ statvfs64 F
+ strcasestr F
+ strtoimax F
+ strtoumax F
+ strverscmp F
+ svcunix_create F
+ svcunixfd_create F
+ swapcontext F
+ sys_errlist D 0x1f4
+ sys_nerr D 0x4
+ sys_sigabbrev D 0x100
+ sys_siglist D 0x100
+ sysv_signal F
+ tcgetsid F
+ tdestroy F
+ tmpfile F
+ tmpfile64 F
+ truncate64 F
+ unlockpt F
+ updwtmpx F
+ user2netname F
+ utmpxname F
+ versionsort F
+ versionsort64 F
+ waitid F
+ wcscasecmp F
+ wcsncasecmp F
+ wcsnlen F
+ wcstoimax F
+ wcstoll F
+ wcstoull F
+ wcstoumax F
+ wcswcs F
+ wordexp F
+ wordfree F
+ xdecrypt F
+ xdr_authdes_cred F
+ xdr_authdes_verf F
+ xdr_getcredres F
+ xdr_int16_t F
+ xdr_int32_t F
+ xdr_int8_t F
+ xdr_netnamestr F
+ xdr_sizeof F
+ xdr_uint16_t F
+ xdr_uint32_t F
+ xdr_uint8_t F
+ xdr_unixcred F
+__poll GLIBC_2.1 w ? D .text 00000000
+capget GLIBC_2.1 g ? D .text 00000000
+capset GLIBC_2.1 g ? D .text 00000000
+getpmsg GLIBC_2.1 g ? D .text 00000000
+ntp_adjtime GLIBC_2.1 w ? D .text 00000000
+putpmsg GLIBC_2.1 g ? D .text 00000000
+sendfile GLIBC_2.1 g ? D .text 00000000
+umount2 GLIBC_2.1 w ? D .text 00000000
+GLIBC_2.1.1
+ GLIBC_2.1.1 A
+ _Exit F
+ __mempcpy_small F
+ __stpcpy_small F
+ __strcpy_small F
+ __strcspn_c1 F
+ __strcspn_c2 F
+ __strcspn_c3 F
+ __strpbrk_c2 F
+ __strpbrk_c3 F
+ __strsep_1c F
+ __strsep_2c F
+ __strsep_3c F
+ __strsep_g F
+ __strspn_c1 F
+ __strspn_c2 F
+ __strspn_c3 F
+ __strtok_r_1c F
+ __strverscmp F
+ getutmp F
+ getutmpx F
+ imaxabs F
+ imaxdiv F
+ strchrnul F
+ xdr_hyper F
+ xdr_int64_t F
+ xdr_longlong_t F
+ xdr_u_hyper F
+ xdr_u_longlong_t F
+ xdr_uint64_t F
+GLIBC_2.1.2
+ GLIBC_2.1.2 A
+ getaliasbyname_r F
+ getaliasent_r F
+ getgrent_r F
+ getgrgid_r F
+ getgrnam_r F
+ gethostbyaddr_r F
+ gethostbyname2_r F
+ gethostbyname_r F
+ gethostent_r F
+ getnetbyaddr_r F
+ getnetbyname_r F
+ getnetent_r F
+ getprotobyname_r F
+ getprotobynumber_r F
+ getprotoent_r F
+ getpwent_r F
+ getpwnam_r F
+ getpwuid_r F
+ getrpcbyname_r F
+ getrpcbynumber_r F
+ getrpcent_r F
+ getservbyname_r F
+ getservbyport_r F
+ getservent_r F
+ getspent_r F
+ getspnam_r F
+__vfork GLIBC_2.1.2 g ? D .text 00000000
+GLIBC_2.1.3
+ GLIBC_2.1.3 A
+ __cxa_atexit F
+ __cxa_finalize F
+ __sigsuspend F
+GLIBC_2.10
+ GLIBC_2.10 A
+ __cxa_at_quick_exit F
+ __posix_getopt F
+ accept4 F
+ endsgent F
+ fallocate F
+ fgetsgent F
+ fgetsgent_r F
+ getsgent F
+ getsgent_r F
+ getsgnam F
+ getsgnam_r F
+ malloc_info F
+ preadv F
+ preadv64 F
+ psiginfo F
+ putsgent F
+ pwritev F
+ pwritev64 F
+ quick_exit F
+ register_printf_modifier F
+ register_printf_specifier F
+ register_printf_type F
+ setsgent F
+ sgetsgent F
+ sgetsgent_r F
+GLIBC_2.11
+ GLIBC_2.11 A
+ __longjmp_chk F
+ execvpe F
+ fallocate64 F
+ mkostemps F
+ mkostemps64 F
+ mkstemps F
+ mkstemps64 F
+GLIBC_2.12
+ GLIBC_2.12 A
+ _sys_errlist D 0x21c
+ _sys_nerr D 0x4
+ ntp_gettimex F
+ recvmmsg F
+ sys_errlist D 0x21c
+ sys_nerr D 0x4
+GLIBC_2.13
+ GLIBC_2.13 A
+ prlimit F
+fanotify_init GLIBC_2.13 g ? D .text 00000000
+fanotify_mark GLIBC_2.13 g ? D .text 00000000
+prlimit64 GLIBC_2.13 g ? D .text 00000000
+GLIBC_2.14
+ GLIBC_2.14 A
+ sendmmsg F
+clock_adjtime GLIBC_2.14 g ? D .text 00000000
+name_to_handle_at GLIBC_2.14 g ? D .text 00000000
+open_by_handle_at GLIBC_2.14 g ? D .text 00000000
+setns GLIBC_2.14 g ? D .text 00000000
+syncfs GLIBC_2.14 g ? D .text 00000000
+GLIBC_2.15
+ GLIBC_2.15 A
+ __fdelt_chk F
+ __fdelt_warn F
+ posix_spawn F
+ posix_spawnp F
+ scandirat F
+ scandirat64 F
+process_vm_readv GLIBC_2.15 g ? D .text 00000000
+process_vm_writev GLIBC_2.15 g ? D .text 00000000
+GLIBC_2.16
+ GLIBC_2.16 A
+ __getauxval F
+ __poll_chk F
+ __ppoll_chk F
+ aligned_alloc F
+ c16rtomb F
+ c32rtomb F
+ getauxval F
+ mbrtoc16 F
+ mbrtoc32 F
+ timespec_get F
+GLIBC_2.17
+ GLIBC_2.17 A
+ clock_getcpuclockid F
+ clock_getres F
+ clock_gettime F
+ clock_nanosleep F
+ clock_settime F
+ secure_getenv F
+GLIBC_2.2
+ GLIBC_2.2 A
+ _IO_adjust_wcolumn F
+ _IO_fgetpos F
+ _IO_fgetpos64 F
+ _IO_free_wbackup_area F
+ _IO_fsetpos F
+ _IO_fsetpos64 F
+ _IO_init_wmarker F
+ _IO_iter_begin F
+ _IO_iter_end F
+ _IO_iter_file F
+ _IO_iter_next F
+ _IO_least_wmarker F
+ _IO_list_lock F
+ _IO_list_resetlock F
+ _IO_list_unlock F
+ _IO_seekwmark F
+ _IO_sputbackwc F
+ _IO_sungetwc F
+ _IO_switch_to_main_wget_area F
+ _IO_switch_to_wbackup_area F
+ _IO_switch_to_wget_mode F
+ _IO_unsave_wmarkers F
+ _IO_wdefault_doallocate F
+ _IO_wdefault_finish F
+ _IO_wdefault_pbackfail F
+ _IO_wdefault_uflow F
+ _IO_wdefault_xsgetn F
+ _IO_wdefault_xsputn F
+ _IO_wdo_write F
+ _IO_wdoallocbuf F
+ _IO_wfile_jumps D 0x54
+ _IO_wfile_overflow F
+ _IO_wfile_seekoff F
+ _IO_wfile_sync F
+ _IO_wfile_underflow F
+ _IO_wfile_xsputn F
+ _IO_wmarker_delta F
+ _IO_wsetb F
+ __assert F
+ __ctype32_tolower D 0x4
+ __ctype32_toupper D 0x4
+ __cyg_profile_func_enter F
+ __cyg_profile_func_exit F
+ __endmntent F
+ __fbufsize F
+ __flbf F
+ __fpending F
+ __fpurge F
+ __freadable F
+ __freading F
+ __fsetlocking F
+ __fwritable F
+ __fwriting F
+ __fxstat64 F
+ __getmntent_r F
+ __lxstat64 F
+ __nl_langinfo_l F
+ __open64 F
+ __res_init F
+ __res_nclose F
+ __res_ninit F
+ __res_state F
+ __setmntent F
+ __strndup F
+ __sysconf F
+ __sysctl F
+ __wctrans_l F
+ __woverflow F
+ __wuflow F
+ __wunderflow F
+ __xpg_sigpause F
+ __xstat64 F
+ _flushlbf F
+ _res_hconf D 0x30
+ alphasort64 F
+ bind_textdomain_codeset F
+ dcngettext F
+ dngettext F
+ fgetpos F
+ fgetpos64 F
+ fgetwc F
+ fgetwc_unlocked F
+ fgetws F
+ fgetws_unlocked F
+ fmemopen F
+ fopencookie F
+ fputwc F
+ fputwc_unlocked F
+ fputws F
+ fputws_unlocked F
+ fsetpos F
+ fsetpos64 F
+ fwide F
+ fwprintf F
+ fwscanf F
+ getdirentries64 F
+ getloadavg F
+ getrlimit64 F
+ getwc F
+ getwc_unlocked F
+ getwchar F
+ getwchar_unlocked F
+ glob64 F
+ iruserok_af F
+ localeconv F
+ mcheck_check_all F
+ mcheck_pedantic F
+ memrchr F
+ mkdtemp F
+ mkstemp64 F
+ moncontrol F
+ msgctl F
+ ngettext F
+ posix_fadvise F
+ posix_fadvise64 F
+ posix_fallocate F
+ posix_fallocate64 F
+ posix_madvise F
+ posix_memalign F
+ posix_spawn F
+ posix_spawn_file_actions_addclose F
+ posix_spawn_file_actions_adddup2 F
+ posix_spawn_file_actions_addopen F
+ posix_spawn_file_actions_destroy F
+ posix_spawn_file_actions_init F
+ posix_spawnattr_destroy F
+ posix_spawnattr_getflags F
+ posix_spawnattr_getpgroup F
+ posix_spawnattr_getschedparam F
+ posix_spawnattr_getschedpolicy F
+ posix_spawnattr_getsigdefault F
+ posix_spawnattr_getsigmask F
+ posix_spawnattr_init F
+ posix_spawnattr_setflags F
+ posix_spawnattr_setpgroup F
+ posix_spawnattr_setschedparam F
+ posix_spawnattr_setschedpolicy F
+ posix_spawnattr_setsigdefault F
+ posix_spawnattr_setsigmask F
+ posix_spawnp F
+ putwc F
+ putwc_unlocked F
+ putwchar F
+ putwchar_unlocked F
+ rcmd_af F
+ readdir64 F
+ readdir64_r F
+ rexec_af F
+ rresvport_af F
+ ruserok_af F
+ scandir64 F
+ semctl F
+ setrlimit F
+ shmctl F
+ svc_getreq_common F
+ svc_getreq_poll F
+ svc_max_pollfd D 0x4
+ svc_pollfd D 0x4
+ swprintf F
+ swscanf F
+ ungetwc F
+ versionsort64 F
+ vfwprintf F
+ vfwscanf F
+ vswprintf F
+ vswscanf F
+ vwprintf F
+ vwscanf F
+ wcschrnul F
+ wcsftime F
+ wmempcpy F
+ wprintf F
+ wscanf F
+__statfs GLIBC_2.2 g ? D .text 00000000
+getrlimit GLIBC_2.2 g ? D .text 00000000
+mincore GLIBC_2.2 g ? D .text 00000000
+GLIBC_2.2.1
+ GLIBC_2.2.1 A
+ posix_openpt F
+pivot_root GLIBC_2.2.1 g ? D .text 00000000
+GLIBC_2.2.2
+ GLIBC_2.2.2 A
+ __nss_hostname_digits_dots F
+GLIBC_2.2.3
+ GLIBC_2.2.3 A
+ __rpc_thread_createerr F
+ __rpc_thread_svc_fdset F
+ __rpc_thread_svc_max_pollfd F
+ __rpc_thread_svc_pollfd F
+ fnmatch F
+ sprofil F
+GLIBC_2.2.4
+ GLIBC_2.2.4 A
+ dl_iterate_phdr F
+ getgrouplist F
+ sockatmark F
+GLIBC_2.2.6
+ GLIBC_2.2.6 A
+__nanosleep GLIBC_2.2.6 w ? D .text 00000000
+GLIBC_2.3
+ GLIBC_2.3 A
+ __ctype_b_loc F
+ __ctype_tolower_loc F
+ __ctype_toupper_loc F
+ __isctype F
+ __strftime_l F
+ __uselocale F
+ __wcsftime_l F
+ _sys_errlist D 0x1f8
+ _sys_nerr D 0x4
+ duplocale F
+ freeifaddrs F
+ freelocale F
+ futimes F
+ getifaddrs F
+ isalnum_l F
+ isalpha_l F
+ isblank_l F
+ iscntrl_l F
+ isctype F
+ isdigit_l F
+ isgraph_l F
+ islower_l F
+ isprint_l F
+ ispunct_l F
+ isspace_l F
+ isupper_l F
+ iswalnum_l F
+ iswalpha_l F
+ iswblank_l F
+ iswcntrl_l F
+ iswctype_l F
+ iswdigit_l F
+ iswgraph_l F
+ iswlower_l F
+ iswprint_l F
+ iswpunct_l F
+ iswspace_l F
+ iswupper_l F
+ iswxdigit_l F
+ isxdigit_l F
+ lutimes F
+ newlocale F
+ nl_langinfo_l F
+ readahead F
+ realpath F
+ strcasecmp_l F
+ strcoll_l F
+ strfmon_l F
+ strftime_l F
+ strncasecmp_l F
+ strtod_l F
+ strtof_l F
+ strtol_l F
+ strtold_l F
+ strtoll_l F
+ strtoul_l F
+ strtoull_l F
+ strxfrm_l F
+ sys_errlist D 0x1f8
+ sys_nerr D 0x4
+ tolower_l F
+ toupper_l F
+ towctrans_l F
+ towlower_l F
+ towupper_l F
+ uselocale F
+ wcscasecmp_l F
+ wcscoll_l F
+ wcsftime_l F
+ wcsncasecmp_l F
+ wcstod_l F
+ wcstof_l F
+ wcstol_l F
+ wcstold_l F
+ wcstoll_l F
+ wcstoul_l F
+ wcstoull_l F
+ wcsxfrm_l F
+ wctrans_l F
+ wctype_l F
+fgetxattr GLIBC_2.3 g ? D .text 00000000
+flistxattr GLIBC_2.3 g ? D .text 00000000
+fremovexattr GLIBC_2.3 g ? D .text 00000000
+fsetxattr GLIBC_2.3 g ? D .text 00000000
+getxattr GLIBC_2.3 g ? D .text 00000000
+lgetxattr GLIBC_2.3 g ? D .text 00000000
+listxattr GLIBC_2.3 g ? D .text 00000000
+llistxattr GLIBC_2.3 g ? D .text 00000000
+lremovexattr GLIBC_2.3 g ? D .text 00000000
+lsetxattr GLIBC_2.3 g ? D .text 00000000
+removexattr GLIBC_2.3 g ? D .text 00000000
+sendfile64 GLIBC_2.3 g ? D .text 00000000
+setxattr GLIBC_2.3 g ? D .text 00000000
+GLIBC_2.3.2
+ GLIBC_2.3.2 A
+ __register_atfork F
+ lchmod F
+ pthread_cond_broadcast F
+ pthread_cond_destroy F
+ pthread_cond_init F
+ pthread_cond_signal F
+ pthread_cond_timedwait F
+ pthread_cond_wait F
+ strptime_l F
+epoll_create GLIBC_2.3.2 g ? D .text 00000000
+epoll_ctl GLIBC_2.3.2 g ? D .text 00000000
+epoll_wait GLIBC_2.3.2 g ? D .text 00000000
+GLIBC_2.3.3
+ GLIBC_2.3.3 A
+ _sys_siglist D 0x104
+ gnu_dev_major F
+ gnu_dev_makedev F
+ gnu_dev_minor F
+ inet6_option_alloc F
+ inet6_option_append F
+ inet6_option_find F
+ inet6_option_init F
+ inet6_option_next F
+ inet6_option_space F
+ nftw F
+ nftw64 F
+ posix_fadvise64 F
+ posix_fallocate64 F
+ sched_getaffinity F
+ sched_setaffinity F
+ semtimedop F
+ sys_sigabbrev D 0x104
+ sys_siglist D 0x104
+remap_file_pages GLIBC_2.3.3 w ? D .text 00000000
+GLIBC_2.3.4
+ GLIBC_2.3.4 A
+ __chk_fail F
+ __fprintf_chk F
+ __gets_chk F
+ __memcpy_chk F
+ __memmove_chk F
+ __mempcpy_chk F
+ __memset_chk F
+ __printf_chk F
+ __snprintf_chk F
+ __sprintf_chk F
+ __stpcpy_chk F
+ __strcat_chk F
+ __strcpy_chk F
+ __strncat_chk F
+ __strncpy_chk F
+ __vfprintf_chk F
+ __vprintf_chk F
+ __vsnprintf_chk F
+ __vsprintf_chk F
+ __xpg_strerror_r F
+ getipv4sourcefilter F
+ getsourcefilter F
+ regexec F
+ sched_getaffinity F
+ sched_setaffinity F
+ setipv4sourcefilter F
+ setsourcefilter F
+ xdr_quad_t F
+ xdr_u_quad_t F
+GLIBC_2.4
+ GLIBC_2.4 A
+ __confstr_chk F
+ __fgets_chk F
+ __fgets_unlocked_chk F
+ __fgetws_chk F
+ __fgetws_unlocked_chk F
+ __fwprintf_chk F
+ __fxstatat F
+ __fxstatat64 F
+ __getcwd_chk F
+ __getdomainname_chk F
+ __getgroups_chk F
+ __gethostname_chk F
+ __getlogin_r_chk F
+ __getwd_chk F
+ __mbsnrtowcs_chk F
+ __mbsrtowcs_chk F
+ __mbstowcs_chk F
+ __pread64_chk F
+ __pread_chk F
+ __ptsname_r_chk F
+ __read_chk F
+ __readlink_chk F
+ __realpath_chk F
+ __recv_chk F
+ __recvfrom_chk F
+ __stack_chk_fail F
+ __stpncpy_chk F
+ __swprintf_chk F
+ __syslog_chk F
+ __ttyname_r_chk F
+ __vfwprintf_chk F
+ __vswprintf_chk F
+ __vsyslog_chk F
+ __vwprintf_chk F
+ __wcpcpy_chk F
+ __wcpncpy_chk F
+ __wcrtomb_chk F
+ __wcscat_chk F
+ __wcscpy_chk F
+ __wcsncat_chk F
+ __wcsncpy_chk F
+ __wcsnrtombs_chk F
+ __wcsrtombs_chk F
+ __wcstombs_chk F
+ __wctomb_chk F
+ __wmemcpy_chk F
+ __wmemmove_chk F
+ __wmempcpy_chk F
+ __wmemset_chk F
+ __wprintf_chk F
+ __xmknodat F
+ _sys_errlist D 0x210
+ _sys_nerr D 0x4
+ eaccess F
+ faccessat F
+ fchmodat F
+ fchownat F
+ fdopendir F
+ futimesat F
+ linkat F
+ mkdirat F
+ mkfifoat F
+ open_wmemstream F
+ openat F
+ openat64 F
+ ppoll F
+ readlinkat F
+ renameat F
+ symlinkat F
+ sys_errlist D 0x210
+ sys_nerr D 0x4
+ unlinkat F
+inotify_add_watch GLIBC_2.4 g ? D .text 00000000
+inotify_init GLIBC_2.4 g ? D .text 00000000
+inotify_rm_watch GLIBC_2.4 g ? D .text 00000000
+unshare GLIBC_2.4 g ? D .text 00000000
+GLIBC_2.5
+ GLIBC_2.5 A
+ __readlinkat_chk F
+ inet6_opt_append F
+ inet6_opt_find F
+ inet6_opt_finish F
+ inet6_opt_get_val F
+ inet6_opt_init F
+ inet6_opt_next F
+ inet6_opt_set_val F
+ inet6_rth_add F
+ inet6_rth_getaddr F
+ inet6_rth_init F
+ inet6_rth_reverse F
+ inet6_rth_segments F
+ inet6_rth_space F
+splice GLIBC_2.5 g ? D .text 00000000
+tee GLIBC_2.5 g ? D .text 00000000
+vmsplice GLIBC_2.5 g ? D .text 00000000
+GLIBC_2.6
+ GLIBC_2.6 A
+ __sched_cpucount F
+ epoll_pwait F
+ futimens F
+ sched_getcpu F
+ strerror_l F
+ sync_file_range F
+ utimensat F
+GLIBC_2.7
+ GLIBC_2.7 A
+ __fread_chk F
+ __fread_unlocked_chk F
+ __isoc99_fscanf F
+ __isoc99_fwscanf F
+ __isoc99_scanf F
+ __isoc99_sscanf F
+ __isoc99_swscanf F
+ __isoc99_vfscanf F
+ __isoc99_vfwscanf F
+ __isoc99_vscanf F
+ __isoc99_vsscanf F
+ __isoc99_vswscanf F
+ __isoc99_vwscanf F
+ __isoc99_wscanf F
+ __open64_2 F
+ __open_2 F
+ __openat64_2 F
+ __openat_2 F
+ __sched_cpualloc F
+ __sched_cpufree F
+ eventfd F
+ eventfd_read F
+ eventfd_write F
+ mkostemp F
+ mkostemp64 F
+ signalfd F
+GLIBC_2.8
+ GLIBC_2.8 A
+ __asprintf_chk F
+ __dprintf_chk F
+ __obstack_printf_chk F
+ __obstack_vprintf_chk F
+ __vasprintf_chk F
+ __vdprintf_chk F
+ qsort_r F
+timerfd_create GLIBC_2.8 g ? D .text 00000000
+timerfd_gettime GLIBC_2.8 g ? D .text 00000000
+timerfd_settime GLIBC_2.8 g ? D .text 00000000
+GLIBC_2.9
+ GLIBC_2.9 A
+dup3 GLIBC_2.9 w ? D .text 00000000
+epoll_create1 GLIBC_2.9 g ? D .text 00000000
+inotify_init1 GLIBC_2.9 g ? D .text 00000000
+pipe2 GLIBC_2.9 w ? D .text 00000000
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/nptl/libcrypt.abilist b/ports/sysdeps/unix/sysv/linux/microblaze/nptl/libcrypt.abilist
new file mode 100644
index 0000000..1df145f
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/nptl/libcrypt.abilist
@@ -0,0 +1,9 @@
+GLIBC_2.0
+ GLIBC_2.0 A
+ crypt F
+ crypt_r F
+ encrypt F
+ encrypt_r F
+ fcrypt F
+ setkey F
+ setkey_r F
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/nptl/libdl.abilist b/ports/sysdeps/unix/sysv/linux/microblaze/nptl/libdl.abilist
new file mode 100644
index 0000000..62e6b41
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/nptl/libdl.abilist
@@ -0,0 +1,18 @@
+GLIBC_2.0
+ GLIBC_2.0 A
+ dladdr F
+ dlclose F
+ dlerror F
+ dlopen F
+ dlsym F
+GLIBC_2.1
+ GLIBC_2.1 A
+ dlopen F
+ dlvsym F
+GLIBC_2.3.3
+ GLIBC_2.3.3 A
+ dladdr1 F
+ dlinfo F
+GLIBC_2.3.4
+ GLIBC_2.3.4 A
+ dlmopen F
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/nptl/libm.abilist b/ports/sysdeps/unix/sysv/linux/microblaze/nptl/libm.abilist
new file mode 100644
index 0000000..7516c7c
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/nptl/libm.abilist
@@ -0,0 +1,383 @@
+GLIBC_2.0
+ GLIBC_2.0 A
+ _LIB_VERSION D 0x4
+ acos F
+ acosf F
+ acosh F
+ acoshf F
+ acoshl F
+ acosl F
+ asin F
+ asinf F
+ asinh F
+ asinhf F
+ asinhl F
+ asinl F
+ atan F
+ atan2 F
+ atan2f F
+ atan2l F
+ atanf F
+ atanh F
+ atanhf F
+ atanhl F
+ atanl F
+ cbrt F
+ cbrtf F
+ cbrtl F
+ ceil F
+ ceilf F
+ ceill F
+ copysign F
+ copysignf F
+ copysignl F
+ cos F
+ cosf F
+ cosh F
+ coshf F
+ coshl F
+ cosl F
+ drem F
+ dremf F
+ dreml F
+ erf F
+ erfc F
+ erfcf F
+ erfcl F
+ erff F
+ erfl F
+ exp F
+ expf F
+ expl F
+ expm1 F
+ expm1f F
+ expm1l F
+ fabs F
+ fabsf F
+ fabsl F
+ finite F
+ finitef F
+ finitel F
+ floor F
+ floorf F
+ floorl F
+ fmod F
+ fmodf F
+ fmodl F
+ frexp F
+ frexpf F
+ frexpl F
+ gamma F
+ gammaf F
+ gammal F
+ hypot F
+ hypotf F
+ hypotl F
+ ilogb F
+ ilogbf F
+ ilogbl F
+ j0 F
+ j0f F
+ j0l F
+ j1 F
+ j1f F
+ j1l F
+ jn F
+ jnf F
+ jnl F
+ ldexp F
+ ldexpf F
+ ldexpl F
+ lgamma F
+ lgamma_r F
+ lgammaf F
+ lgammaf_r F
+ lgammal F
+ lgammal_r F
+ log F
+ log10 F
+ log10f F
+ log10l F
+ log1p F
+ log1pf F
+ log1pl F
+ logb F
+ logbf F
+ logbl F
+ logf F
+ logl F
+ matherr F
+ modf F
+ modff F
+ modfl F
+ nextafter F
+ nextafterf F
+ nextafterl F
+ pow F
+ powf F
+ powl F
+ remainder F
+ remainderf F
+ remainderl F
+ rint F
+ rintf F
+ rintl F
+ scalb F
+ scalbf F
+ scalbl F
+ scalbn F
+ scalbnf F
+ scalbnl F
+ signgam D 0x4
+ significand F
+ significandf F
+ significandl F
+ sin F
+ sinf F
+ sinh F
+ sinhf F
+ sinhl F
+ sinl F
+ sqrt F
+ sqrtf F
+ sqrtl F
+ tan F
+ tanf F
+ tanh F
+ tanhf F
+ tanhl F
+ tanl F
+ y0 F
+ y0f F
+ y0l F
+ y1 F
+ y1f F
+ y1l F
+ yn F
+ ynf F
+ ynl F
+GLIBC_2.1
+ GLIBC_2.1 A
+ __clog10 F
+ __clog10f F
+ __clog10l F
+ __finite F
+ __finitef F
+ __finitel F
+ __fpclassify F
+ __fpclassifyf F
+ __signbit F
+ __signbitf F
+ cabs F
+ cabsf F
+ cabsl F
+ cacos F
+ cacosf F
+ cacosh F
+ cacoshf F
+ cacoshl F
+ cacosl F
+ carg F
+ cargf F
+ cargl F
+ casin F
+ casinf F
+ casinh F
+ casinhf F
+ casinhl F
+ casinl F
+ catan F
+ catanf F
+ catanh F
+ catanhf F
+ catanhl F
+ catanl F
+ ccos F
+ ccosf F
+ ccosh F
+ ccoshf F
+ ccoshl F
+ ccosl F
+ cexp F
+ cexpf F
+ cexpl F
+ cimag F
+ cimagf F
+ cimagl F
+ clog F
+ clog10 F
+ clog10f F
+ clog10l F
+ clogf F
+ clogl F
+ conj F
+ conjf F
+ conjl F
+ cpow F
+ cpowf F
+ cpowl F
+ cproj F
+ cprojf F
+ cprojl F
+ creal F
+ crealf F
+ creall F
+ csin F
+ csinf F
+ csinh F
+ csinhf F
+ csinhl F
+ csinl F
+ csqrt F
+ csqrtf F
+ csqrtl F
+ ctan F
+ ctanf F
+ ctanh F
+ ctanhf F
+ ctanhl F
+ ctanl F
+ exp10 F
+ exp10f F
+ exp10l F
+ exp2 F
+ exp2f F
+ fdim F
+ fdimf F
+ fdiml F
+ feclearexcept F
+ fegetenv F
+ fegetexceptflag F
+ fegetround F
+ feholdexcept F
+ feraiseexcept F
+ fesetenv F
+ fesetexceptflag F
+ fesetround F
+ fetestexcept F
+ feupdateenv F
+ fma F
+ fmaf F
+ fmal F
+ fmax F
+ fmaxf F
+ fmaxl F
+ fmin F
+ fminf F
+ fminl F
+ llrint F
+ llrintf F
+ llrintl F
+ llround F
+ llroundf F
+ llroundl F
+ log2 F
+ log2f F
+ log2l F
+ lrint F
+ lrintf F
+ lrintl F
+ lround F
+ lroundf F
+ lroundl F
+ nan F
+ nanf F
+ nanl F
+ nearbyint F
+ nearbyintf F
+ nearbyintl F
+ nexttoward F
+ nexttowardf F
+ nexttowardl F
+ pow10 F
+ pow10f F
+ pow10l F
+ remquo F
+ remquof F
+ remquol F
+ round F
+ roundf F
+ roundl F
+ scalbln F
+ scalblnf F
+ scalblnl F
+ sincos F
+ sincosf F
+ sincosl F
+ tgamma F
+ tgammaf F
+ tgammal F
+ trunc F
+ truncf F
+ truncl F
+GLIBC_2.15
+ GLIBC_2.15 A
+ __acos_finite F
+ __acosf_finite F
+ __acosh_finite F
+ __acoshf_finite F
+ __asin_finite F
+ __asinf_finite F
+ __atan2_finite F
+ __atan2f_finite F
+ __atanh_finite F
+ __atanhf_finite F
+ __cosh_finite F
+ __coshf_finite F
+ __exp10_finite F
+ __exp10f_finite F
+ __exp2_finite F
+ __exp2f_finite F
+ __exp_finite F
+ __expf_finite F
+ __fmod_finite F
+ __fmodf_finite F
+ __gamma_r_finite F
+ __gammaf_r_finite F
+ __hypot_finite F
+ __hypotf_finite F
+ __j0_finite F
+ __j0f_finite F
+ __j1_finite F
+ __j1f_finite F
+ __jn_finite F
+ __jnf_finite F
+ __lgamma_r_finite F
+ __lgammaf_r_finite F
+ __log10_finite F
+ __log10f_finite F
+ __log2_finite F
+ __log2f_finite F
+ __log_finite F
+ __logf_finite F
+ __pow_finite F
+ __powf_finite F
+ __remainder_finite F
+ __remainderf_finite F
+ __scalb_finite F
+ __scalbf_finite F
+ __sinh_finite F
+ __sinhf_finite F
+ __sqrt_finite F
+ __sqrtf_finite F
+ __y0_finite F
+ __y0f_finite F
+ __y1_finite F
+ __y1f_finite F
+ __yn_finite F
+ __ynf_finite F
+GLIBC_2.2
+ GLIBC_2.2 A
+ feclearexcept F
+ fedisableexcept F
+ feenableexcept F
+ fegetenv F
+ fegetexcept F
+ fegetexceptflag F
+ feraiseexcept F
+ fesetenv F
+ fesetexceptflag F
+ feupdateenv F
+GLIBC_2.4
+ GLIBC_2.4 A
+ exp2l F
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/nptl/libnsl.abilist b/ports/sysdeps/unix/sysv/linux/microblaze/nptl/libnsl.abilist
new file mode 100644
index 0000000..4241e2d
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/nptl/libnsl.abilist
@@ -0,0 +1,127 @@
+GLIBC_2.0
+ GLIBC_2.0 A
+ __yp_check F
+ xdr_domainname F
+ xdr_keydat F
+ xdr_mapname F
+ xdr_peername F
+ xdr_valdat F
+ xdr_yp_buf F
+ xdr_ypbind_binding F
+ xdr_ypbind_resp F
+ xdr_ypbind_resptype F
+ xdr_ypbind_setdom F
+ xdr_ypdelete_args F
+ xdr_ypmap_parms F
+ xdr_ypmaplist F
+ xdr_yppush_status F
+ xdr_yppushresp_xfr F
+ xdr_ypreq_key F
+ xdr_ypreq_nokey F
+ xdr_ypreq_xfr F
+ xdr_ypresp_all F
+ xdr_ypresp_key_val F
+ xdr_ypresp_maplist F
+ xdr_ypresp_master F
+ xdr_ypresp_order F
+ xdr_ypresp_val F
+ xdr_ypresp_xfr F
+ xdr_ypstat F
+ xdr_ypupdate_args F
+ xdr_ypxfrstat F
+ yp_all F
+ yp_bind F
+ yp_first F
+ yp_get_default_domain F
+ yp_maplist F
+ yp_master F
+ yp_match F
+ yp_next F
+ yp_order F
+ yp_unbind F
+ yp_update F
+ ypbinderr_string F
+ yperr_string F
+ ypprot_err F
+GLIBC_2.1
+ GLIBC_2.1 A
+ __free_fdresult F
+ __nis_default_access F
+ __nis_default_group F
+ __nis_default_owner F
+ __nis_default_ttl F
+ __nis_finddirectory F
+ __nis_hash F
+ __nisbind_connect F
+ __nisbind_create F
+ __nisbind_destroy F
+ __nisbind_next F
+ nis_add F
+ nis_add_entry F
+ nis_addmember F
+ nis_checkpoint F
+ nis_clone_directory F
+ nis_clone_object F
+ nis_clone_result F
+ nis_creategroup F
+ nis_destroy_object F
+ nis_destroygroup F
+ nis_dir_cmp F
+ nis_domain_of F
+ nis_domain_of_r F
+ nis_first_entry F
+ nis_free_directory F
+ nis_free_object F
+ nis_free_request F
+ nis_freenames F
+ nis_freeresult F
+ nis_freeservlist F
+ nis_freetags F
+ nis_getnames F
+ nis_getservlist F
+ nis_ismember F
+ nis_leaf_of F
+ nis_leaf_of_r F
+ nis_lerror F
+ nis_list F
+ nis_local_directory F
+ nis_local_group F
+ nis_local_host F
+ nis_local_principal F
+ nis_lookup F
+ nis_mkdir F
+ nis_modify F
+ nis_modify_entry F
+ nis_name_of F
+ nis_name_of_r F
+ nis_next_entry F
+ nis_perror F
+ nis_ping F
+ nis_print_directory F
+ nis_print_entry F
+ nis_print_group F
+ nis_print_group_entry F
+ nis_print_link F
+ nis_print_object F
+ nis_print_result F
+ nis_print_rights F
+ nis_print_table F
+ nis_read_obj F
+ nis_remove F
+ nis_remove_entry F
+ nis_removemember F
+ nis_rmdir F
+ nis_servstate F
+ nis_sperrno F
+ nis_sperror F
+ nis_sperror_r F
+ nis_stats F
+ nis_verifygroup F
+ nis_write_obj F
+ readColdStartFile F
+ writeColdStartFile F
+ xdr_cback_data F
+ xdr_obj_p F
+GLIBC_2.2
+ GLIBC_2.2 A
+ xdr_ypall F
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/nptl/libpthread.abilist b/ports/sysdeps/unix/sysv/linux/microblaze/nptl/libpthread.abilist
new file mode 100644
index 0000000..b54080d9
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/nptl/libpthread.abilist
@@ -0,0 +1,267 @@
+GLIBC_2.0
+ GLIBC_2.0 A
+ _IO_flockfile F
+ _IO_ftrylockfile F
+ _IO_funlockfile F
+ __errno_location F
+ __fcntl F
+ __fork F
+ __h_errno_location F
+ __pthread_getspecific F
+ __pthread_key_create F
+ __pthread_mutex_destroy F
+ __pthread_mutex_init F
+ __pthread_mutex_lock F
+ __pthread_mutex_trylock F
+ __pthread_mutex_unlock F
+ __pthread_mutexattr_destroy F
+ __pthread_mutexattr_init F
+ __pthread_mutexattr_settype F
+ __pthread_once F
+ __pthread_setspecific F
+ __sigaction F
+ __wait F
+ _pthread_cleanup_pop F
+ _pthread_cleanup_pop_restore F
+ _pthread_cleanup_push F
+ _pthread_cleanup_push_defer F
+ fcntl F
+ flockfile F
+ fork F
+ ftrylockfile F
+ funlockfile F
+ longjmp F
+ pthread_atfork F
+ pthread_attr_destroy F
+ pthread_attr_getdetachstate F
+ pthread_attr_getinheritsched F
+ pthread_attr_getschedparam F
+ pthread_attr_getschedpolicy F
+ pthread_attr_getscope F
+ pthread_attr_init F
+ pthread_attr_setdetachstate F
+ pthread_attr_setinheritsched F
+ pthread_attr_setschedparam F
+ pthread_attr_setschedpolicy F
+ pthread_attr_setscope F
+ pthread_cancel F
+ pthread_cond_broadcast F
+ pthread_cond_destroy F
+ pthread_cond_init F
+ pthread_cond_signal F
+ pthread_cond_timedwait F
+ pthread_cond_wait F
+ pthread_condattr_destroy F
+ pthread_condattr_init F
+ pthread_create F
+ pthread_detach F
+ pthread_equal F
+ pthread_exit F
+ pthread_getschedparam F
+ pthread_getspecific F
+ pthread_join F
+ pthread_key_create F
+ pthread_key_delete F
+ pthread_kill F
+ pthread_kill_other_threads_np F
+ pthread_mutex_destroy F
+ pthread_mutex_init F
+ pthread_mutex_lock F
+ pthread_mutex_trylock F
+ pthread_mutex_unlock F
+ pthread_mutexattr_destroy F
+ pthread_mutexattr_getkind_np F
+ pthread_mutexattr_init F
+ pthread_mutexattr_setkind_np F
+ pthread_once F
+ pthread_self F
+ pthread_setcancelstate F
+ pthread_setcanceltype F
+ pthread_setschedparam F
+ pthread_setspecific F
+ pthread_sigmask F
+ pthread_testcancel F
+ raise F
+ sem_destroy F
+ sem_getvalue F
+ sem_init F
+ sem_post F
+ sem_trywait F
+ sem_wait F
+ sigaction F
+ siglongjmp F
+ sigwait F
+ system F
+ tcdrain F
+ wait F
+ waitpid F
+__close GLIBC_2.0 w ? D .text 00000000
+__connect GLIBC_2.0 w ? D .text 00000000
+__lseek GLIBC_2.0 w ? D .text 00000000
+__open GLIBC_2.0 w ? D .text 00000000
+__read GLIBC_2.0 w ? D .text 00000000
+__send GLIBC_2.0 w ? D .text 00000000
+__write GLIBC_2.0 w ? D .text 00000000
+accept GLIBC_2.0 w ? D .text 00000000
+close GLIBC_2.0 w ? D .text 00000000
+connect GLIBC_2.0 w ? D .text 00000000
+fsync GLIBC_2.0 w ? D .text 00000000
+lseek GLIBC_2.0 w ? D .text 00000000
+msync GLIBC_2.0 w ? D .text 00000000
+nanosleep GLIBC_2.0 w ? D .text 00000000
+open GLIBC_2.0 w ? D .text 00000000
+pause GLIBC_2.0 w ? D .text 00000000
+read GLIBC_2.0 w ? D .text 00000000
+recv GLIBC_2.0 w ? D .text 00000000
+recvfrom GLIBC_2.0 w ? D .text 00000000
+recvmsg GLIBC_2.0 w ? D .text 00000000
+send GLIBC_2.0 w ? D .text 00000000
+sendmsg GLIBC_2.0 w ? D .text 00000000
+sendto GLIBC_2.0 w ? D .text 00000000
+vfork GLIBC_2.0 w ? D .text 00000000
+write GLIBC_2.0 w ? D .text 00000000
+GLIBC_2.1
+ GLIBC_2.1 A
+ __libc_allocate_rtsig F
+ __libc_current_sigrtmax F
+ __libc_current_sigrtmin F
+ pthread_attr_getguardsize F
+ pthread_attr_getstackaddr F
+ pthread_attr_getstacksize F
+ pthread_attr_init F
+ pthread_attr_setguardsize F
+ pthread_attr_setstackaddr F
+ pthread_attr_setstacksize F
+ pthread_create F
+ pthread_getconcurrency F
+ pthread_mutexattr_gettype F
+ pthread_mutexattr_settype F
+ pthread_rwlock_destroy F
+ pthread_rwlock_init F
+ pthread_rwlock_rdlock F
+ pthread_rwlock_tryrdlock F
+ pthread_rwlock_trywrlock F
+ pthread_rwlock_unlock F
+ pthread_rwlock_wrlock F
+ pthread_rwlockattr_destroy F
+ pthread_rwlockattr_getkind_np F
+ pthread_rwlockattr_getpshared F
+ pthread_rwlockattr_init F
+ pthread_rwlockattr_setkind_np F
+ pthread_rwlockattr_setpshared F
+ pthread_setconcurrency F
+ sem_destroy F
+ sem_getvalue F
+ sem_init F
+ sem_post F
+ sem_trywait F
+ sem_wait F
+GLIBC_2.1.1
+ GLIBC_2.1.1 A
+ sem_close F
+ sem_open F
+ sem_unlink F
+GLIBC_2.1.2
+ GLIBC_2.1.2 A
+__vfork GLIBC_2.1.2 g ? D .text 00000000
+GLIBC_2.11
+ GLIBC_2.11 A
+ pthread_sigqueue F
+GLIBC_2.12
+ GLIBC_2.12 A
+ pthread_getname_np F
+ pthread_mutex_consistent F
+ pthread_mutexattr_getrobust F
+ pthread_mutexattr_setrobust F
+ pthread_setname_np F
+GLIBC_2.2
+ GLIBC_2.2 A
+ __open64 F
+ __pread64 F
+ __pthread_rwlock_destroy F
+ __pthread_rwlock_init F
+ __pthread_rwlock_rdlock F
+ __pthread_rwlock_tryrdlock F
+ __pthread_rwlock_trywrlock F
+ __pthread_rwlock_unlock F
+ __pthread_rwlock_wrlock F
+ __pwrite64 F
+ __res_state F
+ lseek64 F
+ open64 F
+ pread F
+ pread64 F
+ pthread_attr_getstack F
+ pthread_attr_setstack F
+ pthread_barrier_destroy F
+ pthread_barrier_init F
+ pthread_barrier_wait F
+ pthread_barrierattr_destroy F
+ pthread_barrierattr_init F
+ pthread_barrierattr_setpshared F
+ pthread_condattr_getpshared F
+ pthread_condattr_setpshared F
+ pthread_getcpuclockid F
+ pthread_mutex_timedlock F
+ pthread_mutexattr_getpshared F
+ pthread_mutexattr_setpshared F
+ pthread_rwlock_timedrdlock F
+ pthread_rwlock_timedwrlock F
+ pthread_spin_destroy F
+ pthread_spin_init F
+ pthread_spin_lock F
+ pthread_spin_trylock F
+ pthread_spin_unlock F
+ pthread_yield F
+ pwrite F
+ pwrite64 F
+ sem_timedwait F
+GLIBC_2.2.3
+ GLIBC_2.2.3 A
+ pthread_getattr_np F
+GLIBC_2.2.6
+ GLIBC_2.2.6 A
+__nanosleep GLIBC_2.2.6 w ? D .text 00000000
+GLIBC_2.3.2
+ GLIBC_2.3.2 A
+ pthread_cond_broadcast F
+ pthread_cond_destroy F
+ pthread_cond_init F
+ pthread_cond_signal F
+ pthread_cond_timedwait F
+ pthread_cond_wait F
+GLIBC_2.3.3
+ GLIBC_2.3.3 A
+ __pthread_cleanup_routine F
+ __pthread_register_cancel F
+ __pthread_register_cancel_defer F
+ __pthread_unregister_cancel F
+ __pthread_unregister_cancel_restore F
+ __pthread_unwind_next F
+ pthread_attr_getaffinity_np F
+ pthread_attr_setaffinity_np F
+ pthread_barrierattr_getpshared F
+ pthread_condattr_getclock F
+ pthread_condattr_setclock F
+ pthread_getaffinity_np F
+ pthread_setaffinity_np F
+ pthread_timedjoin_np F
+ pthread_tryjoin_np F
+GLIBC_2.3.4
+ GLIBC_2.3.4 A
+ pthread_attr_getaffinity_np F
+ pthread_attr_setaffinity_np F
+ pthread_getaffinity_np F
+ pthread_setaffinity_np F
+ pthread_setschedprio F
+GLIBC_2.4
+ GLIBC_2.4 A
+ pthread_mutex_consistent_np F
+ pthread_mutex_getprioceiling F
+ pthread_mutex_setprioceiling F
+ pthread_mutexattr_getprioceiling F
+ pthread_mutexattr_getprotocol F
+ pthread_mutexattr_getrobust_np F
+ pthread_mutexattr_setprioceiling F
+ pthread_mutexattr_setprotocol F
+ pthread_mutexattr_setrobust_np F
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/nptl/libresolv.abilist b/ports/sysdeps/unix/sysv/linux/microblaze/nptl/libresolv.abilist
new file mode 100644
index 0000000..f68333d
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/nptl/libresolv.abilist
@@ -0,0 +1,104 @@
+GLIBC_2.0
+ GLIBC_2.0 A
+ __b64_ntop F
+ __b64_pton F
+ __dn_comp F
+ __dn_count_labels F
+ __dn_skipname F
+ __fp_nquery F
+ __fp_query F
+ __fp_resstat F
+ __hostalias F
+ __loc_aton F
+ __loc_ntoa F
+ __p_cdname F
+ __p_cdnname F
+ __p_class F
+ __p_class_syms D 0x54
+ __p_fqname F
+ __p_fqnname F
+ __p_option F
+ __p_query F
+ __p_secstodate F
+ __p_time F
+ __p_type F
+ __p_type_syms D 0x228
+ __putlong F
+ __putshort F
+ __res_close F
+ __res_dnok F
+ __res_hnok F
+ __res_isourserver F
+ __res_mailok F
+ __res_nameinquery F
+ __res_ownok F
+ __res_queriesmatch F
+ __res_send F
+ __sym_ntop F
+ __sym_ntos F
+ __sym_ston F
+ _gethtbyaddr F
+ _gethtbyname F
+ _gethtbyname2 F
+ _gethtent F
+ _getlong F
+ _getshort F
+ _res_opcodes D 0x40
+ _sethtent F
+ dn_expand F
+ inet_net_ntop F
+ inet_net_pton F
+ inet_neta F
+ res_gethostbyaddr F
+ res_gethostbyname F
+ res_gethostbyname2 F
+ res_mkquery F
+ res_query F
+ res_querydomain F
+ res_search F
+ res_send_setqhook F
+ res_send_setrhook F
+GLIBC_2.2
+ GLIBC_2.2 A
+ __dn_expand F
+ __res_hostalias F
+ __res_mkquery F
+ __res_nmkquery F
+ __res_nquery F
+ __res_nquerydomain F
+ __res_nsearch F
+ __res_nsend F
+ __res_query F
+ __res_querydomain F
+ __res_search F
+GLIBC_2.3.2
+ GLIBC_2.3.2 A
+ __p_rcode F
+GLIBC_2.9
+ GLIBC_2.9 A
+ ns_datetosecs F
+ ns_format_ttl F
+ ns_get16 F
+ ns_get32 F
+ ns_initparse F
+ ns_makecanon F
+ ns_msg_getflag F
+ ns_name_compress F
+ ns_name_ntol F
+ ns_name_ntop F
+ ns_name_pack F
+ ns_name_pton F
+ ns_name_rollback F
+ ns_name_skip F
+ ns_name_uncompress F
+ ns_name_unpack F
+ ns_parse_ttl F
+ ns_parserr F
+ ns_put16 F
+ ns_put32 F
+ ns_samedomain F
+ ns_samename F
+ ns_skiprr F
+ ns_sprintrr F
+ ns_sprintrrf F
+ ns_subdomain F
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/nptl/librt.abilist b/ports/sysdeps/unix/sysv/linux/microblaze/nptl/librt.abilist
new file mode 100644
index 0000000..0636806
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/nptl/librt.abilist
@@ -0,0 +1,52 @@
+GLIBC_2.1
+ GLIBC_2.1 A
+ aio_cancel F
+ aio_cancel64 F
+ aio_error F
+ aio_error64 F
+ aio_fsync F
+ aio_fsync64 F
+ aio_init F
+ aio_read F
+ aio_read64 F
+ aio_return F
+ aio_return64 F
+ aio_suspend F
+ aio_suspend64 F
+ aio_write F
+ aio_write64 F
+ lio_listio F
+ lio_listio64 F
+GLIBC_2.2
+ GLIBC_2.2 A
+ clock_getcpuclockid F
+ clock_getres F
+ clock_gettime F
+ clock_nanosleep F
+ clock_settime F
+ shm_open F
+ shm_unlink F
+ timer_create F
+ timer_delete F
+ timer_getoverrun F
+ timer_gettime F
+ timer_settime F
+GLIBC_2.3.4
+ GLIBC_2.3.4 A
+ mq_close F
+ mq_getattr F
+ mq_notify F
+ mq_open F
+ mq_receive F
+ mq_send F
+ mq_unlink F
+mq_setattr GLIBC_2.3.4 w ? D .text 00000000
+mq_timedreceive GLIBC_2.3.4 w ? D .text 00000000
+mq_timedsend GLIBC_2.3.4 w ? D .text 00000000
+GLIBC_2.4
+ GLIBC_2.4 A
+ lio_listio F
+ lio_listio64 F
+GLIBC_2.7
+ GLIBC_2.7 A
+ __mq_open_2 F
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/nptl/libthread_db.abilist b/ports/sysdeps/unix/sysv/linux/microblaze/nptl/libthread_db.abilist
new file mode 100644
index 0000000..f331380
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/nptl/libthread_db.abilist
@@ -0,0 +1,48 @@
+GLIBC_2.1.3
+ GLIBC_2.1.3 A
+ td_init F
+ td_log F
+ td_ta_clear_event F
+ td_ta_delete F
+ td_ta_enable_stats F
+ td_ta_event_addr F
+ td_ta_event_getmsg F
+ td_ta_get_nthreads F
+ td_ta_get_ph F
+ td_ta_get_stats F
+ td_ta_map_id2thr F
+ td_ta_map_lwp2thr F
+ td_ta_new F
+ td_ta_reset_stats F
+ td_ta_set_event F
+ td_ta_setconcurrency F
+ td_ta_thr_iter F
+ td_ta_tsd_iter F
+ td_thr_clear_event F
+ td_thr_dbresume F
+ td_thr_dbsuspend F
+ td_thr_event_enable F
+ td_thr_event_getmsg F
+ td_thr_get_info F
+ td_thr_getfpregs F
+ td_thr_getgregs F
+ td_thr_getxregs F
+ td_thr_getxregsize F
+ td_thr_set_event F
+ td_thr_setfpregs F
+ td_thr_setgregs F
+ td_thr_setprio F
+ td_thr_setsigpending F
+ td_thr_setxregs F
+ td_thr_sigsetmask F
+ td_thr_tsd F
+ td_thr_validate F
+GLIBC_2.2.3
+ GLIBC_2.2.3 A
+ td_symbol_list F
+GLIBC_2.3
+ GLIBC_2.3 A
+ td_thr_tls_get_addr F
+GLIBC_2.3.3
+ GLIBC_2.3.3 A
+ td_thr_tlsbase F
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/nptl/libutil.abilist b/ports/sysdeps/unix/sysv/linux/microblaze/nptl/libutil.abilist
new file mode 100644
index 0000000..7422687
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/nptl/libutil.abilist
@@ -0,0 +1,8 @@
+GLIBC_2.0
+ GLIBC_2.0 A
+ forkpty F
+ login F
+ login_tty F
+ logout F
+ logwtmp F
+ openpty F
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/nptl/localplt.data b/ports/sysdeps/unix/sysv/linux/microblaze/nptl/localplt.data
new file mode 100644
index 0000000..109522e
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/nptl/localplt.data
@@ -0,0 +1,13 @@
+libc.so: __signbit
+libc.so: calloc
+libc.so: free
+libc.so: fscanf
+libc.so: malloc
+libc.so: memalign
+libc.so: raise
+libc.so: realloc
+libm.so: __signbit
+libm.so: __signbitf
+libm.so: matherr
+libpthread.so: __errno_location
+libpthread.so: raise
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/nptl/lowlevellock.c b/ports/sysdeps/unix/sysv/linux/microblaze/nptl/lowlevellock.c
new file mode 100644
index 0000000..02eaa96
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/nptl/lowlevellock.c
@@ -0,0 +1,132 @@
+/* Copyright (C) 1997-2012 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 Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library.  If not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <errno.h>
+#include <sysdep.h>
+#include <lowlevellock.h>
+#include <sys/time.h>
+
+void
+__lll_lock_wait_private (int *futex)
+{
+  do
+    {
+      int oldval = atomic_compare_and_exchange_val_acq (futex, 2, 1);
+      if (oldval != 0)
+	lll_futex_wait (futex, 2, LLL_PRIVATE);
+    }
+  while (atomic_compare_and_exchange_bool_acq (futex, 2, 0) != 0);
+}
+
+
+/* These functions don't get included in libc.so  */
+#ifdef IS_IN_libpthread
+void
+__lll_lock_wait (int *futex, int private)
+{
+  do
+    {
+      int oldval = atomic_compare_and_exchange_val_acq (futex, 2, 1);
+      if (oldval != 0)
+	lll_futex_wait (futex, 2, private);
+    }
+  while (atomic_compare_and_exchange_bool_acq (futex, 2, 0) != 0);
+}
+
+
+int
+__lll_timedlock_wait (int *futex, const struct timespec *abstime, int private)
+{
+  struct timespec rt;
+
+  /* Reject invalid timeouts.  */
+  if (abstime->tv_nsec < 0 || abstime->tv_nsec >= 1000000000)
+    return EINVAL;
+
+  /* Upgrade the lock.  */
+  if (atomic_exchange_acq (futex, 2) == 0)
+    return 0;
+
+  do
+    {
+      struct timeval tv;
+
+      /* Get the current time.  */
+      (void) __gettimeofday (&tv, NULL);
+
+      /* Compute relative timeout.  */
+      rt.tv_sec = abstime->tv_sec - tv.tv_sec;
+      rt.tv_nsec = abstime->tv_nsec - tv.tv_usec * 1000;
+      if (rt.tv_nsec < 0)
+	{
+	  rt.tv_nsec += 1000000000;
+	  --rt.tv_sec;
+	}
+
+      /* Already timed out?  */
+      if (rt.tv_sec < 0)
+	return ETIMEDOUT;
+
+      /* XYZ: Lost the lock to check whether it was private. */
+      lll_futex_timed_wait (futex, 2, &rt, private);
+    }
+  while (atomic_compare_and_exchange_bool_acq (futex, 2, 0) != 0);
+
+  return 0;
+}
+
+
+int
+__lll_timedwait_tid (int *tidp, const struct timespec *abstime)
+{
+  int tid;
+
+  if (abstime->tv_nsec < 0 || abstime->tv_nsec >= 1000000000)
+    return EINVAL;
+
+  /* Repeat until thread terminated.  */
+  while ((tid = *tidp) != 0)
+    {
+      struct timeval tv;
+      struct timespec rt;
+
+      /* Get the current time.  */
+      (void) __gettimeofday (&tv, NULL);
+
+      /* Compute relative timeout.  */
+      rt.tv_sec = abstime->tv_sec - tv.tv_sec;
+      rt.tv_nsec = abstime->tv_nsec - tv.tv_usec * 1000;
+      if (rt.tv_nsec < 0)
+	{
+	  rt.tv_nsec += 1000000000;
+	  --rt.tv_sec;
+	}
+
+      /* Already timed out?  */
+      if (rt.tv_sec < 0)
+	return ETIMEDOUT;
+
+      /* Wait until thread terminates.  */
+      /* XYZ: Lost the lock to check whether it was private. */
+      if (lll_futex_timed_wait (tidp, tid, &rt, LLL_SHARED) == -ETIMEDOUT)
+	return ETIMEDOUT;
+    }
+
+  return 0;
+}
+#endif
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/nptl/lowlevellock.h b/ports/sysdeps/unix/sysv/linux/microblaze/nptl/lowlevellock.h
new file mode 100644
index 0000000..ee719e4
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/nptl/lowlevellock.h
@@ -0,0 +1,292 @@
+/* Copyright (C) 2005-2012 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 Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _LOWLEVELLOCK_H
+#define _LOWLEVELLOCK_H	1
+
+#include <time.h>
+#include <sys/param.h>
+#include <bits/pthreadtypes.h>
+#include <atomic.h>
+#include <sysdep.h>
+#include <kernel-features.h>
+#include <tls.h>		/* Need THREAD_*, and header.*.  */
+
+#define FUTEX_WAIT		0
+#define FUTEX_WAKE		1
+#define FUTEX_REQUEUE		3
+#define FUTEX_CMP_REQUEUE	4
+#define FUTEX_WAKE_OP		5
+#define FUTEX_OP_CLEAR_WAKE_IF_GT_ONE	((4 << 24) | 1)
+#define FUTEX_LOCK_PI		6
+#define FUTEX_UNLOCK_PI		7
+#define FUTEX_TRYLOCK_PI	8
+#define FUTEX_WAIT_BITSET	9
+#define FUTEX_WAKE_BITSET	10
+#define FUTEX_PRIVATE_FLAG	128
+#define FUTEX_CLOCK_REALTIME	256
+
+#define FUTEX_BITSET_MATCH_ANY	0xffffffff
+
+/* Values for 'private' parameter of locking macros.  Yes, the
+   definition seems to be backwards.  But it is not.  The bit will be
+   reversed before passing to the system call.  */
+#define LLL_PRIVATE	0
+#define LLL_SHARED	FUTEX_PRIVATE_FLAG
+
+/* Initialize locks to zero.  */
+#define LLL_MUTEX_LOCK_INITIALIZER (0)
+
+#if !defined NOT_IN_libc || defined IS_IN_rtld
+/* In libc.so or ld.so all futexes are private.  */
+# ifdef __ASSUME_PRIVATE_FUTEX
+#  define __lll_private_flag(fl, private) \
+  ((fl) | FUTEX_PRIVATE_FLAG)
+# else
+#  define __lll_private_flag(fl, private) \
+  ((fl) | THREAD_GETMEM (THREAD_SELF, header.private_futex))
+# endif
+#else
+# ifdef __ASSUME_PRIVATE_FUTEX
+#  define __lll_private_flag(fl, private) \
+  (((fl) | FUTEX_PRIVATE_FLAG) ^ (private))
+# else
+#  define __lll_private_flag(fl, private) \
+  (__builtin_constant_p (private)					      \
+   ? ((private) == 0							      \
+      ? ((fl) | THREAD_GETMEM (THREAD_SELF, header.private_futex))	      \
+      : (fl))								      \
+   : ((fl) | (((private) ^ FUTEX_PRIVATE_FLAG)				      \
+	      & THREAD_GETMEM (THREAD_SELF, header.private_futex))))
+# endif
+#endif
+
+#define lll_futex_wait(futexp, val, private) \
+  lll_futex_timed_wait(futexp, val, NULL, private)
+
+#define lll_futex_timed_wait(futexp, val, timespec, private) \
+  ({									      \
+    INTERNAL_SYSCALL_DECL (__err);					      \
+    long int __ret;							      \
+									      \
+    __ret = INTERNAL_SYSCALL (futex, __err, 4, (futexp),		      \
+			      __lll_private_flag (FUTEX_WAIT, private),	      \
+			      (val), (timespec));			      \
+    INTERNAL_SYSCALL_ERROR_P (__ret, __err) ? -__ret : __ret;		      \
+  })
+
+#define lll_futex_wake(futexp, nr, private) \
+  ({									      \
+    INTERNAL_SYSCALL_DECL (__err);					      \
+    long int __ret;							      \
+									      \
+    __ret = INTERNAL_SYSCALL (futex, __err, 4, (futexp),		      \
+			      __lll_private_flag (FUTEX_WAKE, private),	      \
+			      (nr), 0);					      \
+    INTERNAL_SYSCALL_ERROR_P (__ret, __err) ? -__ret : __ret;		      \
+  })
+
+#define lll_robust_dead(futexv, private) \
+  do									      \
+    {									      \
+      INTERNAL_SYSCALL_DECL (__err);					      \
+      int *__futexp = &(futexv);					      \
+									      \
+      atomic_or (__futexp, FUTEX_OWNER_DIED);				      \
+      INTERNAL_SYSCALL (futex, __err, 4, __futexp,			      \
+			__lll_private_flag (FUTEX_WAKE, private), 1, 0);      \
+    }									      \
+  while (0)
+
+/* Returns non-zero if error happened, zero if success.  */
+#define lll_futex_requeue(futexp, nr_wake, nr_move, mutex, val, private) \
+  ({									      \
+    INTERNAL_SYSCALL_DECL (__err);					      \
+    long int __ret;							      \
+									      \
+    __ret = INTERNAL_SYSCALL (futex, __err, 6, (futexp),		      \
+			      __lll_private_flag (FUTEX_CMP_REQUEUE, private),\
+			      (nr_wake), (nr_move), (mutex), (val));	      \
+    INTERNAL_SYSCALL_ERROR_P (__ret, __err);				      \
+  })
+
+/* Returns non-zero if error happened, zero if success.  */
+#define lll_futex_wake_unlock(futexp, nr_wake, nr_wake2, futexp2, private) \
+  ({									      \
+    INTERNAL_SYSCALL_DECL (__err);					      \
+    long int __ret;							      \
+									      \
+    __ret = INTERNAL_SYSCALL (futex, __err, 6, (futexp),		      \
+			      __lll_private_flag (FUTEX_WAKE_OP, private),    \
+			      (nr_wake), (nr_wake2), (futexp2),		      \
+			      FUTEX_OP_CLEAR_WAKE_IF_GT_ONE);		      \
+    INTERNAL_SYSCALL_ERROR_P (__ret, __err);				      \
+  })
+
+/* Set *futex to 1 if it is 0, atomically.  Returns the old value */
+static inline int __attribute__((always_inline))
+__lll_trylock(int *futex)
+{
+  return atomic_compare_and_exchange_val_acq (futex, 1, 0) != 0;
+}
+#define lll_trylock(lock)       __lll_trylock (&(lock))
+
+/* Set *futex to 2 if it is 0, atomically.  Returns the old value */
+static inline int __attribute__((always_inline))
+__lll_cond_trylock(int *futex)
+{
+  return atomic_compare_and_exchange_val_acq (futex, 2, 0) != 0;
+}
+#define lll_cond_trylock(lock)  __lll_cond_trylock (&(lock))
+
+/* Set *futex to ID if it is 0, atomically.  Returns the old value */
+static inline int __attribute__((always_inline))
+__lll_robust_trylock(int *futex, int id)
+{
+  return atomic_compare_and_exchange_val_acq (futex, id, 0) != 0;
+}
+#define lll_robust_trylock(lock, id) \
+  __lll_robust_trylock (&(lock), id)
+
+extern void __lll_lock_wait_private (int *futex) attribute_hidden;
+extern void __lll_lock_wait (int *futex, int private) attribute_hidden;
+extern int __lll_robust_lock_wait (int *futex, int private) attribute_hidden;
+
+#define lll_lock(lock, private) \
+  (void) ({								      \
+    int *__futex = &(lock);						      \
+    if (__builtin_expect (atomic_compare_and_exchange_val_acq (__futex, 1, 0),\
+			  0) != 0)					      \
+      {									      \
+	if (__builtin_constant_p (private) && (private) == LLL_PRIVATE)	      \
+	  __lll_lock_wait_private (__futex);				      \
+	else								      \
+	  __lll_lock_wait (__futex, private);				      \
+      }									      \
+  })
+
+#define lll_robust_lock(lock, id, private) \
+  ({									      \
+    int *__futex = &(lock);						      \
+    int __val = 0;							      \
+    if (__builtin_expect (atomic_compare_and_exchange_bool_acq (__futex, id,  \
+								0), 0))	      \
+      __val = __lll_robust_lock_wait (__futex, private);		      \
+    __val;								      \
+  })
+
+#define lll_cond_lock(lock, private) \
+  (void) ({								      \
+    int *__futex = &(lock);						      \
+    if (__builtin_expect (atomic_compare_and_exchange_val_acq (__futex, 2, 0),\
+			  0) != 0)					      \
+      __lll_lock_wait (__futex, private);				      \
+  })
+
+#define lll_robust_cond_lock(lock, id, private) \
+  ({									      \
+    int *__futex = &(lock);						      \
+    int __val = 0;							      \
+    int __id = id | FUTEX_WAITERS;					      \
+    if (__builtin_expect (atomic_compare_and_exchange_bool_acq (__futex, __id,\
+								0), 0))	      \
+      __val = __lll_robust_lock_wait (__futex, private);		      \
+    __val;								      \
+  })
+
+
+extern int __lll_timedlock_wait
+  (int *futex, const struct timespec *, int private) attribute_hidden;
+extern int __lll_robust_timedlock_wait
+  (int *futex, const struct timespec *, int private) attribute_hidden;
+
+#define lll_timedlock(lock, abstime, private) \
+  ({									      \
+    int *__futex = &(lock);						      \
+    int __val = 0;							      \
+    if (__builtin_expect (atomic_compare_and_exchange_val_acq (__futex, 1, 0),\
+			  0) != 0)					      \
+       __val = __lll_timedlock_wait (__futex, abstime, private);	      \
+     __val;								      \
+  })
+
+#define lll_robust_timedlock(lock, abstime, id, private) \
+  ({									      \
+    int *__futex = &(lock);						      \
+    int __val = 0;							      \
+    if (__builtin_expect (atomic_compare_and_exchange_bool_acq (__futex, id,  \
+								0), 0))	      \
+      __val = __lll_robust_timedlock_wait (__futex, abstime, private);	      \
+    __val;								      \
+  })
+
+#define lll_unlock(lock, private) \
+  ((void) ({								      \
+    int *__futex = &(lock);						      \
+    int __val = atomic_exchange_rel (__futex, 0);			      \
+    if (__builtin_expect (__val > 1, 0))				      \
+	 lll_futex_wake (__futex, 1, private);			\
+  }))
+
+#define lll_robust_unlock(lock, private) \
+  ((void) ({								      \
+    int *__futex = &(lock);						      \
+    int __val = atomic_exchange_rel (__futex, 0);			      \
+    if (__builtin_expect (__val & FUTEX_WAITERS, 0))			      \
+	 lll_futex_wake (__futex, 1, private);			\
+  }))
+
+#define lll_islocked(futex) \
+  (futex != 0)
+
+
+/* Our internal lock implementation is identical to the binary-compatible
+   mutex implementation. */
+
+/* Initializers for lock.  */
+#define LLL_LOCK_INITIALIZER		(0)
+#define LLL_LOCK_INITIALIZER_LOCKED	(1)
+
+/* The states of a lock are:
+    0  -  untaken
+    1  -  taken by one user
+   >1  -  taken by more users */
+
+/* The kernel notifies a process which uses CLONE_CLEARTID via futex
+   wakeup when the clone terminates.  The memory location contains the
+   thread ID while the clone is running and is reset to zero
+   afterwards.	*/
+#define lll_wait_tid(tid) \
+  do {					\
+    __typeof (tid) __tid;		\
+    while ((__tid = (tid)) != 0)	\
+      lll_futex_wait (&(tid), __tid, LLL_SHARED);\
+  } while (0)
+
+extern int __lll_timedwait_tid (int *, const struct timespec *)
+     attribute_hidden;
+
+#define lll_timedwait_tid(tid, abstime) \
+  ({							\
+    int __res = 0;					\
+    if ((tid) != 0)					\
+      __res = __lll_timedwait_tid (&(tid), (abstime));	\
+    __res;						\
+  })
+
+#endif	/* lowlevellock.h */
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/nptl/pt-vfork.S b/ports/sysdeps/unix/sysv/linux/microblaze/nptl/pt-vfork.S
new file mode 100644
index 0000000..0490e72
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/nptl/pt-vfork.S
@@ -0,0 +1,21 @@
+/* Copyright (C) 2009-2012 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 Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <tcb-offsets.h>
+
+#include "vfork.S"
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/nptl/pthread_once.c b/ports/sysdeps/unix/sysv/linux/microblaze/nptl/pthread_once.c
new file mode 100644
index 0000000..0897e1e
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/nptl/pthread_once.c
@@ -0,0 +1,90 @@
+/* Copyright (C) 2004-2012 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 Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include "pthreadP.h"
+#include <lowlevellock.h>
+
+unsigned long int __fork_generation attribute_hidden;
+
+static void
+clear_once_control (void *arg)
+{
+  pthread_once_t *once_control = (pthread_once_t *) arg;
+
+  *once_control = 0;
+  lll_futex_wake (once_control, INT_MAX, LLL_PRIVATE);
+}
+
+int
+__pthread_once (pthread_once_t *once_control, void (*init_routine) (void))
+{
+  for (;;)
+    {
+      int oldval;
+      int newval;
+
+      /* Pseudo code:
+	 newval = __fork_generation | 1;
+	 oldval = *once_control;
+	 if ((oldval & 2) == 0)
+	   *once_control = newval;
+	 Do this atomically.
+      */
+      do
+	{
+	  newval = __fork_generation | 1;
+	  oldval = *once_control;
+	  if (oldval & 2)
+	    break;
+	} while (atomic_compare_and_exchange_val_acq (once_control, newval, oldval) != oldval);
+
+      /* Check if the initializer has already been done.  */
+      if ((oldval & 2) != 0)
+	return 0;
+
+      /* Check if another thread already runs the initializer.	*/
+      if ((oldval & 1) == 0)
+	break;
+
+      /* Check whether the initializer execution was interrupted by a fork.  */
+      if (oldval != newval)
+	break;
+
+      /* Same generation, some other thread was faster. Wait.  */
+      lll_futex_wait (once_control, oldval, LLL_PRIVATE);
+    }
+
+  /* This thread is the first here.  Do the initialization.
+     Register a cleanup handler so that in case the thread gets
+     interrupted the initialization can be restarted.  */
+  pthread_cleanup_push (clear_once_control, once_control);
+
+  init_routine ();
+
+  pthread_cleanup_pop (0);
+
+  /* Say that the initialisation is done.  */
+  *once_control = __fork_generation | 2;
+
+  /* Wake up all other threads.  */
+  lll_futex_wake (once_control, INT_MAX, LLL_PRIVATE);
+
+  return 0;
+}
+weak_alias (__pthread_once, pthread_once)
+hidden_def (__pthread_once)
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/nptl/vfork.S b/ports/sysdeps/unix/sysv/linux/microblaze/nptl/vfork.S
new file mode 100644
index 0000000..cf6e5a7
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/nptl/vfork.S
@@ -0,0 +1,46 @@
+/* Copyright (C) 2005-2012 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 Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <sysdep.h>
+#define _ERRNO_H	1
+#include <bits/errno.h>
+#include <kernel-features.h>
+#include <tcb-offsets.h>
+
+/* Clone the calling process, but without copying the whole address space.
+   The calling process is suspended until the new process exits or is
+   replaced by a call to `execve'.  Return -1 for errors, 0 to the new process,
+   and the process ID of the new process to the old process.  */
+
+ENTRY (__vfork)
+
+#ifdef __NR_vfork
+	DO_CALL (vfork, 0)
+#else
+	DO_CALL (fork, 0)
+#endif
+	addik	r12,r0,-4095
+	cmpu	r12,r12,r3
+	bgei	r12,SYSCALL_ERROR_LABEL
+	rtsd	r15,8
+	nop
+
+PSEUDO_END (__vfork)
+libc_hidden_def (__vfork)
+
+weak_alias (__vfork, vfork)
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/oldgetrlimit64.c b/ports/sysdeps/unix/sysv/linux/microblaze/oldgetrlimit64.c
new file mode 100644
index 0000000..4c27e95
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/oldgetrlimit64.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/oldgetrlimit64.c>
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/profil-counter.h b/ports/sysdeps/unix/sysv/linux/microblaze/profil-counter.h
new file mode 100644
index 0000000..65b96e5
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/profil-counter.h
@@ -0,0 +1,20 @@
+/* Copyright (C) 2009-2012 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 Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/* We can use the ix86 version.  */
+#include <sysdeps/unix/sysv/linux/i386/profil-counter.h>
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/putmsg.c b/ports/sysdeps/unix/sysv/linux/microblaze/putmsg.c
new file mode 100644
index 0000000..ebc1680
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/putmsg.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/putmsg.c>
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/readdir64.c b/ports/sysdeps/unix/sysv/linux/microblaze/readdir64.c
new file mode 100644
index 0000000..2ea26dd
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/readdir64.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/readdir64.c>
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/readdir64_r.c b/ports/sysdeps/unix/sysv/linux/microblaze/readdir64_r.c
new file mode 100644
index 0000000..9f54f89
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/readdir64_r.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/readdir64_r.c>
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/scandir64.c b/ports/sysdeps/unix/sysv/linux/microblaze/scandir64.c
new file mode 100644
index 0000000..506fd88
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/scandir64.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/scandir64.c>
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/semctl.c b/ports/sysdeps/unix/sysv/linux/microblaze/semctl.c
new file mode 100644
index 0000000..66ba114
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/semctl.c
@@ -0,0 +1,189 @@
+/* Copyright (C) 2009-2012 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 Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <errno.h>
+#include <stdarg.h>
+#include <sys/sem.h>
+#include <ipc_priv.h>
+
+#include <sysdep.h>
+#include <string.h>
+#include <sys/syscall.h>
+#include <shlib-compat.h>
+
+#include "kernel-features.h"
+
+struct __old_semid_ds
+{
+  struct __old_ipc_perm sem_perm;	/* operation permission struct */
+  __time_t sem_otime;			/* last semop() time */
+  __time_t sem_ctime;			/* last time changed by semctl() */
+  struct sem *__unbounded __sembase;	/* ptr to first semaphore in array */
+  struct sem_queue *__unbounded __sem_pending; /* pending operations */
+  struct sem_queue *__unbounded __sem_pending_last; /* last pending operation */
+  struct sem_undo *__unbounded __undo;	/* ondo requests on this array */
+  unsigned short int sem_nsems;		/* number of semaphores in set */
+};
+
+/* Define a `union semun' suitable for Linux here.  */
+union semun
+{
+  int val;			/* value for SETVAL */
+  struct semid_ds *buf;		/* buffer for IPC_STAT & IPC_SET */
+  unsigned short int *array;	/* array for GETALL & SETALL */
+  struct seminfo *__buf;	/* buffer for IPC_INFO */
+  struct __old_semid_ds *__old_buf;
+};
+
+#include <bp-checks.h>
+#include <bp-semctl.h>		/* definition of CHECK_SEMCTL needs union semum */
+
+/* Return identifier for array of NSEMS semaphores associated with
+   KEY.  */
+#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)
+int __old_semctl (int semid, int semnum, int cmd, ...);
+#endif
+int __new_semctl (int semid, int semnum, int cmd, ...);
+
+#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)
+int
+attribute_compat_text_section
+__old_semctl (int semid, int semnum, int cmd, ...)
+{
+  union semun arg;
+  va_list ap;
+
+  va_start (ap, cmd);
+
+  /* Get the argument only if required.  */
+  arg.buf = NULL;
+  switch (cmd)
+    {
+    case SETVAL:        /* arg.val */
+    case GETALL:        /* arg.array */
+    case SETALL:
+    case IPC_STAT:      /* arg.buf */
+    case IPC_SET:
+    case SEM_STAT:
+    case IPC_INFO:      /* arg.__buf */
+    case SEM_INFO:
+      va_start (ap, cmd);
+      arg = va_arg (ap, union semun);
+      va_end (ap);
+      break;
+    }
+
+  va_end (ap);
+
+  return INLINE_SYSCALL (semctl, 4, semid, semnum, cmd, CHECK_SEMCTL (&arg, semid, cmd)->array);
+}
+compat_symbol (libc, __old_semctl, semctl, GLIBC_2_0);
+#endif
+
+int
+__new_semctl (int semid, int semnum, int cmd, ...)
+{
+  union semun arg;
+  va_list ap;
+
+  va_start (ap, cmd);
+
+  /* Get the argument only if required.  */
+  arg.buf = NULL;
+  switch (cmd)
+    {
+    case SETVAL:        /* arg.val */
+    case GETALL:        /* arg.array */
+    case SETALL:
+    case IPC_STAT:      /* arg.buf */
+    case IPC_SET:
+    case SEM_STAT:
+    case IPC_INFO:      /* arg.__buf */
+    case SEM_INFO:
+      va_start (ap, cmd);
+      arg = va_arg (ap, union semun);
+      va_end (ap);
+      break;
+    }
+
+  va_end (ap);
+
+#if __ASSUME_IPC64 > 0
+  return INLINE_SYSCALL (semctl, 4, semid, semnum, cmd | __IPC_64,
+			 CHECK_SEMCTL (&arg, semid, cmd | __IPC_64)->array);
+#else
+  switch (cmd)
+    {
+    case SEM_STAT:
+    case IPC_STAT:
+    case IPC_SET:
+      break;
+    default:
+      return INLINE_SYSCALL (semctl, 4, semid, semnum, cmd,
+			     CHECK_SEMCTL (&arg, semid, cmd)->array);
+    }
+
+  {
+    int save_errno = errno, result;
+    struct __old_semid_ds old;
+    struct semid_ds *buf;
+
+    /* Unfortunately there is no way how to find out for sure whether
+       we should use old or new semctl.  */
+    result = INLINE_SYSCALL (semctl, 4, semid, semnum, cmd | __IPC_64,
+			     CHECK_SEMCTL (&arg, semid, cmd | __IPC_64)->array);
+    if (result != -1 || errno != EINVAL)
+      return result;
+
+    __set_errno(save_errno);
+    buf = arg.buf;
+    arg.__old_buf = &old;
+    if (cmd == IPC_SET)
+      {
+	old.sem_perm.uid = buf->sem_perm.uid;
+	old.sem_perm.gid = buf->sem_perm.gid;
+	old.sem_perm.mode = buf->sem_perm.mode;
+	if (old.sem_perm.uid != buf->sem_perm.uid ||
+	    old.sem_perm.gid != buf->sem_perm.gid)
+	  {
+	    __set_errno (EINVAL);
+	    return -1;
+	  }
+      }
+    result = INLINE_SYSCALL (semctl, 4, semid, semnum, cmd,
+			     CHECK_SEMCTL (&arg, semid, cmd)->array);
+    if (result != -1 && cmd != IPC_SET)
+      {
+	memset(buf, 0, sizeof(*buf));
+	buf->sem_perm.__key = old.sem_perm.__key;
+	buf->sem_perm.uid = old.sem_perm.uid;
+	buf->sem_perm.gid = old.sem_perm.gid;
+	buf->sem_perm.cuid = old.sem_perm.cuid;
+	buf->sem_perm.cgid = old.sem_perm.cgid;
+	buf->sem_perm.mode = old.sem_perm.mode;
+	buf->sem_perm.__seq = old.sem_perm.__seq;
+	buf->sem_otime = old.sem_otime;
+	buf->sem_ctime = old.sem_ctime;
+	buf->sem_nsems = old.sem_nsems;
+      }
+    return result;
+  }
+#endif
+}
+
+versioned_symbol (libc, __new_semctl, semctl, GLIBC_2_2);
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/setegid.c b/ports/sysdeps/unix/sysv/linux/microblaze/setegid.c
new file mode 100644
index 0000000..2e3a54c
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/setegid.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/setegid.c>
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/seteuid.c b/ports/sysdeps/unix/sysv/linux/microblaze/seteuid.c
new file mode 100644
index 0000000..18e41d0
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/seteuid.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/seteuid.c>
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/setfsgid.c b/ports/sysdeps/unix/sysv/linux/microblaze/setfsgid.c
new file mode 100644
index 0000000..0886712
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/setfsgid.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/setfsgid.c>
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/setfsuid.c b/ports/sysdeps/unix/sysv/linux/microblaze/setfsuid.c
new file mode 100644
index 0000000..a9f22eb
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/setfsuid.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/setfsuid.c>
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/setgid.c b/ports/sysdeps/unix/sysv/linux/microblaze/setgid.c
new file mode 100644
index 0000000..377021d
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/setgid.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/setgid.c>
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/setgroups.c b/ports/sysdeps/unix/sysv/linux/microblaze/setgroups.c
new file mode 100644
index 0000000..0e70862
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/setgroups.c
@@ -0,0 +1,2 @@
+/* We also have to rewrite the kernel gid_t to the user land type.  */
+#include <sysdeps/unix/sysv/linux/i386/setgroups.c>
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/setregid.c b/ports/sysdeps/unix/sysv/linux/microblaze/setregid.c
new file mode 100644
index 0000000..99c57ad
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/setregid.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/setregid.c>
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/setresgid.c b/ports/sysdeps/unix/sysv/linux/microblaze/setresgid.c
new file mode 100644
index 0000000..daca1a4
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/setresgid.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/setresgid.c>
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/setresuid.c b/ports/sysdeps/unix/sysv/linux/microblaze/setresuid.c
new file mode 100644
index 0000000..3aeabe9
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/setresuid.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/setresuid.c>
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/setreuid.c b/ports/sysdeps/unix/sysv/linux/microblaze/setreuid.c
new file mode 100644
index 0000000..8ad6122
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/setreuid.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/setreuid.c>
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/setrlimit.c b/ports/sysdeps/unix/sysv/linux/microblaze/setrlimit.c
new file mode 100644
index 0000000..bfaef74
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/setrlimit.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/setrlimit.c>
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/setuid.c b/ports/sysdeps/unix/sysv/linux/microblaze/setuid.c
new file mode 100644
index 0000000..de39437
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/setuid.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/setuid.c>
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/shmctl.c b/ports/sysdeps/unix/sysv/linux/microblaze/shmctl.c
new file mode 100644
index 0000000..2fd0540
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/shmctl.c
@@ -0,0 +1,154 @@
+/* Copyright (C) 2009-2012 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 Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <errno.h>
+#include <sys/shm.h>
+#include <ipc_priv.h>
+
+#include <sysdep.h>
+#include <string.h>
+#include <sys/syscall.h>
+#include <bits/wordsize.h>
+#include <shlib-compat.h>
+#include <bp-checks.h>
+
+#include <kernel-features.h>
+
+struct __old_shmid_ds
+{
+  struct __old_ipc_perm shm_perm;	/* operation permission struct */
+  int shm_segsz;			/* size of segment in bytes */
+  __time_t shm_atime;			/* time of last shmat() */
+  __time_t shm_dtime;			/* time of last shmdt() */
+  __time_t shm_ctime;			/* time of last change by shmctl() */
+  __ipc_pid_t shm_cpid;			/* pid of creator */
+  __ipc_pid_t shm_lpid;			/* pid of last shmop */
+  unsigned short int shm_nattch;	/* number of current attaches */
+  unsigned short int __shm_npages;	/* size of segment (pages) */
+  unsigned long int *__unbounded __shm_pages; /* array of ptrs to frames -> SHMMAX */
+  struct vm_area_struct *__unbounded __attaches; /* descriptors for attaches */
+};
+
+struct __old_shminfo
+{
+  int shmmax;
+  int shmmin;
+  int shmmni;
+  int shmseg;
+  int shmall;
+};
+
+/* Provide operations to control over shared memory segments.  */
+#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)
+int __old_shmctl (int, int, struct __old_shmid_ds *);
+#endif
+int __new_shmctl (int, int, struct shmid_ds *);
+
+#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_2)
+int
+attribute_compat_text_section
+__old_shmctl (int shmid, int cmd, struct __old_shmid_ds *buf)
+{
+  return INLINE_SYSCALL (shmctl, 3, shmid, cmd, CHECK_1_NULL_OK (buf));
+}
+compat_symbol (libc, __old_shmctl, shmctl, GLIBC_2_0);
+#endif
+
+int
+__new_shmctl (int shmid, int cmd, struct shmid_ds *buf)
+{
+#if __ASSUME_IPC64 > 0
+  return INLINE_SYSCALL (shmctl, 3, shmid, cmd | __IPC_64, CHECK_1 (buf));
+#else
+  switch (cmd) {
+    case SHM_STAT:
+    case IPC_STAT:
+    case IPC_SET:
+#if __WORDSIZE != 32
+    case IPC_INFO:
+#endif
+      break;
+    default:
+      return INLINE_SYSCALL (shmctl, 3, shmid, cmd, CHECK_1 (buf));
+  }
+
+  {
+    int save_errno = errno, result;
+    union
+      {
+	struct __old_shmid_ds ds;
+	struct __old_shminfo info;
+      } old;
+
+    /* Unfortunately there is no way how to find out for sure whether
+       we should use old or new shmctl.  */
+    result = INLINE_SYSCALL (shmctl, 3, shmid, cmd | __IPC_64, CHECK_1 (buf));
+    if (result != -1 || errno != EINVAL)
+      return result;
+
+    __set_errno(save_errno);
+    if (cmd == IPC_SET)
+      {
+	old.ds.shm_perm.uid = buf->shm_perm.uid;
+	old.ds.shm_perm.gid = buf->shm_perm.gid;
+	old.ds.shm_perm.mode = buf->shm_perm.mode;
+	if (old.ds.shm_perm.uid != buf->shm_perm.uid ||
+	    old.ds.shm_perm.gid != buf->shm_perm.gid)
+	  {
+	    __set_errno (EINVAL);
+	    return -1;
+	  }
+      }
+    result = INLINE_SYSCALL (shmctl, 3, shmid, cmd, __ptrvalue (&old.ds));
+    if (result != -1 && (cmd == SHM_STAT || cmd == IPC_STAT))
+      {
+	memset(buf, 0, sizeof(*buf));
+	buf->shm_perm.__key = old.ds.shm_perm.__key;
+	buf->shm_perm.uid = old.ds.shm_perm.uid;
+	buf->shm_perm.gid = old.ds.shm_perm.gid;
+	buf->shm_perm.cuid = old.ds.shm_perm.cuid;
+	buf->shm_perm.cgid = old.ds.shm_perm.cgid;
+	buf->shm_perm.mode = old.ds.shm_perm.mode;
+	buf->shm_perm.__seq = old.ds.shm_perm.__seq;
+	buf->shm_atime = old.ds.shm_atime;
+	buf->shm_dtime = old.ds.shm_dtime;
+	buf->shm_ctime = old.ds.shm_ctime;
+	buf->shm_segsz = old.ds.shm_segsz;
+	buf->shm_nattch = old.ds.shm_nattch;
+	buf->shm_cpid = old.ds.shm_cpid;
+	buf->shm_lpid = old.ds.shm_lpid;
+      }
+#if __WORDSIZE != 32
+    else if (result != -1 && cmd == IPC_INFO)
+      {
+	struct shminfo *i = (struct shminfo *)buf;
+
+	memset(i, 0, sizeof(*i));
+	i->shmmax = old.info.shmmax;
+	i->shmmin = old.info.shmmin;
+	i->shmmni = old.info.shmmni;
+	i->shmseg = old.info.shmseg;
+	i->shmall = old.info.shmall;
+      }
+#endif
+    return result;
+  }
+#endif
+}
+
+versioned_symbol (libc, __new_shmctl, shmctl, GLIBC_2_2);
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/sigcontextinfo.h b/ports/sysdeps/unix/sysv/linux/microblaze/sigcontextinfo.h
new file mode 100644
index 0000000..11adfde
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/sigcontextinfo.h
@@ -0,0 +1,25 @@
+/* Copyright (C) 2009-2012 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 Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#define SIGCONTEXT int _code, struct ucontext *
+#define SIGCONTEXT_EXTRA_ARGS _code,
+#define GET_PC(ctx)    ((void *) (ctx)->uc_mcontext.regs.pc)
+#define GET_FRAME(ctx) ((void *) (ctx)->uc_mcontext.regs.sp)
+#define GET_STACK(ctx) ((void *) (ctx)->uc_mcontext.regs.sp)
+#define CALL_SIGHANDLER(handler, signo, ctx) \
+  (handler)((signo), SIGCONTEXT_EXTRA_ARGS (ctx))
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/socket.S b/ports/sysdeps/unix/sysv/linux/microblaze/socket.S
new file mode 100644
index 0000000..c6e5ba1
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/socket.S
@@ -0,0 +1,126 @@
+/* Copyright (C) 2009-2012 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 Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <sysdep-cancel.h>
+#include <socketcall.h>
+
+#define P(a, b) P2(a, b)
+#define P2(a, b) a##b
+
+/* The socket-oriented system calls are handled unusally in Linux.
+   They are all gated through the single `socketcall' system call number.
+   `socketcall' takes two arguments: the first is the subcode, specifying
+   which socket function is being called; and the second is a pointer to
+   the arguments to the specific function.
+
+   The .S files for the other calls just #define socket and #include this.
+   They also #define a 'number-of-arguments' word in NARGS, which
+   defaults to 3.  */
+
+#ifndef NARGS
+#ifdef socket
+#error NARGS not defined
+#endif
+#define NARGS 3
+#endif
+
+/* Stack usage:
+   0 - r15 (return address)
+   4 - 12 args to syscall
+   16 - scratch for cancellation state
+   20 - scratch for return value
+*/
+#define stackadjust 24
+
+#ifndef __socket
+#ifndef NO_WEAK_ALIAS
+#define __socket P(__,socket)
+#else
+#define __socket socket
+#endif
+#endif
+
+	.text
+ENTRY(__socket)
+	addik r1,r1,-stackadjust
+	swi r15,r1,0
+#if NARGS >= 1
+	swi  r5,r1,stackadjust+4
+#endif
+#if NARGS >= 2
+	swi  r6,r1,stackadjust+8
+#endif
+#if NARGS >= 3
+	swi  r7,r1,stackadjust+12
+#endif
+#if NARGS >= 4
+	swi  r8,r1,stackadjust+16
+#endif
+#if NARGS >= 5
+	swi  r9,r1,stackadjust+20
+#endif
+#if NARGS >= 6
+	swi  r10,r1,stackadjust+24
+#endif
+/* The rest of the args (if any) are on the caller's stack already */
+
+#if defined NEED_CANCELLATION && defined CENABLE
+	SINGLE_THREAD_P
+	bnei	r12,L(socket_cancel)
+#endif
+
+	addik	r12,r0,SYS_ify(socketcall)
+	addik	r5,r0,P(SOCKOP_,socket)
+	addik	r6,r1,stackadjust+4
+	brki	r14,8
+	addk	r0,r0,r0
+	lwi	r15,r1,0
+	addik	r1,r1,stackadjust
+	addik   r4,r0,-4095
+	cmpu	r4,r4,r3
+	bgei	r4,SYSCALL_ERROR_LABEL
+	rtsd	r15,8
+	addk	r0,r0,r0
+
+#if defined NEED_CANCELLATION && defined CENABLE
+L(socket_cancel):
+	CENABLE
+	swi	r3,r1,16
+	addik	r12,r0,SYS_ify(socketcall)
+	addik	r5,r0,P(SOCKOP_,socket)
+	addik	r6,r1,stackadjust+4
+	brki	r14,8
+	addk	r0,r0,r0
+	swi	r3,r1,20
+	lwi	r5,r1,16
+	CDISABLE
+	lwi	r3,r1,20
+	lwi	r15,r1,0
+	addik	r1,r1,stackadjust
+	addik   r4,r0,-4095
+	cmpu	r4,r4,r3
+	bgei	r4,SYSCALL_ERROR_LABEL
+	rtsd	r15,8
+	addk	r0,r0,r0
+#endif
+
+PSEUDO_END (__socket)
+
+#ifndef NO_WEAK_ALIAS
+weak_alias (__socket, socket)
+#endif
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/sys/procfs.h b/ports/sysdeps/unix/sysv/linux/microblaze/sys/procfs.h
new file mode 100644
index 0000000..156cd7b
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/sys/procfs.h
@@ -0,0 +1,123 @@
+/* Copyright (C) 1996-2012 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 Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _SYS_PROCFS_H
+#define _SYS_PROCFS_H	1
+
+/* This is somewhat modelled after the file of the same name on SVR4
+   systems.  It provides a definition of the core file format for ELF
+   used on Linux.  It doesn't have anything to do with the /proc file
+   system, even though Linux has one.
+
+   Anyway, the whole purpose of this file is for GDB and GDB only.
+   Don't read too much into it.  Don't use it for anything other than
+   GDB unless you know what you are doing.  */
+
+#include <sys/time.h>
+#include <sys/types.h>
+#include <sys/user.h>
+
+__BEGIN_DECLS
+
+/* Type for a general-purpose register.  */
+typedef unsigned long elf_greg_t;
+
+/* And the whole bunch of them.  We could have used `struct
+   user_regs_struct' directly in the typedef, but tradition says that
+   the register set is an array, which does have some peculiar
+   semantics, so leave it that way.  */
+#define ELF_NGREG (sizeof (struct user_regs_struct) / sizeof(elf_greg_t))
+typedef elf_greg_t elf_gregset_t[ELF_NGREG];
+
+/* Register set for the floating-point registers.  */
+typedef struct user_fpregs_struct elf_fpregset_t;
+
+
+/* Signal info.  */
+struct elf_siginfo
+  {
+    int si_signo;			/* Signal number.  */
+    int si_code;			/* Extra code.  */
+    int si_errno;			/* Errno.  */
+  };
+
+/* Definitions to generate Intel SVR4-like core files.  These mostly
+   have the same names as the SVR4 types with "elf_" tacked on the
+   front to prevent clashes with Linux definitions, and the typedef
+   forms have been avoided.  This is mostly like the SVR4 structure,
+   but more Linuxy, with things that Linux does not support and which
+   GDB doesn't really use excluded.  */
+
+struct elf_prstatus
+  {
+    struct elf_siginfo pr_info;		/* Info associated with signal.  */
+    short int pr_cursig;		/* Current signal.  */
+    unsigned long int pr_sigpend;	/* Set of pending signals.  */
+    unsigned long int pr_sighold;	/* Set of held signals.  */
+    __pid_t pr_pid;
+    __pid_t pr_ppid;
+    __pid_t pr_pgrp;
+    __pid_t pr_sid;
+    struct timeval pr_utime;		/* User time.  */
+    struct timeval pr_stime;		/* System time.  */
+    struct timeval pr_cutime;		/* Cumulative user time.  */
+    struct timeval pr_cstime;		/* Cumulative system time.  */
+    elf_gregset_t pr_reg;		/* GP registers.  */
+    int pr_fpvalid;			/* True if math copro being used.  */
+  };
+
+
+#define ELF_PRARGSZ     (80)    /* Number of chars for args.  */
+
+struct elf_prpsinfo
+  {
+    char pr_state;			/* Numeric process state.  */
+    char pr_sname;			/* Char for pr_state.  */
+    char pr_zomb;			/* Zombie.  */
+    char pr_nice;			/* Nice val.  */
+    unsigned long int pr_flag;		/* Flags.  */
+    unsigned short int pr_uid;
+    unsigned short int pr_gid;
+    int pr_pid, pr_ppid, pr_pgrp, pr_sid;
+    /* Lots missing */
+    char pr_fname[16];			/* Filename of executable.  */
+    char pr_psargs[ELF_PRARGSZ];	/* Initial part of arg list.  */
+  };
+
+/* The rest of this file provides the types for emulation of the
+   Solaris <proc_service.h> interfaces that should be implemented by
+   users of libthread_db.  */
+
+/* Addresses.  */
+typedef void *psaddr_t;
+
+/* Register sets.  Linux has different names.  */
+typedef elf_gregset_t prgregset_t;
+typedef elf_fpregset_t prfpregset_t;
+
+/* We don't have any differences between processes and threads,
+   therefore have only one PID type.  */
+typedef __pid_t lwpid_t;
+
+/* Process status and info.  In the end we do provide typedefs for them.  */
+typedef struct elf_prstatus prstatus_t;
+typedef struct elf_prpsinfo prpsinfo_t;
+
+__END_DECLS
+
+#endif	/* sys/procfs.h */
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/sys/user.h b/ports/sysdeps/unix/sysv/linux/microblaze/sys/user.h
new file mode 100644
index 0000000..79881a9
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/sys/user.h
@@ -0,0 +1,77 @@
+/* Copyright (C) 2009-2012 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 Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _SYS_USER_H
+#define _SYS_USER_H	1
+
+/* The whole purpose of this file is for GDB and GDB only.  Don't read
+   too much into it.  Don't use it for anything other than GDB unless
+   you know what you are doing.  */
+
+struct user_fpregs_struct
+{
+  long int cwd;
+  long int swd;
+  long int twd;
+  long int fip;
+  long int fcs;
+  long int foo;
+  long int fos;
+  long int st_space [20];
+};
+
+struct user_regs_struct
+{
+  unsigned int gpr[32];
+  unsigned int pc;
+  unsigned int msr;
+  unsigned int ear;
+  unsigned int esr;
+  unsigned int fsr;
+  unsigned int btr;
+  unsigned int pvr[12];
+};
+
+struct user
+{
+  struct user_regs_struct	regs;
+  int				u_fpvalid;
+  struct user_fpregs_struct	i387;
+  unsigned long int		u_tsize;
+  unsigned long int		u_dsize;
+  unsigned long int		u_ssize;
+  unsigned long			start_code;
+  unsigned long			start_stack;
+  long int			signal;
+  int				reserved;
+  struct user_regs_struct*	u_ar0;
+  struct user_fpregs_struct*	u_fpstate;
+  unsigned long int		magic;
+  char				u_comm [32];
+  int				u_debugreg [8];
+};
+
+#define PAGE_SHIFT		12
+#define PAGE_SIZE		(1UL << PAGE_SHIFT)
+#define PAGE_MASK		(~(PAGE_SIZE-1))
+#define NBPG			PAGE_SIZE
+#define UPAGES			1
+#define HOST_TEXT_START_ADDR	(u.start_code)
+#define HOST_STACK_END_ADDR	(u.start_stack + u.u_ssize * NBPG)
+
+#endif	/* _SYS_USER_H */
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/syscall.S b/ports/sysdeps/unix/sysv/linux/microblaze/syscall.S
new file mode 100644
index 0000000..46d663e
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/syscall.S
@@ -0,0 +1,37 @@
+/* Copyright (C) 2005-2012 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 Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <sysdep.h>
+
+	.text
+ENTRY (syscall)
+	addk	r12,r0,r5
+	addk	r5,r0,r6
+	addk	r6,r0,r7
+	addk	r7,r0,r8
+	addk	r8,r0,r9
+	addk	r9,r0,r10
+	lwi	r10,r1,28
+	brki	r14,8
+	addk	r0,r0,r0
+	addik	r4,r0,-4095
+	cmpu	r4,r4,r3
+	bgei	r4,SYSCALL_ERROR_LABEL
+	rtsd	r15,8
+	nop
+PSEUDO_END (syscall)
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/syscalls.list b/ports/sysdeps/unix/sysv/linux/microblaze/syscalls.list
new file mode 100644
index 0000000..c69d83b
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/syscalls.list
@@ -0,0 +1,8 @@
+# File name	Caller	Syscall name	Args	Strong name	Weak names
+
+cacheflush	EXTRA	cacheflush	i:iiii	__cacheflush	cacheflush
+oldgetrlimit	EXTRA	getrlimit	i:ip	__old_getrlimit	getrlimit@GLIBC_2.0
+oldsetrlimit	EXTRA	setrlimit	i:ip	__old_setrlimit	setrlimit@GLIBC_2.0
+
+prlimit64	EXTRA	prlimit64	i:iipp	prlimit64
+fanotify_mark	EXTRA	fanotify_mark	i:iiiiis	fanotify_mark
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/sysdep.S b/ports/sysdeps/unix/sysv/linux/microblaze/sysdep.S
new file mode 100644
index 0000000..0765905
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/sysdep.S
@@ -0,0 +1,39 @@
+/* Copyright (C) 2009-2012 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 Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <sysdep.h>
+
+
+/* The following code is only used in the shared library when we
+   compile the reentrant version.  Otherwise each system call defines
+   each own version.  */
+
+#ifndef	PIC
+
+/* The syscall stubs jump here when they detect an error.  */
+
+#undef CALL_MCOUNT
+#define CALL_MCOUNT /* Don't insert the profiling call, it clobbers %d0.  */
+
+	.text
+ENTRY (__syscall_error)
+	rsubk	r3,r3,r0
+	rtsd	r15,8
+	addik	r3,r0,-1	/* delay slot */
+END (__syscall_error)
+#endif /* PIC */
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/sysdep.h b/ports/sysdeps/unix/sysv/linux/microblaze/sysdep.h
new file mode 100644
index 0000000..b4886c9
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/sysdep.h
@@ -0,0 +1,390 @@
+/* Copyright (C) 2005-2012 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 Lesser General Public License as
+   published by the Free Software Foundation; either version 2.1 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <sysdeps/microblaze/sysdep.h>
+#include <sys/syscall.h>
+
+/* Defines RTLD_PRIVATE_ERRNO.  */
+#include <dl-sysdep.h>
+
+/* For Linux we can use the system call table in the header file
+	/usr/include/asm/unistd.h
+   of the kernel.  But these symbols do not follow the SYS_* syntax
+   so we have to redefine the `SYS_ify' macro here.  */
+#undef SYS_ify
+#ifdef __STDC__
+# define SYS_ify(syscall_name)	__NR_##syscall_name
+#else
+# define SYS_ify(syscall_name)	__NR_/**/syscall_name
+#endif
+
+#ifdef __ASSEMBLER__
+
+/* In microblaze ABI function call arguments are passed in registers
+   r5...r10. The return value is stored in r3 (or r3:r4 regiters pair).
+   Linux syscall uses the same convention with the addition that the
+   syscall number is passed in r12. To enter the kernel "brki r14,8"
+   instruction is used.
+   None of the abovementioned registers are presumed across function call
+   or syscall.
+*/
+/* Linux uses a negative return value to indicate syscall errors, unlike
+   most Unices, which use the condition codes' carry flag.
+
+   Since version 2.1 the return value of a system call might be negative
+   even if the call succeeded.  E.g., the `lseek' system call might return
+   a large offset.  Therefore we must not anymore test for < 0, but test
+   for a real error by making sure the value in %d0 is a real error
+   number.  Linus said he will make sure the no syscall returns a value
+   in -1 .. -4095 as a valid result so we can savely test with -4095.  */
+
+/* We don't want the label for the error handler to be visible in the symbol
+   table when we define it here.  */
+#ifdef PIC
+#define SYSCALL_ERROR_LABEL 0f
+#else
+#define SYSCALL_ERROR_LABEL __syscall_error
+#endif
+
+#undef PSEUDO
+#define	PSEUDO(name, syscall_name, args)		\
+  .text;						\
+  ENTRY (name)						\
+    DO_CALL (syscall_name, args);			\
+    addik r12,r0,-4095;					\
+    cmpu  r12,r12,r3;					\
+    bgei r12,SYSCALL_ERROR_LABEL;
+
+#undef PSEUDO_END
+#define PSEUDO_END(name)				\
+  SYSCALL_ERROR_HANDLER;				\
+  END (name)
+
+#undef PSEUDO_NOERRNO
+#define	PSEUDO_NOERRNO(name, syscall_name, args)	\
+  .text;						\
+  ENTRY (name)						\
+    DO_CALL (syscall_name, args);
+
+#undef PSEUDO_END_NOERRNO
+#define PSEUDO_END_NOERRNO(name)			\
+  END (name)
+
+/* The function has to return the error code.  */
+#undef	PSEUDO_ERRVAL
+#define	PSEUDO_ERRVAL(name, syscall_name, args)		\
+  .text;						\
+  ENTRY (name)						\
+    DO_CALL (syscall_name, args);			\
+
+#undef	PSEUDO_END_ERRVAL
+#define	PSEUDO_END_ERRVAL(name) \
+  END (name)
+
+#define ret_NOERRNO \
+    rtsd r15,8; addk r0,r0,r0;
+
+#define ret_ERRVAL \
+    rtsd r15,8; rsubk r3,r3,r0;
+
+#ifdef PIC
+#define SYSCALL_ERROR_LABEL_DCL 0
+# if RTLD_PRIVATE_ERRNO
+#  define SYSCALL_ERROR_HANDLER				\
+SYSCALL_ERROR_LABEL_DCL:					\
+    mfs   r12,rpc;					\
+    addik r12,r12,_GLOBAL_OFFSET_TABLE_+8;		\
+    lwi   r12,r12,rtld_errno@GOT;			\
+    rsubk r3,r3,r0;					\
+    swi	  r3,r12,0;					\
+    rtsd  r15,8;					\
+    addik r3,r0,-1;
+# else /* !RTLD_PRIVATE_ERRNO */
+/* Store (-r3) into errno through the GOT.  */
+#  if defined _LIBC_REENTRANT
+#  define SYSCALL_ERROR_HANDLER				\
+SYSCALL_ERROR_LABEL_DCL:					\
+    addik r1,r1,-16;					\
+    swi   r15,r1,0;					\
+    swi   r20,r1,8;					\
+    rsubk r3,r3,r0;					\
+    swi   r3,r1,12;					\
+    mfs   r20,rpc;					\
+    addik r20,r20,_GLOBAL_OFFSET_TABLE_+8;		\
+    brlid r15,__errno_location@PLT;			\
+    nop;						\
+    lwi   r4,r1,12;					\
+    swi   r4,r3,0;					\
+    lwi   r20,r1,8;					\
+    lwi   r15,r1,0;					\
+    addik r1,r1,16;					\
+    rtsd  r15,8;					\
+    addik r3,r0,-1;
+#  else /* !_LIBC_REENTRANT */
+#  define SYSCALL_ERROR_HANDLER				\
+SYSCALL_ERROR_LABEL_DCL:					\
+    mfs   r12,rpc;					\
+    addik r12,r12,_GLOBAL_OFFSET_TABLE_+8;		\
+    lwi   r12,r12,errno@GOT;				\
+    rsubk r3,r3,r0;					\
+    swi	  r3,r12,0;					\
+    rtsd  r15,8;					\
+    addik r3,r0,-1;
+#  endif /* _LIBC_REENTRANT */
+# endif /* RTLD_PRIVATE_ERRNO */
+#else
+# define SYSCALL_ERROR_HANDLER	/* Nothing here; code in sysdep.S is used.  */
+#endif /* PIC */
+
+#define DO_CALL(syscall_name, args)			      		      \
+    addik r12,r0,SYS_ify (syscall_name);				      \
+    brki  r14,8;							      \
+    addk  r0,r0,r0;
+
+#else /* not __ASSEMBLER__ */
+
+/* Define a macro which expands into the inline wrapper code for a system
+   call.  */
+#undef INLINE_SYSCALL
+#define INLINE_SYSCALL(name, nr, args...)				\
+  ({ INTERNAL_SYSCALL_DECL (sc_err); \
+     unsigned int _sys_result = INTERNAL_SYSCALL (name, sc_err, nr, args);	\
+     if (INTERNAL_SYSCALL_ERROR_P (_sys_result, sc_err))\
+       {								\
+	 __set_errno (INTERNAL_SYSCALL_ERRNO (_sys_result, sc_err));		\
+	 _sys_result = (unsigned int) -1;				\
+       }								\
+     (int) _sys_result; })
+
+#undef INTERNAL_SYSCALL_DECL
+#define INTERNAL_SYSCALL_DECL(err) do { } while (0)
+
+/* Define a macro which expands inline into the wrapper code for a system
+   call.  This use is for internal calls that do not need to handle errors
+   normally.  It will never touch errno.  This returns just what the kernel
+   gave back.  */
+#undef INTERNAL_SYSCALL
+#define INTERNAL_SYSCALL(name, err, nr, args...)	\
+  INTERNAL_SYSCALL_##nr(name,args)
+
+#define SYSCALL_CLOBBERS_6 "r11", "r4", "memory"
+#define SYSCALL_CLOBBERS_5 "r10", SYSCALL_CLOBBERS_6
+#define SYSCALL_CLOBBERS_4 "r9", SYSCALL_CLOBBERS_5
+#define SYSCALL_CLOBBERS_3 "r8", SYSCALL_CLOBBERS_4
+#define SYSCALL_CLOBBERS_2 "r7", SYSCALL_CLOBBERS_3
+#define SYSCALL_CLOBBERS_1 "r6", SYSCALL_CLOBBERS_2
+#define SYSCALL_CLOBBERS_0 "r5", SYSCALL_CLOBBERS_1
+
+#define INTERNAL_SYSCALL_0(name,dummy)			\
+  ({ \
+    register int ret __asm__("r3");			\
+    register int __r12 __asm__("r12") = SYS_ify(name);	\
+    __asm__ __volatile__( "brki r14,8; nop;"		\
+      : "=r"(ret)					\
+      : "r"(__r12)					\
+      : SYSCALL_CLOBBERS_0 ); ret;			\
+  })
+
+#define INTERNAL_SYSCALL_NCS_0(number,dummy)			\
+  ({ \
+    register int ret __asm__("r3");			\
+    register int __r12 __asm__("r12") = number;	\
+    __asm__ __volatile__( "brki r14,8; nop;"		\
+      : "=r"(ret)					\
+      : "r"(__r12)					\
+      : SYSCALL_CLOBBERS_0 ); ret;			\
+  })
+
+#define INTERNAL_SYSCALL_1(name,arg1)			\
+  ({ \
+    register int ret __asm__("r3");			\
+    register int __r12 __asm__("r12") = SYS_ify(name);	\
+    register int __r5 __asm__("r5") = arg1;		\
+    __asm__ __volatile__( "brki r14,8; nop;"		\
+      : "=r"(ret)					\
+      : "r"(__r5), "r"(__r12)				\
+      : SYSCALL_CLOBBERS_1 ); ret;			\
+  })
+
+#define INTERNAL_SYSCALL_NCS_1(number,arg1)			\
+  ({ \
+    register int ret __asm__("r3");			\
+    register int __r12 __asm__("r12") = number;	\
+    register int __r5 __asm__("r5") = arg1;		\
+    __asm__ __volatile__( "brki r14,8; nop;"		\
+      : "=r"(ret)					\
+      : "r"(__r5), "r"(__r12)				\
+      : SYSCALL_CLOBBERS_1 ); ret;			\
+  })
+
+#define INTERNAL_SYSCALL_2(name,arg1,arg2)		\
+  ({ \
+    register int ret __asm__("r3");			\
+    register int __r12 __asm__("r12") = SYS_ify(name);	\
+    register int __r5 __asm__("r5") = arg1;		\
+    register int __r6 __asm__("r6") = arg2;		\
+    __asm__ __volatile__( "brki r14,8; nop;"		\
+      : "=r"(ret)					\
+      : "r"(__r5), "r"(__r6), "r"(__r12)		\
+      : SYSCALL_CLOBBERS_2 ); ret;			\
+  })
+
+#define INTERNAL_SYSCALL_NCS_2(number,arg1,arg2)		\
+  ({ \
+    register int ret __asm__("r3");			\
+    register int __r12 __asm__("r12") = number;	\
+    register int __r5 __asm__("r5") = arg1;		\
+    register int __r6 __asm__("r6") = arg2;		\
+    __asm__ __volatile__( "brki r14,8; nop;"		\
+      : "=r"(ret)					\
+      : "r"(__r5), "r"(__r6), "r"(__r12)		\
+      : SYSCALL_CLOBBERS_2 ); ret;			\
+  })
+
+#define INTERNAL_SYSCALL_3(name,arg1,arg2,arg3)		\
+  ({ \
+    register int ret __asm__("r3");			\
+    register int __r12 __asm__("r12") = SYS_ify(name);	\
+    register int __r5 __asm__("r5") = arg1;		\
+    register int __r6 __asm__("r6") = arg2;		\
+    register int __r7 __asm__("r7") = arg3;		\
+    __asm__ __volatile__( "brki r14,8; nop;"		\
+      : "=r"(ret)					\
+      : "r"(__r5), "r"(__r6), "r"(__r7), "r"(__r12)	\
+      : SYSCALL_CLOBBERS_3 ); ret;			\
+  })
+
+#define INTERNAL_SYSCALL_NCS_3(number,arg1,arg2,arg3)		\
+  ({ \
+    register int ret __asm__("r3");			\
+    register int __r12 __asm__("r12") = number;	        \
+    register int __r5 __asm__("r5") = arg1;		\
+    register int __r6 __asm__("r6") = arg2;		\
+    register int __r7 __asm__("r7") = arg3;		\
+    __asm__ __volatile__( "brki r14,8; nop;"		\
+      : "=r"(ret)					\
+      : "r"(__r5), "r"(__r6), "r"(__r7), "r"(__r12)	\
+      : SYSCALL_CLOBBERS_3 ); ret;			\
+  })
+
+#define INTERNAL_SYSCALL_4(name,arg1,arg2,arg3,arg4)	\
+  ({ \
+    register int ret __asm__("r3");			\
+    register int __r12 __asm__("r12") = SYS_ify(name);	\
+    register int __r5 __asm__("r5") = arg1;		\
+    register int __r6 __asm__("r6") = arg2;		\
+    register int __r7 __asm__("r7") = arg3;		\
+    register int __r8 __asm__("r8") = arg4;		\
+    __asm__ __volatile__( "brki r14,8; nop;"		\
+      : "=r"(ret)					\
+      : "r"(__r5), "r"(__r6), "r"(__r7), "r"(__r8),"r"(__r12)	\
+      : SYSCALL_CLOBBERS_4 ); ret;			\
+  })
+
+#define INTERNAL_SYSCALL_NCS_4(number,arg1,arg2,arg3,arg4)	\
+  ({ \
+    register int ret __asm__("r3");			\
+    register int __r12 __asm__("r12") = number;	\
+    register int __r5 __asm__("r5") = arg1;		\
+    register int __r6 __asm__("r6") = arg2;		\
+    register int __r7 __asm__("r7") = arg3;		\
+    register int __r8 __asm__("r8") = arg4;		\
+    __asm__ __volatile__( "brki r14,8; nop;"		\
+      : "=r"(ret)					\
+      : "r"(__r5), "r"(__r6), "r"(__r7), "r"(__r8),"r"(__r12)	\
+      : SYSCALL_CLOBBERS_4 ); ret;			\
+  })
+
+#define INTERNAL_SYSCALL_5(name,arg1,arg2,arg3,arg4,arg5)	\
+  ({ \
+    register int ret __asm__("r3");			\
+    register int __r12 __asm__("r12") = SYS_ify(name);	\
+    register int __r5 __asm__("r5") = arg1;		\
+    register int __r6 __asm__("r6") = arg2;		\
+    register int __r7 __asm__("r7") = arg3;		\
+    register int __r8 __asm__("r8") = arg4;		\
+    register int __r9 __asm__("r9") = arg5;		\
+    __asm__ __volatile__( "brki r14,8; nop;"		\
+      : "=r"(ret)					\
+      : "r"(__r5), "r"(__r6), "r"(__r7), "r"(__r8),"r"(__r9), "r"(__r12)	\
+      : SYSCALL_CLOBBERS_5 ); ret;			\
+  })
+
+#define INTERNAL_SYSCALL_NCS_5(number,arg1,arg2,arg3,arg4,arg5)	\
+  ({ \
+    register int ret __asm__("r3");			\
+    register int __r12 __asm__("r12") = number;		\
+    register int __r5 __asm__("r5") = arg1;		\
+    register int __r6 __asm__("r6") = arg2;		\
+    register int __r7 __asm__("r7") = arg3;		\
+    register int __r8 __asm__("r8") = arg4;		\
+    register int __r9 __asm__("r9") = arg5;		\
+    __asm__ __volatile__( "brki r14,8; nop;"		\
+      : "=r"(ret)					\
+      : "r"(__r5), "r"(__r6), "r"(__r7), "r"(__r8),"r"(__r9), "r"(__r12)	\
+      : SYSCALL_CLOBBERS_5 ); ret;			\
+  })
+
+#define INTERNAL_SYSCALL_6(name,arg1,arg2,arg3,arg4,arg5,arg6)	\
+  ({ \
+    register int ret __asm__("r3");			\
+    register int __r12 __asm__("r12") = SYS_ify(name);	\
+    register int __r5 __asm__("r5") = arg1;		\
+    register int __r6 __asm__("r6") = arg2;		\
+    register int __r7 __asm__("r7") = arg3;		\
+    register int __r8 __asm__("r8") = arg4;		\
+    register int __r9 __asm__("r9") = arg5;		\
+    register int __r10 __asm__("r10") = arg6;		\
+    __asm__ __volatile__( "brki r14,8; nop;"		\
+      : "=r"(ret)					\
+      : "r"(__r5), "r"(__r6), "r"(__r7), "r"(__r8),"r"(__r9), "r"(__r10), "r"(__r12)	\
+      : SYSCALL_CLOBBERS_6 ); ret;			\
+  })
+
+
+#define INTERNAL_SYSCALL_NCS_6(number,arg1,arg2,arg3,arg4,arg5,arg6)	\
+  ({ \
+    register int ret __asm__("r3");			\
+    register int __r12 __asm__("r12") = number;		\
+    register int __r5 __asm__("r5") = arg1;		\
+    register int __r6 __asm__("r6") = arg2;		\
+    register int __r7 __asm__("r7") = arg3;		\
+    register int __r8 __asm__("r8") = arg4;		\
+    register int __r9 __asm__("r9") = arg5;		\
+    register int __r10 __asm__("r10") = arg6;		\
+    __asm__ __volatile__( "brki r14,8; nop;"		\
+      : "=r"(ret)					\
+      : "r"(__r5), "r"(__r6), "r"(__r7), "r"(__r8),"r"(__r9), "r"(__r10), "r"(__r12)	\
+      : SYSCALL_CLOBBERS_6 ); ret;			\
+  })
+
+#define INTERNAL_SYSCALL_NCS(number, err, nr, args...)		\
+	INTERNAL_SYSCALL_NCS_##nr(number, args)
+
+#undef INTERNAL_SYSCALL_ERROR_P
+#define INTERNAL_SYSCALL_ERROR_P(val, err)		\
+  ((unsigned int) (val) >= -4095U)
+
+#undef INTERNAL_SYSCALL_ERRNO
+#define INTERNAL_SYSCALL_ERRNO(val, err)	(-(val))
+
+/* Pointer mangling is not yet supported for Microblaze.  */
+#define PTR_MANGLE(var) (void) (var)
+#define PTR_DEMANGLE(var) (void) (var)
+
+#endif /* not __ASSEMBLER__ */
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/versionsort64.c b/ports/sysdeps/unix/sysv/linux/microblaze/versionsort64.c
new file mode 100644
index 0000000..144b691
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/versionsort64.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/versionsort64.c>
diff --git a/ports/sysdeps/unix/sysv/linux/microblaze/xstat.c b/ports/sysdeps/unix/sysv/linux/microblaze/xstat.c
new file mode 100644
index 0000000..e9869f5
--- /dev/null
+++ b/ports/sysdeps/unix/sysv/linux/microblaze/xstat.c
@@ -0,0 +1 @@
+#include <sysdeps/unix/sysv/linux/i386/xstat.c>
-- 
1.7.9.5


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]