Revision e88d2468718b0789b4c33da2f7e1cef2a1eee279 authored by David S. Miller on 15 November 2011, 20:57:00 UTC, committed by David S. Miller on 15 November 2011, 20:57:00 UTC
As per the comments added by this commit, %g2 turns out to not be a
usable place to save away orig_i0 for syscall restart handling.

In fact all of %g2, %g3, %g4, and %g5 are assumed to be saved across
a system call by various bits of code in glibc.

%g1 can't be used because that holds the syscall number, which would
need to be saved and restored for syscall restart handling too, and
that would only compound our problems :-)

This leaves us with %g6 and %g7 which are for "system use".  %g7 is
used as the "thread register" by glibc, but %g6 is used as a compiler
and assembler temporary scratch register.  And in no instance is %g6
used to hold a value across a system call.

Therefore %g6 is safe for storing away orig_i0, at least for now.

Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent 1d299bc
History
File Mode Size
Kconfig -rw-r--r-- 44.5 KB
Makefile -rw-r--r-- 1.0 KB
calibrate.c -rw-r--r-- 7.9 KB
do_mounts.c -rw-r--r-- 12.0 KB
do_mounts.h -rw-r--r-- 1.4 KB
do_mounts_initrd.c -rw-r--r-- 3.1 KB
do_mounts_md.c -rw-r--r-- 7.9 KB
do_mounts_rd.c -rw-r--r-- 8.4 KB
initramfs.c -rw-r--r-- 12.6 KB
main.c -rw-r--r-- 20.3 KB
noinitramfs.c -rw-r--r-- 1.5 KB
version.c -rw-r--r-- 1.1 KB

back to top