suspend-to-ram: clean up according to Andy

suspend-to-ram: clean up according to Andy

Post by Pavel Mache » Fri, 31 May 2002 07:30:07



Hi!

Andy did not quite like the comments, please apply this.
                                                                Pavel

--- linux-swsusp.test/arch/i386/kernel/acpi.c   Sun May 26 19:31:44 2002

        printk(KERN_DEBUG "ACPI: have wakeup address 0x%8.8lx\n", acpi_wakeup_address);
 }

+
+void do_suspend_lowlevel(int resume)
+{
 /*
- * (KG): Since we affect stack here, we make this function as flat and easy
- * as possible in order to not provoke gcc to use local variables on the stack.
- * Note that on resume, all (expect nosave) variables will have the state from
- * the time of writing (suspend_save_image) and the registers (including the
- * stack pointer, but excluding the instruction pointer) will be loaded with
- * the values saved at save_processor_context() time.
+ * FIXME: This function should really be written in assembly. Actually
+ * requirement is that it does not touch stack, because %esp will be
+ * wrong during resume before restore_processor_context(). Check
+ * assembly if you modify this.
  */
-void do_suspend_magic(int resume)
-{
-       /* DANGER WILL ROBINSON!
-        *
-        * If this function is too difficult for gcc to optimize, it will crash and burn!
-        * see above.
-        *
-        * DO NOT TOUCH.
-        */
        if (!resume) {
                save_processor_context();

        }
 acpi_sleep_done:
        restore_processor_context();
-       printk("CPU context restored...\n");
 }

 #endif /*CONFIG_ACPI_SLEEP*/
--- linux-swsusp.test/arch/i386/kernel/acpi_wakeup.S    Sun May 26 20:27:44 2002

        rep     lodsb
        movw    $0x0e00 + 'O', %ds:(0xb8018)

-       movl    %cs:saved_magic2, %eax
+       movl    %cs:saved_magic, %eax
        cmpl    $0x12345678, %eax
        jne     bogus_magic

        movl    saved_videomode, %edx
        movl    %edx, video_mode - wakeup_start (%eax)
        movl    $0x12345678, real_magic - wakeup_start (%eax)
-       movl    $0x12345678, saved_magic2
+       movl    $0x12345678, saved_magic

        # restore the regs we used

 ENTRY(saved_esp)       .long   0

 ENTRY(saved_magic)     .long   0
-ENTRY(saved_magic2)    .long   0      

 ALIGN
 # saved registers
--- linux-swsusp.test/drivers/acpi/acpi_system.c        Sun May 26 20:27:44 2002

        case ACPI_STATE_S2:
        case ACPI_STATE_S3:
-               do_suspend_magic(0);
+               do_suspend_lowlevel(0);
                break;
        }

--
(about SSSCA) "I don't say this lightly.  However, I really think that the U.S.
no longer is classifiable as a democracy, but rather as a plutocracy." --hpa
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in

More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/