arch/tile: update some comments to clarify register usage.
authorChris Metcalf <cmetcalf@tilera.com>
Thu, 14 Oct 2010 18:42:58 +0000 (14:42 -0400)
committerChris Metcalf <cmetcalf@tilera.com>
Thu, 14 Oct 2010 18:42:58 +0000 (14:42 -0400)
Signed-off-by: Chris Metcalf <cmetcalf@tilera.com>

arch/tile/kernel/intvec_32.S
arch/tile/kernel/process.c

index 7c7e9ac..c62c2f4 100644 (file)
@@ -1553,6 +1553,8 @@ STD_ENTRY(_sys_clone)
  * to be available to it on entry.  It does not modify any callee-save
  * registers (including "lr").  It does not check what PL it is being
  * called at, so you'd better not call it other than at PL0.
+ * The <atomic.h> wrapper assumes it only clobbers r20-r29, so if
+ * it ever is necessary to use more registers, be aware.
  *
  * It does not use the stack, but since it might be re-interrupted by
  * a page fault which would assume the stack was valid, it does
index 42ff73d..221f12b 100644 (file)
@@ -214,9 +214,10 @@ int copy_thread(unsigned long clone_flags, unsigned long sp,
        /*
         * Copy the callee-saved registers from the passed pt_regs struct
         * into the context-switch callee-saved registers area.
-        * We have to restore the callee-saved registers since we may
-        * be cloning a userspace task with userspace register state,
-        * and we won't be unwinding the same kernel frames to restore them.
+        * This way when we start the interrupt-return sequence, the
+        * callee-save registers will be correctly in registers, which
+        * is how we assume the compiler leaves them as we start doing
+        * the normal return-from-interrupt path after calling C code.
         * Zero out the C ABI save area to mark the top of the stack.
         */
        ksp = (unsigned long) childregs;