This patch adds the AVR32 specific headers.

Signed-off-by: Hans-Christian Egtvedt <[EMAIL PROTECTED]>
--- 

diff --git a/include/elf.h b/include/elf.h
index 19805d7..ab90160 100644
--- a/include/elf.h
+++ b/include/elf.h
@@ -354,6 +354,8 @@ typedef struct
 /* NIOS magic number - no EABI available.  */
 #define EM_NIOS32      0xFEBB
 
+#define EM_AVR32       0x18ad
+
 /* V850 backend magic number.  Written in the absense of an ABI.  */
 #define EM_CYGNUS_V850 0x9080
 
@@ -2828,6 +2830,55 @@ typedef Elf32_Addr Elf32_Conflict;
 /* Keep this the last entry.  */
 #define R_V850_NUM             25
 
+/* Atmel AVR32 relocations.  */
+#define R_AVR32_NONE           0
+#define R_AVR32_32             1
+#define R_AVR32_16             2
+#define R_AVR32_8              3
+#define R_AVR32_32_PCREL       4
+#define R_AVR32_16_PCREL       5
+#define R_AVR32_8_PCREL                6
+#define R_AVR32_DIFF32         7
+#define R_AVR32_DIFF16         8
+#define R_AVR32_DIFF8          9
+#define R_AVR32_GOT32          10
+#define R_AVR32_GOT16          11
+#define R_AVR32_GOT8           12
+#define R_AVR32_21S            13
+#define R_AVR32_16U            14
+#define R_AVR32_16S            15
+#define R_AVR32_8S             16
+#define R_AVR32_8S_EXT         17
+#define R_AVR32_22H_PCREL      18
+#define R_AVR32_18W_PCREL      19
+#define R_AVR32_16B_PCREL      20
+#define R_AVR32_16N_PCREL      21
+#define R_AVR32_14UW_PCREL     22
+#define R_AVR32_11H_PCREL      23
+#define R_AVR32_10UW_PCREL     24
+#define R_AVR32_9H_PCREL       25
+#define R_AVR32_9UW_PCREL      26
+#define R_AVR32_HI16           27
+#define R_AVR32_LO16           28
+#define R_AVR32_GOTPC          29
+#define R_AVR32_GOTCALL                30
+#define R_AVR32_LDA_GOT                31
+#define R_AVR32_GOT21S         32
+#define R_AVR32_GOT18SW                33
+#define R_AVR32_GOT16S         34
+#define R_AVR32_GOT7UW         35
+#define R_AVR32_32_CPENT       36
+#define R_AVR32_CPCALL         37
+#define R_AVR32_16_CP          38
+#define R_AVR32_9W_CP          39
+#define R_AVR32_RELATIVE       40
+#define R_AVR32_GLOB_DAT       41
+#define R_AVR32_JMP_SLOT       42
+#define R_AVR32_ALIGN          43
+#define R_AVR32_NUM            44
+
+/* AVR32 dynamic tags */
+#define DT_AVR32_GOTSZ         0x70000001 /* Total size of GOT in bytes */
 
 /* Renesas H8/300 Relocations */
 #define R_H8_NONE       0
diff --git a/libc/sysdeps/linux/avr32/bits/atomic.h 
b/libc/sysdeps/linux/avr32/bits/atomic.h
new file mode 100644
index 0000000..e6be41f
--- /dev/null
+++ b/libc/sysdeps/linux/avr32/bits/atomic.h
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2007 Atmel Corporation
+ *
+ * This file is subject to the terms and conditions of the GNU Lesser General
+ * Public License.  See the file "COPYING.LIB" in the main directory of this
+ * archive for more details.
+ */
+#ifndef _AVR32_BITS_ATOMIC_H
+#define _AVR32_BITS_ATOMIC_H 1
+
+#include <inttypes.h>
+
+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;
+
+#define __arch_compare_and_exchange_val_8_acq(mem, newval, oldval)     \
+       (abort(), 0)
+
+#define __arch_compare_and_exchange_val_16_acq(mem, newval, oldval)    \
+       (abort(), 0)
+
+#define __arch_compare_and_exchange_val_32_acq(mem, newval, oldval)    \
+       ({                                                              \
+               __typeof__(*(mem)) __prev;                              \
+               __asm__ __volatile__(                                   \
+                       "/* __arch_compare_and_exchange_val_32_acq */\n" \
+                       "1:     ssrf    5\n"                            \
+                       "       ld.w    %[result], %[m]\n"              \
+                       "       cp.w    %[result], %[old]\n"            \
+                       "       brne    2f\n"                           \
+                       "       stcond  %[m], %[new]\n"                 \
+                       "       brne    1b\n"                           \
+                       "2:"                                            \
+                       : [result] "=&r"(__result), [m] "=m"(*(mem))    \
+                       : "m"(*(mem)), [old] "ir"(oldval),              \
+                         [new] "r"(newval)                             \
+                       : "memory", "cc");                              \
+               __prev;                                                 \
+       })
+
+#define __arch_compare_and_exchange_val_64_acq(mem, newval, oldval)    \
+       (abort(), 0)
+
+#define __arch_exchange_32_acq(mem, newval)                            \
+       ({                                                              \
+               __typeof__(*(mem)) __oldval;                            \
+               __asm__ __volatile__(                                   \
+                       "/*__arch_exchange_32_acq */\n"                 \
+                       "       xchg    %[old], %[m], %[new]"           \
+                       : [old] "=&r"(__oldval)                         \
+                       : [m] "r"(mem), [new] "r"(newval)               \
+                       : "memory");                                    \
+               __oldval;                                               \
+       })
+
+#define __arch_atomic_exchange_and_add_32(mem, value)                  \
+       ({                                                              \
+               __typeof__(*(mem)) __oldval, __tmp;                     \
+               __asm__ __volatile__(                                   \
+                       "/* __arch_atomic_exchange_and_add_32 */\n"     \
+                       "1:     ssrf    5\n"                            \
+                       "       ld.w    %[old], %[m]\n"                 \
+                       "       add     %[tmp], %[old], %[val]\n"       \
+                       "       stcond  %[m], %[tmp]\n"                 \
+                       "       brne    1b"                             \
+                       : [old] "=&r"(__oldval), [tmp] "=&r"(__tmp),    \
+                         [m] "=m"(*(mem))                              \
+                       : "m"(*(mem)), [val] "r"(value)                 \
+                       : "memory", "cc");                              \
+               __oldval;                                               \
+       })
+
+#define __arch_atomic_decrement_if_positive_32(mem)                    \
+       ({                                                              \
+               __typeof__(*(mem)) __oldval, __tmp;                     \
+               __asm__ __volatile__(                                   \
+                       "/* __arch_atomic_decrement_if_positive_32 */\n" \
+                       "1:     ssrf    5\n"                            \
+                       "       ld.w    %[old], %[m]\n"                 \
+                       "       sub     %[tmp], %[old], 1\n"            \
+                       "       brlt    2f\n"                           \
+                       "       stcond  %[m], %[tmp]\n"                 \
+                       "       brne    1b"                             \
+                       "2:"                                            \
+                       : [old] "=&r"(__oldval), [tmp] "=&r"(__tmp),    \
+                         [m] "=m"(*(mem))                              \
+                       : "m"(*(mem))                                   \
+                       : "memory", "cc");                              \
+               __oldval;                                               \
+       })
+
+#define atomic_exchange_acq(mem, newval)                               \
+       ({                                                              \
+               if (sizeof(*(mem)) != 4)                                \
+                       abort();                                        \
+               __arch_exchange_32_acq(mem, newval);                    \
+       })
+
+#define atomic_exchange_and_add(mem, newval)                           \
+       ({                                                              \
+               if (sizeof(*(mem)) != 4)                                \
+                       abort();                                        \
+               __arch_atomic_exchange_and_add_32(mem, newval);         \
+       })
+
+#define atomic_decrement_if_positive(mem)                              \
+       ({                                                              \
+               if (sizeof(*(mem)) != 4)                                \
+                       abort();                                        \
+               __arch_atomic_decrement_if_positive_32(mem);            \
+       })
+
+#endif /* _AVR32_BITS_ATOMIC_H */
diff --git a/libc/sysdeps/linux/avr32/bits/byteswap.h 
b/libc/sysdeps/linux/avr32/bits/byteswap.h
new file mode 100644
index 0000000..1c030b9
--- /dev/null
+++ b/libc/sysdeps/linux/avr32/bits/byteswap.h
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2005 Atmel Corporation
+ *
+ * This file is subject to the terms and conditions of the GNU Lesser General
+ * Public License.  See the file "COPYING.LIB" in the main directory of this
+ * archive for more details.
+ */
+
+#if !defined _BYTESWAP_H && !defined _NETINET_IN_H
+# error "Never use <bits/byteswap.h> directly; include <byteswap.h> instead."
+#endif
+
+#ifndef _BITS_BYTESWAP_H
+#define _BITS_BYTESWAP_H 1
+
+/* Swap bytes in 16 bit value.  */
+#if defined __GNUC__
+# define __bswap_16(x) (__extension__ __builtin_bswap_16(x))
+#else
+/* This is better than nothing.  */
+static __inline unsigned short int
+__bswap_16 (unsigned short int __bsx)
+{
+       return ((((__bsx) >> 8) & 0xff) | (((__bsx) & 0xff) << 8));
+}
+#endif
+
+/* Swap bytes in 32 bit value.  */
+#if defined __GNUC__
+# define __bswap_32(x) (__extension__ __builtin_bswap_32(x))
+#else
+static __inline unsigned int
+__bswap_32 (unsigned int __bsx)
+{
+  return ((((__bsx) & 0xff000000) >> 24) | (((__bsx) & 0x00ff0000) >>  8) |
+         (((__bsx) & 0x0000ff00) <<  8) | (((__bsx) & 0x000000ff) << 24));
+}
+#endif
+
+#if defined __GNUC__
+/* Swap bytes in 64 bit value.  */
+# define __bswap_constant_64(x)                                \
+       ((((x) & 0xff00000000000000ull) >> 56)          \
+        | (((x) & 0x00ff000000000000ull) >> 40)        \
+        | (((x) & 0x0000ff0000000000ull) >> 24)        \
+        | (((x) & 0x000000ff00000000ull) >> 8)         \
+        | (((x) & 0x00000000ff000000ull) << 8)         \
+        | (((x) & 0x0000000000ff0000ull) << 24)        \
+        | (((x) & 0x000000000000ff00ull) << 40)        \
+        | (((x) & 0x00000000000000ffull) << 56))
+
+# define __bswap_64(x)                                                 \
+       (__extension__                                                  \
+        ({                                                             \
+                union {                                                \
+                        __extension__ unsigned long long int __ll;     \
+                        unsigned int __l[2];                           \
+                } __w, __r;                                            \
+                if (__builtin_constant_p(x))                           \
+                        __r.__ll = __bswap_constant_64(x);             \
+                else {                                                 \
+                        __w.__ll = (x);                                \
+                        __r.__l[0] = __bswap_32(__w.__l[1]);           \
+                        __r.__l[1] = __bswap_32(__w.__l[0]);           \
+                }                                                      \
+                __r.__ll;                                              \
+        }))
+#endif
+
+#endif /* _BITS_BYTESWAP_H */
diff --git a/libc/sysdeps/linux/avr32/bits/endian.h 
b/libc/sysdeps/linux/avr32/bits/endian.h
new file mode 100644
index 0000000..7bb6358
--- /dev/null
+++ b/libc/sysdeps/linux/avr32/bits/endian.h
@@ -0,0 +1,7 @@
+/* AVR32 is big-endian */
+
+#ifndef _ENDIAN_H
+# error "Never use <bits/endian.h> directly; include <endian.h> instead."
+#endif
+
+#define __BYTE_ORDER __BIG_ENDIAN
diff --git a/libc/sysdeps/linux/avr32/bits/fcntl.h 
b/libc/sysdeps/linux/avr32/bits/fcntl.h
new file mode 100644
index 0000000..1abff17
--- /dev/null
+++ b/libc/sysdeps/linux/avr32/bits/fcntl.h
@@ -0,0 +1,165 @@
+#ifndef _FCNTL_H
+# error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
+#endif
+
+#include <sys/types.h>
+
+/*
+ * open/fcntl - O_SYNC is only implemented on blocks devices and on files
+ * located on an ext2 file system
+ */
+#define O_ACCMODE      00000003
+#define O_RDONLY       00000000
+#define O_WRONLY       00000001
+#define O_RDWR         00000002
+#define O_CREAT                00000100        /* not fcntl */
+#define O_EXCL         00000200        /* not fcntl */
+#define O_NOCTTY       00000400        /* not fcntl */
+#define O_TRUNC                00001000        /* not fcntl */
+#define O_APPEND       00002000
+#define O_NONBLOCK     00004000
+#define O_NDELAY       O_NONBLOCK
+#define O_SYNC         00010000
+#define O_ASYNC                00020000
+
+#ifdef __USE_GNU
+# define O_DIRECT      00040000        /* must be a directory */
+# define O_DIRECTORY   00200000        /* direct disk access */
+# define O_NOFOLLOW    00400000        /* don't follow links */
+# define O_NOATIME     01000000        /* don't set atime */
+#endif
+
+#ifdef __USE_LARGEFILE64
+# define O_LARGEFILE   00100000
+#endif
+
+/* For now Linux has synchronisity options for data and read operations.
+   We define the symbols here but let them do the same as O_SYNC since
+   this is a superset. */
+#if defined __USE_POSIX199309 || defined __USE_UNIX98
+# define O_DSYNC       O_SYNC  /* Synchronize data.  */
+# define O_RSYNC       O_SYNC  /* Synchronize read operations.  */
+#endif
+
+#define F_DUPFD                0       /* dup */
+#define F_GETFD                1       /* get close_on_exec */
+#define F_SETFD                2       /* set/clear close_on_exec */
+#define F_GETFL                3       /* get file->f_flags */
+#define F_SETFL                4       /* set file->f_flags */
+
+#ifndef __USE_FILE_OFFSET64
+# define F_GETLK       5
+# define F_SETLK       6
+# define F_SETLKW      7
+#else
+# define F_GETLK       F_GETLK64
+# define F_SETLK       F_SETLK64
+# define F_SETLKW      F_SETLKW64
+#endif
+#define F_GETLK64      12      /*  using 'struct flock64' */
+#define F_SETLK64      13
+#define F_SETLKW64     14
+
+#if defined __USE_BSD || defined __USE_XOPEN2K
+# define F_SETOWN      8       /*  for sockets. */
+# define F_GETOWN      9       /*  for sockets. */
+#endif
+
+#ifdef __USE_GNU
+# define F_SETSIG      10      /*  for sockets. */
+# define F_GETSIG      11      /*  for sockets. */
+#endif
+
+#ifdef __USE_GNU
+# define F_SETLEASE    1024    /* Set a lease.  */
+# define F_GETLEASE    1025    /* Enquire what lease is active.  */
+# define F_NOTIFY      1026    /* Request notfications on a directory.  */
+#endif
+
+/* for F_[GET|SET]FL */
+#define FD_CLOEXEC     1       /* actually anything with low bit set goes */
+
+/* for posix fcntl() and lockf() */
+#define F_RDLCK                0
+#define F_WRLCK                1
+#define F_UNLCK                2
+
+/* for old implementation of bsd flock () */
+#define F_EXLCK                4       /* or 3 */
+#define F_SHLCK                8       /* or 4 */
+
+/* for leases */
+#define F_INPROGRESS   16
+
+#ifdef __USE_BSD
+/* operations for bsd flock(), also used by the kernel implementation */
+# define LOCK_SH       1       /* shared lock */
+# define LOCK_EX       2       /* exclusive lock */
+# define LOCK_NB       4       /* or'd with one of the above to prevent
+                                  blocking */
+# define LOCK_UN       8       /* remove lock */
+#endif
+
+#ifdef __USE_GNU
+# define LOCK_MAND     32      /* This is a mandatory flock */
+# define LOCK_READ     64      /* ... Which allows concurrent
+                                      read operations */
+# define LOCK_WRITE    128     /* ... Which allows concurrent
+                                      write operations */
+# define LOCK_RW       192     /* ... Which allows concurrent
+                                      read & write ops */
+#endif
+
+#ifdef __USE_GNU
+/* Types of directory notifications that may be requested with F_NOTIFY.  */
+# define DN_ACCESS     0x00000001      /* File accessed.  */
+# define DN_MODIFY     0x00000002      /* File modified.  */
+# define DN_CREATE     0x00000004      /* File created.  */
+# define DN_DELETE     0x00000008      /* File removed.  */
+# define DN_RENAME     0x00000010      /* File renamed.  */
+# define DN_ATTRIB     0x00000020      /* File changed attibutes.  */
+# define DN_MULTISHOT  0x80000000      /* Don't remove notifier.  */
+#endif
+
+struct flock {
+       short           l_type;
+       short           l_whence;
+#ifndef __USE_FILE_OFFSET64
+       __off_t         l_start;
+       __off_t         l_len;
+#else
+       __off64_t       l_start;
+       __off64_t       l_len;
+#endif
+       __pid_t         l_pid;
+};
+
+#ifdef __USE_LARGEFILE64
+struct flock64 {
+       short           l_type;
+       short           l_whence;
+       __off64_t       l_start;
+       __off64_t       l_len;
+       __pid_t         l_pid;
+};
+#endif
+
+/* Define some more compatibility macros to be backward compatible with
+ *    BSD systems which did not managed to hide these kernel macros.  */
+#ifdef  __USE_BSD
+# define FAPPEND        O_APPEND
+# define FFSYNC         O_FSYNC
+# define FASYNC         O_ASYNC
+# define FNONBLOCK      O_NONBLOCK
+# define FNDELAY        O_NDELAY
+#endif /* Use BSD.  */
+
+/* Advise to `posix_fadvise'.  */
+#ifdef __USE_XOPEN2K
+# define POSIX_FADV_NORMAL      0 /* No further special treatment.  */
+# define POSIX_FADV_RANDOM      1 /* Expect random page references.  */
+# define POSIX_FADV_SEQUENTIAL  2 /* Expect sequential page references.  */
+# define POSIX_FADV_WILLNEED    3 /* Will need these pages.  */
+# define POSIX_FADV_DONTNEED    4 /* Don't need these pages.  */
+# define POSIX_FADV_NOREUSE     5 /* Data will be accessed once.  */
+#endif
diff --git a/libc/sysdeps/linux/avr32/bits/kernel_stat.h 
b/libc/sysdeps/linux/avr32/bits/kernel_stat.h
new file mode 100644
index 0000000..f97d23b
--- /dev/null
+++ b/libc/sysdeps/linux/avr32/bits/kernel_stat.h
@@ -0,0 +1,67 @@
+#ifndef _BITS_STAT_STRUCT_H
+#define _BITS_STAT_STRUCT_H
+
+#ifndef _LIBC
+#error bits/kernel_stat.h is for internal uClibc use only!
+#endif
+
+/*
+ * This file provides struct stat, taken from kernel 2.6.4. Verified
+ * to match kernel 2.6.22.
+ */
+
+struct kernel_stat {
+        unsigned long          st_dev;
+        unsigned long          st_ino;
+        unsigned short         st_mode;
+        unsigned short         st_nlink;
+        unsigned short         st_uid;
+        unsigned short         st_gid;
+        unsigned long          st_rdev;
+        unsigned long          st_size;
+        unsigned long          st_blksize;
+        unsigned long          st_blocks;
+        unsigned long          st_atime;
+        unsigned long          st_atime_nsec;
+        unsigned long          st_mtime;
+        unsigned long          st_mtime_nsec;
+        unsigned long          st_ctime;
+        unsigned long          st_ctime_nsec;
+        unsigned long          __unused4;
+        unsigned long          __unused5;
+};
+
+#define STAT_HAVE_NSEC 1
+
+struct kernel_stat64 {
+       unsigned long long      st_dev;
+
+       unsigned long long      st_ino;
+       unsigned int            st_mode;
+       unsigned int            st_nlink;
+
+       unsigned long           st_uid;
+       unsigned long           st_gid;
+
+       unsigned long long      st_rdev;
+
+       long long               st_size;
+       unsigned long           __pad1;
+       unsigned long           st_blksize;
+
+       unsigned long long      st_blocks;
+
+       unsigned long           st_atime;
+       unsigned long           st_atime_nsec;
+
+       unsigned long           st_mtime;
+       unsigned long           st_mtime_nsec;
+
+       unsigned long           st_ctime;
+       unsigned long           st_ctime_nsec;
+
+       unsigned long           __unused1;
+       unsigned long           __unused2;
+};
+
+#endif /* _BITS_STAT_STRUCT_H */
diff --git a/libc/sysdeps/linux/avr32/bits/kernel_types.h 
b/libc/sysdeps/linux/avr32/bits/kernel_types.h
new file mode 100644
index 0000000..f7d8b52
--- /dev/null
+++ b/libc/sysdeps/linux/avr32/bits/kernel_types.h
@@ -0,0 +1,55 @@
+/* Note that we use the exact same include guard #define names
+ * as asm/posix_types.h.  This will avoid gratuitous conflicts
+ * with the posix_types.h kernel header, and will ensure that
+ * our private content, and not the kernel header, will win.
+ *  -Erik
+ */
+#ifndef __ASM_AVR32_POSIX_TYPES_H
+#define __ASM_AVR32_POSIX_TYPES_H
+
+/*
+ * This file is generally used by user-level software, so you need to
+ * be a little careful about namespace pollution etc.  Also, we cannot
+ * assume GCC is being used.
+ */
+
+typedef unsigned long          __kernel_dev_t;
+typedef unsigned long          __kernel_ino_t;
+typedef unsigned short         __kernel_mode_t;
+typedef unsigned short         __kernel_nlink_t;
+typedef long                   __kernel_off_t;
+typedef int                    __kernel_pid_t;
+typedef unsigned short         __kernel_ipc_pid_t;
+typedef unsigned int           __kernel_uid_t;
+typedef unsigned int           __kernel_gid_t;
+typedef unsigned long          __kernel_size_t;
+typedef long                   __kernel_ssize_t;
+typedef int                    __kernel_ptrdiff_t;
+typedef long                   __kernel_time_t;
+typedef long                   __kernel_suseconds_t;
+typedef long                   __kernel_clock_t;
+typedef int                    __kernel_timer_t;
+typedef int                    __kernel_clockid_t;
+typedef int                    __kernel_daddr_t;
+typedef char *                 __kernel_caddr_t;
+typedef unsigned short         __kernel_uid16_t;
+typedef unsigned short         __kernel_gid16_t;
+typedef unsigned int           __kernel_uid32_t;
+typedef unsigned int           __kernel_gid32_t;
+typedef unsigned short         __kernel_old_uid_t;
+typedef unsigned short         __kernel_old_gid_t;
+typedef unsigned short         __kernel_old_dev_t;
+
+#ifdef __GNUC__
+typedef long long              __kernel_loff_t;
+#endif
+
+typedef struct {
+#if defined(__USE_ALL)
+       int     val[2];
+#else
+       int     __val[2];
+#endif
+} __kernel_fsid_t;
+
+#endif /* __ASM_AVR32_POSIX_TYPES_H */
diff --git a/libc/sysdeps/linux/avr32/bits/mman.h 
b/libc/sysdeps/linux/avr32/bits/mman.h
new file mode 100644
index 0000000..5f6e3c3
--- /dev/null
+++ b/libc/sysdeps/linux/avr32/bits/mman.h
@@ -0,0 +1,103 @@
+/* Definitions for POSIX memory map interface.  Linux/AVR32 version.
+   Copyright (C) 1997, 2000 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, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#ifndef _SYS_MMAN_H
+# error "Never include this file directly.  Use <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 0x0100          /* Stack-like segment.  */
+# define MAP_DENYWRITE 0x0800          /* ETXTBSY */
+# define MAP_EXECUTABLE        0x1000          /* Mark it as an executable.  */
+# define MAP_LOCKED    0x2000          /* Lock the mapping.  */
+# define MAP_NORESERVE 0x4000          /* Don't check for reservations.  */
+# define MAP_POPULATE  0x8000          /* populate (prefault) pagetables */
+# define MAP_NONBLOCK  0x10000         /* do not block on IO */
+#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
+
+/* Advise 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.  */
+#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/libc/sysdeps/linux/avr32/bits/setjmp.h 
b/libc/sysdeps/linux/avr32/bits/setjmp.h
new file mode 100644
index 0000000..78348a3
--- /dev/null
+++ b/libc/sysdeps/linux/avr32/bits/setjmp.h
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2004-2005 Atmel Corporation
+ *
+ * This file is subject to the terms and conditions of the GNU Lesser General
+ * Public License.  See the file "COPYING.LIB" in the main directory of this
+ * archive for more details.
+ */
+#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
+
+#ifndef _ASM
+/*
+ * The jump buffer contains r0-r7, sr, sp and lr. Other registers are
+ * not saved.
+ */
+typedef int __jmp_buf[11];
+#endif
+
+#define __JMP_BUF_SP   4
+
+/* Test if longjmp to JMPBUF would unwind the frame containing a local
+   variable at ADDRESS.  */
+#define _JMPBUF_UNWINDS(jmpbuf, address) \
+  ((void *)(address) < (void *)(jmpbuf[__JMP_BUF_SP]))
+
+#endif /* _BITS_SETJMP_H */
diff --git a/libc/sysdeps/linux/avr32/bits/stackinfo.h 
b/libc/sysdeps/linux/avr32/bits/stackinfo.h
new file mode 100644
index 0000000..29b8452
--- /dev/null
+++ b/libc/sysdeps/linux/avr32/bits/stackinfo.h
@@ -0,0 +1,28 @@
+/* Copyright (C) 1999 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, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+/* This file contains a bit of information about the stack allocation
+   of the processor.  */
+
+#ifndef _STACKINFO_H
+#define _STACKINFO_H   1
+
+/* On AVR32 the stack grows down. */
+#define _STACK_GROWS_DOWN      1
+
+#endif /* stackinfo.h */
diff --git a/libc/sysdeps/linux/avr32/bits/syscalls.h 
b/libc/sysdeps/linux/avr32/bits/syscalls.h
new file mode 100644
index 0000000..22ac059
--- /dev/null
+++ b/libc/sysdeps/linux/avr32/bits/syscalls.h
@@ -0,0 +1,143 @@
+#ifndef _BITS_SYSCALLS_H
+#define _BITS_SYSCALLS_H
+#ifndef _SYSCALL_H
+# error "Never use <bits/syscalls.h> directly; include <sys/syscall.h> 
instead."
+#endif
+
+/*
+ * This includes the `__NR_<name>' syscall numbers taken from the
+ * Linux kernel header files. It also defines the traditional
+ * `SYS_<name>' macros for older programs.
+ */
+#include <bits/sysnum.h>
+
+#ifndef __ASSEMBLER__
+
+#include <errno.h>
+
+#define SYS_ify(syscall_name) (__NR_##syscall_name)
+
+#undef _syscall0
+#define _syscall0(type,name)                           \
+       type name(void)                                 \
+       {                                               \
+               return (type)(INLINE_SYSCALL(name, 0)); \
+       }
+
+#undef _syscall1
+#define _syscall1(type,name,type1,arg1)                                \
+       type name(type1 arg1)                                   \
+       {                                                       \
+               return (type)(INLINE_SYSCALL(name, 1, arg1));   \
+       }
+
+#undef _syscall2
+#define _syscall2(type,name,type1,arg1,type2,arg2)                     \
+       type name(type1 arg1, type2 arg2)                               \
+       {                                                               \
+               return (type)(INLINE_SYSCALL(name, 2, arg1, arg2));     \
+       }
+
+#undef _syscall3
+#define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3)          \
+       type name(type1 arg1, type2 arg2, type3 arg3)                   \
+       {                                                               \
+               return (type)(INLINE_SYSCALL(name, 3, arg1,             \
+                                            arg2, arg3));              \
+       }
+
+#undef _syscall4
+#define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,          \
+                 type4,arg4)                                           \
+       type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4)       \
+       {                                                               \
+               return (type)(INLINE_SYSCALL(name, 4, arg1, arg2,       \
+                                            arg3, arg4));              \
+       }
+
+#undef _syscall5
+#define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,          \
+                 type4,arg4,type5,arg5)                                \
+       type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4,       \
+                 type5 arg5)                                           \
+       {                                                               \
+               return (type)(INLINE_SYSCALL(name, 5, arg1, arg2,       \
+                                            arg3, arg4, arg5));        \
+       }
+
+#undef _syscall6
+#define _syscall6(type,name,type1,arg1,type2,arg2,type3,arg3,          \
+                 type4,arg4,type5,arg5,type6,arg6)                     \
+       type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4,       \
+                 type5 arg5, type6 arg6)                               \
+       {                                                               \
+               return (type)(INLINE_SYSCALL(name, 6, arg1, arg2, arg3, \
+                                            arg4, arg5, arg6));        \
+       }
+
+#undef unlikely
+#define unlikely(x) __builtin_expect((x), 0)
+
+#undef INLINE_SYSCALL
+#define INLINE_SYSCALL(name, nr, args...)                              \
+       ({                                                              \
+               unsigned _sys_result = INTERNAL_SYSCALL(name, , nr, args); \
+               if (unlikely(INTERNAL_SYSCALL_ERROR_P(_sys_result, ))) { \
+                       __set_errno(INTERNAL_SYSCALL_ERRNO(_sys_result, )); \
+                       _sys_result = (unsigned int) -1;                \
+               }                                                       \
+               (int) _sys_result;                                      \
+       })
+
+#undef INTERNAL_SYSCALL_DECL
+#define INTERNAL_SYSCALL_DECL(err) do { } while(0)
+
+#undef INTERNAL_SYSCALL
+#define INTERNAL_SYSCALL(name, err, nr, args...)                       \
+       ({                                                              \
+               register int _a1 asm ("r12");                           \
+               register int _scno asm("r8") = SYS_ify(name);           \
+               LOAD_ARGS_##nr (args);                                  \
+               asm volatile ("scall    /* syscall " #name " */"        \
+                             : "=r" (_a1)                              \
+                             : "r"(_scno) ASM_ARGS_##nr                \
+                             : "cc", "memory");                        \
+               _a1;                                                    \
+       })
+
+#undef INTERNAL_SYSCALL_ERROR_P
+#define INTERNAL_SYSCALL_ERROR_P(val, err)             \
+       ((unsigned int)(val) >= 0xfffff001U)
+
+#undef INTERNAL_SYSCALL_ERRNO
+#define INTERNAL_SYSCALL_ERRNO(val, errr) (-(val))
+
+#define LOAD_ARGS_0() do { } while(0)
+#define ASM_ARGS_0
+#define LOAD_ARGS_1(a1)                                        \
+       _a1 = (int) (a1);                               \
+       LOAD_ARGS_0()
+#define ASM_ARGS_1     ASM_ARGS_0, "r"(_a1)
+#define LOAD_ARGS_2(a1, a2)                            \
+       register int _a2 asm("r11") = (int)(a2);        \
+       LOAD_ARGS_1(a1)
+#define ASM_ARGS_2     ASM_ARGS_1, "r"(_a2)
+#define LOAD_ARGS_3(a1, a2, a3)                                \
+       register int _a3 asm("r10") = (int)(a3);        \
+       LOAD_ARGS_2(a1, a2)
+#define ASM_ARGS_3     ASM_ARGS_2, "r"(_a3)
+#define LOAD_ARGS_4(a1, a2, a3, a4)                    \
+       register int _a4 asm("r9") = (int)(a4);         \
+       LOAD_ARGS_3(a1, a2, a3)
+#define ASM_ARGS_4     ASM_ARGS_3, "r"(_a4)
+#define LOAD_ARGS_5(a1, a2, a3, a4, a5)                        \
+       register int _a5 asm("r5") = (int)(a5);         \
+       LOAD_ARGS_4(a1, a2, a3, a4)
+#define ASM_ARGS_5     ASM_ARGS_4, "r"(_a5)
+#define LOAD_ARGS_6(a1, a2, a3, a4, a5, a6)            \
+       register int _a6 asm("r3") = (int)(a6);         \
+       LOAD_ARGS_5(a1, a2, a3, a4, a5)
+#define ASM_ARGS_6     ASM_ARGS_5, "r"(_a6)
+
+#endif /* __ASSEMBLER__ */
+#endif /* _BITS_SYSCALLS_H */
diff --git a/libc/sysdeps/linux/avr32/bits/uClibc_arch_features.h 
b/libc/sysdeps/linux/avr32/bits/uClibc_arch_features.h
new file mode 100644
index 0000000..e95e8a5
--- /dev/null
+++ b/libc/sysdeps/linux/avr32/bits/uClibc_arch_features.h
@@ -0,0 +1,45 @@
+/*
+ * Track misc arch-specific features that aren't config options
+ */
+
+#ifndef _BITS_UCLIBC_ARCH_FEATURES_H
+#define _BITS_UCLIBC_ARCH_FEATURES_H
+
+/* instruction used when calling abort() to kill yourself */
+/* trigger illegal instruction exception, same as BUG in Linux */
+#define __UCLIBC_ABORT_INSTRUCTION__ ".short 0x5df0"
+
+/* can your target use syscall6() for mmap ? */
+#define __UCLIBC_MMAP_HAS_6_ARGS__
+
+/* does your target use syscall4() for truncate64 ? (32bit arches only) */
+#undef __UCLIBC_TRUNCATE64_HAS_4_ARGS__
+
+/* does your target have a broken create_module() ? */
+#undef __UCLIBC_BROKEN_CREATE_MODULE__
+
+/* does your target have to worry about older [gs]etrlimit() ? */
+#undef __UCLIBC_HANDLE_OLDER_RLIMIT__
+
+/* does your target prefix all symbols with an _ ? */
+#define __UCLIBC_NO_UNDERSCORES__
+
+/* does your target have an asm .set ? */
+#define __UCLIBC_HAVE_ASM_SET_DIRECTIVE__
+
+/* define if target doesn't like .global */
+#undef __UCLIBC_ASM_GLOBAL_DIRECTIVE__
+
+/* define if target supports .weak */
+#define __UCLIBC_HAVE_ASM_WEAK_DIRECTIVE__
+
+/* define if target supports .weakext */
+#undef __UCLIBC_HAVE_ASM_WEAKEXT_DIRECTIVE__
+
+/* needed probably only for ppc64 */
+#undef __UCLIBC_HAVE_ASM_GLOBAL_DOT_NAME__
+
+/* define if target supports IEEE signed zero floats */
+#define __UCLIBC_HAVE_SIGNED_ZERO__
+
+#endif /* _BITS_UCLIBC_ARCH_FEATURES_H */
diff --git a/libc/sysdeps/linux/avr32/bits/wordsize.h 
b/libc/sysdeps/linux/avr32/bits/wordsize.h
new file mode 100644
index 0000000..1b5842a
--- /dev/null
+++ b/libc/sysdeps/linux/avr32/bits/wordsize.h
@@ -0,0 +1 @@
+#define __WORDSIZE     32
diff --git a/libc/sysdeps/linux/avr32/sys/elf.h 
b/libc/sysdeps/linux/avr32/sys/elf.h
new file mode 100644
index 0000000..faa7310
--- /dev/null
+++ b/libc/sysdeps/linux/avr32/sys/elf.h
@@ -0,0 +1,26 @@
+/* Copyright (C) 1996, 1997, 1999, 2001 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, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#ifndef _SYS_ELF_H
+#define _SYS_ELF_H     1
+
+#warning "This header is obsolete; use <sys/procfs.h> instead."
+
+#include <sys/procfs.h>
+
+#endif /* sys/elf.h */
diff --git a/libc/sysdeps/linux/avr32/sys/procfs.h 
b/libc/sysdeps/linux/avr32/sys/procfs.h
new file mode 100644
index 0000000..3b37363
--- /dev/null
+++ b/libc/sysdeps/linux/avr32/sys/procfs.h
@@ -0,0 +1,123 @@
+/* Copyright (C) 1996, 1997, 1999, 2001 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, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#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 <features.h>
+#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' 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) / sizeof(elf_greg_t))
+typedef elf_greg_t elf_gregset_t[ELF_NGREG];
+
+/* Register set for the floating-point registers.  */
+typedef struct user_fpregs 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/libc/sysdeps/linux/avr32/sys/ucontext.h 
b/libc/sysdeps/linux/avr32/sys/ucontext.h
new file mode 100644
index 0000000..82c7fe2
--- /dev/null
+++ b/libc/sysdeps/linux/avr32/sys/ucontext.h
@@ -0,0 +1,90 @@
+/* Copyright (C) 1998, 1999, 2001 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, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+/* Linux/AVR32 ABI compliant context switching support.  */
+
+#ifndef _SYS_UCONTEXT_H
+#define _SYS_UCONTEXT_H        1
+
+#include <features.h>
+#include <signal.h>
+#include <sys/procfs.h>
+#include <bits/sigcontext.h>
+
+typedef int greg_t;
+
+/* Number of general registers.  */
+#define NGREG  16
+
+/* Container for all general registers.  */
+typedef elf_gregset_t gregset_t;
+
+/* Number of each register is the `gregset_t' array.  */
+enum
+{
+  R0 = 0,
+#define R0     R0
+  R1 = 1,
+#define R1     R1
+  R2 = 2,
+#define R2     R2
+  R3 = 3,
+#define R3     R3
+  R4 = 4,
+#define R4     R4
+  R5 = 5,
+#define R5     R5
+  R6 = 6,
+#define R6     R6
+  R7 = 7,
+#define R7     R7
+  R8 = 8,
+#define R8     R8
+  R9 = 9,
+#define R9     R9
+  R10 = 10,
+#define R10    R10
+  R11 = 11,
+#define R11    R11
+  R12 = 12,
+#define R12    R12
+  R13 = 13,
+#define R13    R13
+  R14 = 14,
+#define R14    R14
+  R15 = 15
+#define R15    R15
+};
+
+/* Structure to describe FPU registers.  */
+typedef elf_fpregset_t fpregset_t;
+
+/* Context to describe whole processor state.  */
+typedef struct sigcontext mcontext_t;
+
+/* Userlevel context.  */
+typedef struct ucontext
+{
+       unsigned long   uc_flags;
+       struct ucontext *uc_link;
+       stack_t         uc_stack;
+       mcontext_t      uc_mcontext;
+       sigset_t        uc_sigmask;   /* mask last for extensibility */
+} ucontext_t;
+
+#endif /* sys/ucontext.h */
diff --git a/libc/sysdeps/linux/avr32/sys/user.h 
b/libc/sysdeps/linux/avr32/sys/user.h
new file mode 100644
index 0000000..c0b3d38
--- /dev/null
+++ b/libc/sysdeps/linux/avr32/sys/user.h
@@ -0,0 +1,46 @@
+#ifndef _SYS_USER_H
+#define _SYS_USER_H
+
+struct user_fpregs
+{
+
+};
+
+struct user_regs
+{
+       unsigned long sr;
+       unsigned long pc;
+       unsigned long lr;
+       unsigned long sp;
+       unsigned long r12;
+       unsigned long r11;
+       unsigned long r10;
+       unsigned long r9;
+       unsigned long r8;
+       unsigned long r7;
+       unsigned long r6;
+       unsigned long r5;
+       unsigned long r4;
+       unsigned long r3;
+       unsigned long r2;
+       unsigned long r1;
+       unsigned long r0;
+       unsigned long r12_orig;
+};
+
+struct user
+{
+       struct user_regs        regs;           /* general registers */
+       size_t                  u_tsize;        /* text size (pages) */
+       size_t                  u_dsize;        /* data size (pages) */
+       size_t                  u_ssize;        /* stack size (pages) */
+       unsigned long           start_code;     /* text starting address */
+       unsigned long           start_data;     /* data starting address */
+       unsigned long           start_stack;    /* stack starting address */
+       long int                signal;         /* signal causing core dump */
+       struct user_regs *      u_ar0;          /* help gdb find registers */
+       unsigned long           magic;          /* identifies a core file */
+       char                    u_comm[32];     /* user command name */
+};
+
+#endif /* _SYS_USER_H */
_______________________________________________
uClibc mailing list
[email protected]
http://busybox.net/cgi-bin/mailman/listinfo/uclibc

Reply via email to