Fixes assembly input clobbers (XCC)
authorBarret Rhoden <brho@cs.berkeley.edu>
Sat, 27 Jul 2013 05:21:57 +0000 (22:21 -0700)
committerBarret Rhoden <brho@cs.berkeley.edu>
Sat, 27 Jul 2013 05:21:57 +0000 (22:21 -0700)
commit8544b02f73e7db83a85aad6e7102beb878dba9dc
tree44e9dc59c082f01c0b2b04f4f53cd5649e58b498
parentc0c1a541cffe7c533867c8566116838bbc06e4c4
Fixes assembly input clobbers (XCC)

You can't list an input as a clobber, so to actually clobber it, you
need to use it as an output.  So we use a dummy variable, and hopefully
the compiler does the right thing.

Note we can't (or at least shouldn't) output to the same input variable
(using "+D"(a0), for instance).  We aren't actually outputting a valid
value for any variable; it's usually gibberish or 0, and we don't want
the compiler to *not* save and restore any input args that it may need in
the future.

Also note that these issues are just with the software contexts, where I
was trying to use the asm clobbers to mimic the amd64 calling
convention, so none of the HW TFs were affected.

Reinstall your cross compiler.
kern/arch/x86/ros/syscall64.h
kern/arch/x86/trap32.h
kern/arch/x86/trap64.h
user/parlib/include/x86/vcore32.h
user/parlib/include/x86/vcore64.h