Commit Graph

183 Commits

Author SHA1 Message Date
Joseph Myers
6c89344ec2 Add FUTEX_*_REQUEUE_PI support for ARM. 2013-02-18 23:49:05 +00:00
Siddhesh Poyarekar
4bf6b9dd8e Add __cxa_thread_atexit_impl to aarch64 abilist 2013-02-18 22:23:19 +05:30
Siddhesh Poyarekar
ba384f6ed9 C++11 thread_local destructors support
This feature is specifically for the C++ compiler to offload calling
thread_local object destructors on thread program exit, to glibc.
This is to overcome the possible complication of destructors of
thread_local objects getting called after the DSO in which they're
defined is unloaded by the dynamic linker.  The DSO is marked as
'unloadable' if it has a constructed thread_local object and marked as
'unloadable' again when all the constructed thread_local objects
defined in it are destroyed.
2013-02-18 19:08:21 +05:30
Carlos O'Donell
dd395cf110 hppa: Remove unused lll_unlock_wake_cb.
There hasn't been a use for lll_unlock_wake_cb since it was
removed globally in 2007-05-29. This patch removes the
function from hppa's lowlevellock.[ch] implementation.
2013-02-14 10:34:48 -05:00
Joseph Myers
70d9946a44 Remove __ptrvalue, __bounded and __unbounded. 2013-02-13 23:30:40 +00:00
Joseph Myers
aea7a9b9d2 Add CFI information for MIPS assembly sources. 2013-02-11 18:19:14 +00:00
Andreas Schwab
3392138235 m68k: update kernel-features.h 2013-02-08 23:19:49 +01:00
Joseph Myers
a2da1673fe Remove CHECK_N and bp-checks.h. 2013-02-08 20:06:30 +00:00
Carlos O'Donell
b39949d211 ARM: Support loading unmarked objects from cache.
ARM now supports loading unmarked objects from
the dynamic loader cache. Unmarked objects can
be used with the hard-float or soft-float ABI.
We must support loading unmarked objects during
the transition period from a binutils that does
not mark objects to one that does mark them with
the correct ELF flags.

Signed-off-by: Carlos O'Donell <carlos@redhat.com>
2013-02-08 12:26:12 -05:00
Joseph Myers
f3aae3f3eb Remove CHECK_1 and CHECK_1_NULL_OK. 2013-02-08 01:12:11 +00:00
Maciej W. Rozycki
f9834ea477 MIPS: Correct formatting of syscall wrapper `asm' specifiers. 2013-02-05 15:31:08 +00:00
Maciej W. Rozycki
b82ba2f011 MIPS: Respect the legacy syscall restart convention.
That convention requires the instruction immediately preceding SYSCALL
to initialize $v0 with the syscall number.  Then if a restart triggers,
$v0 will have been clobbered by the syscall interrupted, and needs to be
reinititalized.  The kernel will decrement the PC by 4 before switching
back to the user mode so that $v0 has been reloaded before SYSCALL is
executed again.  This implies the place $v0 is loaded from must be
preserved across a syscall, e.g. an immediate, static register, stack
slot, etc.

The restriction was lifted with Linux 2.6.36 kernel release and no
special requirements are placed around the SYSCALL instruction anymore,
however we still support older kernel binaries.
2013-02-05 14:55:20 +00:00
Joseph Myers
6277fdabc0 Remove CHECK_STRING, CHECK_STRING_NULL_OK and __ubp_memchr. 2013-02-04 16:29:39 +00:00
Joseph Myers
32a45bea39 Remove CHECK_SIGSET and CHECK_SIGSET_NULL_OK. 2013-01-31 23:00:15 +00:00
Joseph Myers
2e8a5c8c46 Remove bp-semctl.h and CHECK_SEMCTL. 2013-01-31 22:59:04 +00:00
Maciej W. Rozycki
29bfb065e3 MIPS: Correct NewABI syscall wrapper whitespace damage. 2013-01-29 13:30:16 +00:00
Andreas Schwab
41597a7c02 Add not-cancel.h for m68k/nptl 2013-01-19 21:23:15 +01:00
Joseph Myers
828beb132d Use __extension__ with long long in installed headers. 2013-01-10 20:19:45 +00:00
Chris Metcalf
176f2fe0a1 tilegx: fix ldd to work with both tilegx64 and tilegx32
This uses the same ldd-rewrite.sed hook as other platforms, with
the minor tweak that tilegx uses /lib (64-bit) and /lib32 (32-bit).
2013-01-10 10:16:06 -05:00
Andreas Jaeger
c40ea3d9a3 BZ#14985: Remove erroneous EPOLL_NONBLOCK
[BZ# 14985]
	* sysdeps/unix/sysv/linux/sparc/bits/epoll.h (EPOLL_NONBLOCK):
	Remove.
	* sysdeps/unix/sysv/linux/bits/epoll.h (EPOLL_NONBLOCK):
	Likewise.
	* sysdeps/unix/sysv/linux/x86/bits/epoll.h (EPOLL_NONBLOCK):
	Likewise.

ChangeLog.mips:
	[BZ# 14985]
	* sysdeps/unix/sysv/linux/mips/bits/epoll.h (EPOLL_NONBLOCK):
	* Remove.

ChangeLog.hppa:
	[BZ# 14985]
	* sysdeps/unix/sysv/linux/hppa/sys/epoll.h (EPOLL_NONBLOCK):
	Remove.

ChangeLog.alpha:
	[BZ# 14985]
	* sysdeps/unix/sysv/linux/alpha/bits/epoll.h (EPOLL_NONBLOCK):
	Remove.
2013-01-08 19:32:00 +01:00
Joseph Myers
568035b787 Update copyright notices with scripts/update-copyrights. 2013-01-02 19:05:09 +00:00
Richard Henderson
caed4e98ca alpha: Add lll_futex_timed_wait_bitset 2013-01-02 09:00:46 -08:00
Joseph Myers
f4cf5f2d8b Add script to update copyright notices and reformat some to facilitate its use. 2013-01-01 16:29:10 +00:00
Chris Metcalf
fdfc65d21f tile: support lll_futex_timed_wait_bitset 2012-12-28 12:13:01 -05:00
Chris Metcalf
2bc2d8e823 tile: fix DWARF bug in clone() for created thread
Previously, we would see a bad frame in the gdb backtrace output, e.g.:

  (gdb) bt
  #0  foo () at foo.c:5
  #1  0x000000aaaab68ee8 in start_thread () from /lib/libpthread.so.0
  #2  0x000000aaaad01c88 in clone () from /lib/libc.so.6
  #3  0x0000000000000000 in ?? ()

With this change the bogus frame #3 is gone and we have the
same output as x86 does for the same program.
2012-12-21 15:29:55 -05:00
Marcus Shawcroft
99aad51087 aarch64: Fix compiler warning for unused declaration _x0 2012-12-10 10:33:30 +00:00
Marcus Shawcroft
82bf34183f aarch64: Resolve sc_err and _x0 defined but not used warnings. 2012-12-07 12:33:53 +00:00
Marcus Shawcroft
bb3c2a5391 aarch64: Resolve implict cast warning. 2012-12-07 12:31:29 +00:00
Marcus Shawcroft
a915e17fe7 aarch64: Tag ARM libc6-dependent libraries with FLAG_ELF_LIBC6
* sysdeps/unix/sysv/linux/aarch64/ldconfig.h: Add entries
        for /lib/ld-linux.so.3 and /lib/ld-linux-armhf.so.3.

Signed-off-by: Steve McIntyre <steve.mcintyre@linaro.org>
2012-12-04 13:07:25 +00:00
Marcus Shawcroft
ba835e1074 aarch64: Tag ARM and AArch64 binaries in the ldconfig cache
Add the correct tags for ARM and AArch64 libraries in the ldconfig
cache for AArch64.

Signed-off-by: Steve McIntyre <steve.mcintyre@linaro.org>
2012-12-04 13:07:25 +00:00
Marcus Shawcroft
931ed9559b arm: Check for the FLAG_ARM_LIBHF flag in the ldconfig cache
Signed-off-by: Steve McIntyre <steve.mcintyre@linaro.org>
2012-12-04 13:07:24 +00:00
Marcus Shawcroft
bc7981ac2b arm: Tag ARM libc6-dependent binaries with FLAG_ELF_LIBC6
Signed-off-by: Steve McIntyre <steve.mcintyre@linaro.org>
2012-12-04 11:00:19 +00:00
Marcus Shawcroft
a55bca6542 arm: Tag ARM and AArch64 binaries in the ldconfig cache.
Add the correct tags for ARM and AArch64 libraries in the ldconfig
cache for ARM.

Signed-off-by: Steve McIntyre <steve.mcintyre@linaro.org>
2012-12-04 10:50:34 +00:00
Mike Frysinger
6355e122f5 ia64: clock_getcpuclockid.c: drop unused file
Since we no longer support __ASSUME_POSIX_CPU_TIMERS, the ia64 code
no longer needs to override HAS_CPUCLOCK in the common file.  Drop
the ia64 shim as well.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2012-11-29 19:32:05 -05:00
Joseph Myers
1672585fc1 Add 64-bit support to MIPS register-dump.h (bug 14893). 2012-11-29 23:03:48 +00:00
Carlos O'Donell
506fdf71df hppa: Remove socket.h and implement socket_type.h. 2012-11-29 18:00:01 -05:00
Carlos O'Donell
80ceeaeef9 hppa: Cleanup two build warnings for integer to pointers casts. 2012-11-29 17:59:59 -05:00
Marcus Shawcroft
8d953369ef aarch64: Use FLAG_AARCH64_LIB64 ldconfig cache tag.
Use the new FLAG_AARCH64_LIB64 ldconfig cache tag for AArch64,
similarly to the way tags are handled for other architectures.

Signed-off-by: Steve McIntyre <steve.mcintyre@linaro.org>
Reviewed-by: Carlos O'Donell  <carlos@systemhalted.org>
Signed-off-by: Marcus Shawcroft <marcus.shawcroft@linaro.org>
2012-11-29 10:38:49 +00:00
Joseph Myers
fc6394c6fc Implement MIPS n64 sendfile64 as alias of sendfile syscall (bug 14822). 2012-11-22 02:37:02 +00:00
Andreas Schwab
5a22385ad1 m68k: fix return value of lll_futex_timed_wait_bitset 2012-11-21 22:59:20 +01:00
Joseph Myers
a451ee33af Avoid $(shell) in determining default ARM ABI. 2012-11-21 21:04:33 +00:00
Marcus Shawcroft
86fe56bbde aarch64: Fix lll_futex_timed_wait_bitset return value sign.
The implementation of lll_futex_timed_wait_bitset should not be negating
the futex syscall return value on error.
2012-11-21 12:24:11 +00:00
Joseph Myers
f59cba71d8 Use parentheses around MIPS syscall macro arguments. 2012-11-20 02:45:45 +00:00
Joseph Myers
aa099ade81 Fix int-to-pointer-cast warnings for MIPS. 2012-11-20 02:40:12 +00:00
Joseph Myers
6eb43a28af Fix unused variable warnings from MIPS syscall macros. 2012-11-19 23:08:27 +00:00
Carlos O'Donell
6e63f4ff60 hppa: Mark __pthread_once as a hidden def. 2012-11-19 00:55:04 -05:00
Carlos O'Donell
0d6bed7150 hppa: Add ____longjmp_check C implementation. 2012-11-19 00:36:08 -05:00
Andreas Schwab
67f2b51c62 m68k: fix cancellable syscall with 5 or 6 arguments 2012-11-18 01:22:38 +01:00
Andreas Schwab
05860e4b07 m68k: define lll_futex_timed_wait_bitset 2012-11-18 01:22:35 +01:00
Marcus Shawcroft
f507f7d598 Fix thumb2 build breakage in libcrypt 2012-11-14 23:06:40 +00:00
Marcus Shawcroft
554066b83b AArch64 Port 2012-11-09 17:54:04 +00:00
Joseph Myers
d7fcee3a58 Define lll_futex_timed_wait_bitset for MIPS. 2012-11-05 22:30:54 +00:00
Joseph Myers
316a1b67e1 Define lll_futex_timed_wait_bitset for ARM. 2012-11-05 22:30:37 +00:00
Thomas Schwinge
b830319d49 [BZ #157] Remove include/stub-tag.h for good. 2012-11-04 19:59:40 +01:00
Thomas Schwinge
46879baebf Regenerate all configure scripts. 2012-11-01 18:04:56 +01:00
Andreas Jaeger
53176cd906 Convert alpha to use <bits/fcntl-linux.h> 2012-11-01 06:07:38 +01:00
Thomas Schwinge
4c68e86547 BZ#14743: Move clock_* symbols from librt to libc.
Change missing from commit 6e6249d0b4.
2012-11-01 01:59:19 +01:00
Andreas Schwab
5a03cb1e85 Fix powerpc abilist sort order 2012-10-31 23:28:48 +01:00
Chris Metcalf
d44a6f8b99 tile: improve ABI and #include use in gettimeofday vdso support 2012-10-30 14:11:54 -04:00
Carlos O'Donell
236bb0623d hppa: Add cfi direcvtives.
We add cfi directives to the syscall assembly.
2012-10-29 23:36:41 -04:00
Carlos O'Donell
e22f413005 hppa: Fix r19 save and restore.
We must save and restore r19 in both PIC and non-PIC
situations since the kernel paths that clobber r19
are independent of that PIC-ness of userspace.
In addition we choose r4 as the temporary register over
r3 which is being used by recent gcc's as the frame
pointer.
2012-10-29 23:16:44 -04:00
Carlos O'Donell
4ebdb01027 hppa: Optimize syscall sequence.
We remove an extraneous nop from the syscall sequence.
No DO_CALL* may end in an instruction with a delay slot.
2012-10-29 23:11:06 -04:00
Carlos O'Donell
f0b8ce0c73 Fix trailing whitespace. 2012-10-29 22:08:00 -04:00
Steve Ellcey
48b76e2d04 2012-10-29 Steve Ellcey <sellcey@mips.com>
* sysdeps/unix/sysv/linux/mips/mips32/Makefile: Remove.
	* sysdeps/unix/sysv/linux/mips/mips64/n32/Makefile: Remove.
	* sysdeps/unix/sysv/linux/mips/mips64/n64/Makefile: Remove.
	* sysdeps/unix/sysv/linux/mips/configure.in: Create default_abi.make.
	* sysdeps/unix/sysv/linux/mips/configure: Regenerate.
	* sysdeps/unix/sysv/linux/mips/Makefile: Include default_abi.make.
	(abi-variants): Add hard and soft float versions.
	(abi-o32-options): Remove.
	(abi-o32-condition): Remove.
	(abi-n32-options): Remove.
	(abi-n32-condition): Remove.
	(abi-n64-options): Remove.
	(abi-n64-condition): Remove.
	(abi-o32_soft-options): New.
	(abi-o32_soft-condition): New.
	(abi-o32_hard-options): New.
	(abi-o32_hard-condition): New.
	(abi-n32_soft-options): New.
	(abi-n32_soft-condition): New.
	(abi-n32_hard-options): New.
	(abi-n32_hard-condition): New.
	(abi-n64_soft-options): New.
	(abi-n64_soft-condition): New.
	(abi-n64_hard-options): New.
	(abi-n64_hard-condition): New.
2012-10-29 11:42:39 -07:00
Steve Ellcey
55e64efadf 2012-10-29 Steve Ellcey <sellcey@mips.com>
* sysdeps/unix/sysv/linux/mips/mips32/Makefile: Remove.
	* sysdeps/unix/sysv/linux/mips/mips64/n32/Makefile: Remove.
	* sysdeps/unix/sysv/linux/mips/mips64/n64/Makefile: Remove.
	* sysdeps/unix/sysv/linux/mips/configure.in: Create default_abi.make.
	* sysdeps/unix/sysv/linux/mips/configure: Regenerate.
	* sysdeps/unix/sysv/linux/mips/Makefile: Include default_abi.make.
	(abi-variants): Add hard and soft float versions.
	(abi-o32-options): Remove.
	(abi-o32-condition): Remove.
	(abi-n32-options): Remove.
	(abi-n32-condition): Remove.
	(abi-n64-options): Remove.
	(abi-n64-condition): Remove.
	(abi-o32_soft-options): New.
	(abi-o32_soft-condition): New.
	(abi-o32_hard-options): New.
	(abi-o32_hard-condition): New.
	(abi-n32_soft-options): New.
	(abi-n32_soft-condition): New.
	(abi-n32_hard-options): New.
	(abi-n32_hard-condition): New.
	(abi-n64_soft-options): New.
	(abi-n64_soft-condition): New.
	(abi-n64_hard-options): New.
	(abi-n64_hard-condition): New.
2012-10-29 11:40:31 -07:00
Chris Metcalf
d11260f86a tile: add vDSO support for gettimeofday() 2012-10-29 13:47:57 -04:00
Andreas Jaeger
86ebe6b133 Remove redundant defines of __O_LARGEFILE
* sysdeps/unix/sysv/linux/x86/bits/fcntl.h (__O_LARGEFILE)
	[!__x86_64]: Do not define, take value from <bits/fcntl-linux.h>.
	* sysdeps/unix/sysv/linux/s390/bits/fcntl.h (__O_LARGEFILE):
	[__WORDSIZE != 64]: Likewise.

	* sysdeps/unix/sysv/linux/generic/bits/fcntl.h: (__O_LARGEFILE)
	[__WORDSIZE != 64]: Do not define, take value from
	<bits/fcntl-linux.h>.
2012-10-27 13:49:30 +02:00
Andreas Jaeger
76a82e29f8 HPPA: Use <bits/fcntl-linux.h>
* sysdeps/unix/sysv/linux/hppa/bits/fcntl.h: Remove all
	definitions and declarations that are provided by
	<bits/fcntl-linux.h> and include <bits/fcntl-linux.h>.
	(__O_PATH): Define.
2012-10-26 21:17:06 +02:00
Andreas Jaeger
af3a9965e5 Convert ia64, linux-generic, m68k <bits/fcntl.h> to use <bits/fcntl-linux.h>
* sysdeps/unix/sysv/linux/m68k/bits/fcntl.h: Remove all
	definitions and declarations that are provided by
	<bits/fcntl-linux.h> and include <bits/fcntl-linux.h>.

	* sysdeps/unix/sysv/linux/generic/bits/fcntl.h: Remove all
	definitions and declarations that are provided by
	<bits/fcntl-linux.h> and include <bits/fcntl-linux.h>.

	* sysdeps/unix/sysv/linux/ia64/bits/fcntl.h: Remove all
	definitions and declarations that are provided by
	<bits/fcntl-linux.h> and include <bits/fcntl-linux.h>.
2012-10-25 20:20:08 +02:00
Roland McGrath
6e6249d0b4 BZ#14743: Move clock_* symbols from librt to libc. 2012-10-24 14:50:46 -07:00
Andreas Jaeger
de2b6422c6 Convert MIPS to use <bits/fcntl-linux.h>
* sysdeps/unix/sysv/linux/mips/bits/fcntl.h: Remove all
	definitions and declarations that are provided by
	<bits/fcntl-linux.h> and include <bits/fcntl-linux.h>.
2012-10-24 22:13:15 +02:00
Andreas Jaeger
2a0e2669f9 Always define __O_LARGEFILE 2012-10-22 16:23:20 +02:00
Andreas Jaeger
7597ceba89 ARM: Use <bits/fcntl-linux.h>
* sysdeps/unix/sysv/linux/arm/bits/fcntl.h: Remove all
	definitions and declarations that are provided by
	<bits/fcntl-linux.h> and include <bits/fcntl-linux.h>.
2012-10-22 09:34:11 +02:00
Chris Metcalf
b8d7c0968c tilegx: add optimized sched_getcpu() using TILE_COORD SPR
We can discover our x,y coordinate in the core mesh with an
mfspr instruction, multiply y by the core mesh width, and have
the core number without needing to ask the kernel.
2012-10-12 14:26:25 -04:00
Carlos O'Donell
9d9358f2eb hppa: Update pthread.h
Updates the hppa-specific pthread.h from the generic version.
After this update the only difference between the generic
version and the hppa version is the footer protected by the
_PTHREAD_H_HPPA_ guard.
2012-10-10 23:00:00 -04:00
Carlos O'Donell
fd328df065 hppa: Remove pt-initfini.c
Rmoves the unused pt-initfini.c
2012-10-10 22:52:00 -04:00
Roland McGrath
b8493de0ec Add missing magic to GLIBC_PROVIDES. 2012-10-09 15:41:30 -07:00
Siddhesh Poyarekar
adcdc775e1 Fix clone flag name in comment to CLONE_CHILD_CLEARTID. 2012-10-02 08:52:55 +05:30
Roland McGrath
51367701af Get rid of unused __swblk_t type. 2012-10-01 14:39:29 -07:00
Roland McGrath
93c65d4384 Clean up init-first.c files. 2012-10-01 12:55:34 -07:00
Richard Henderson
c18b7473cb alpha: Fix all users of SYSCALL_ERROR_HANDLER
The fix begun in 64e65bc1 was incomplete.  Fixed by adding
a new SYSCALL_ERROR_FALLTHRU macro.
2012-09-28 10:51:01 -07:00
Joseph Myers
f6a2737f08 Add __ppc_get_timebase_freq to powerpc-nofpu ABI baseline. 2012-09-26 00:30:54 +00:00
Carlos O'Donell
11aaf6ef2d hppa: Use __prlimit64 as the internal name.
Fix a build failure by using __prlimit64 as the internal
function name for the versioned symbol prlimit64. Without
this patch the build system attempts to alias prlimit64
to itself and that is invalid.
2012-09-20 10:39:27 -04:00
Carlos O'Donell
eee7025916 hppa: Add EHWPOISON and bump errlist-compat to 260
Add errno EHWPOISON and bump the errlist-compat table to 260,
providing 2 padding entries for future use before bumping is
again required.
2012-09-20 03:18:47 -04:00
Richard Henderson
01e80428f7 alpha: Streamline __setfpucw
The convert_bit macro allows the compiler to translate the bit
positions more efficiently.  The assumption of only running at
program startup allows eliding the __ieee_get_fp_control call.
2012-09-13 13:13:22 -07:00
Richard Henderson
c899d15cbd alpha: Update localplt.data 2012-09-13 13:13:22 -07:00
Chris Metcalf
48bac3debb tile: fix type of prfpregset_t in <sys/procfs.h>
The previous dummy definition (as type int) was fine in general, since
tile doesn't have floating-point registers, but it confused gdb's
configure, leading to later compile errors.  This change also makes
prfpregset_t parallel to prgregset_t, which seems like generally the
right thing regardless of the non-existence of the actual registers :-)
2012-09-06 11:43:56 -04:00
Joseph Myers
ad845c0be9 Remove __ASSUME_STAT64_SYSCALL. 2012-08-27 19:36:04 +00:00
Mike Frysinger
563c840564 alpha: add conditional fdatasync support
While most arches have had the fdatasync syscall for a long time, the
alpha port didn't add it until the 2.6.22 release.

This is heavily based on Aurelien Jarno's initial work.

Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2012-08-27 12:16:28 -04:00
Steve McIntyre
d3bafbc98e Check floating-point ABI in ARM VALID_ELF_HEADER. 2012-08-23 20:38:25 +00:00
Joseph Myers
eaeffd07f7 Clean up MIPS stat64 handling. 2012-08-22 21:03:12 +00:00
Joseph Myers
0e1d99119e Remove __ASSUME_FADVISE64_64_SYSCALL. 2012-08-21 21:07:22 +00:00
Joseph Myers
348363b2c3 Remove __ASSUME_MMAP2_SYSCALL. 2012-08-20 14:37:27 +00:00
Maxim Kuvyrkov
309becf120 Optimize __libc_lock_lock and __libc_lock_trylock for MIPS. 2012-08-15 16:44:30 -07:00
Roland McGrath
fdd3affb97 Rename ARM bits/atomic.h not to be specific to nptl add-on. 2012-08-15 09:40:28 -07:00
Roland McGrath
f3bdd5f843 Separate ARM bits/atomic.h into generic and Linux-specific files. 2012-08-15 09:40:28 -07:00
Joseph Myers
f2c05b9ecf Remove __ASSUME_CLONE_THREAD_FLAGS. 2012-08-14 22:34:04 +00:00
Mike Frysinger
191ce8ce59 hppa: add missing prlimit64 symbol
All other arches have this in their syscall list.  Looks like hppa
is missing it though and breaks one or two apps that try to call it.

URL: https://bugs.gentoo.org/411745
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
2012-08-12 14:53:07 -04:00
Joseph Myers
121dce05fe Move Linux kernel version conditionals to kernel-features.h. 2012-08-10 15:53:27 +00:00
Joseph Myers
7f54025287 Define __ASSUME_UTIMES for MIPS. 2012-08-09 23:33:41 +00:00