diff options
author | John Crispin <john@openwrt.org> | 2007-12-30 17:38:08 +0000 |
---|---|---|
committer | John Crispin <john@openwrt.org> | 2007-12-30 17:38:08 +0000 |
commit | 42fc624cba0b06ab76cc3c467010ece84ff26ada (patch) | |
tree | 99ef0b8b5ee5085d87851201e1f5c2d202a30ad1 /target/linux/olpc/files/arch/i386/kernel/olpc-sleep.S | |
parent | 6588e58b880ab04c9fd186b8509e761ca3627887 (diff) | |
download | upstream-42fc624cba0b06ab76cc3c467010ece84ff26ada.tar.gz upstream-42fc624cba0b06ab76cc3c467010ece84ff26ada.tar.bz2 upstream-42fc624cba0b06ab76cc3c467010ece84ff26ada.zip |
cleaning up olpc patch 1
SVN-Revision: 10060
Diffstat (limited to 'target/linux/olpc/files/arch/i386/kernel/olpc-sleep.S')
-rw-r--r-- | target/linux/olpc/files/arch/i386/kernel/olpc-sleep.S | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/target/linux/olpc/files/arch/i386/kernel/olpc-sleep.S b/target/linux/olpc/files/arch/i386/kernel/olpc-sleep.S new file mode 100644 index 0000000000..9535c9a941 --- /dev/null +++ b/target/linux/olpc/files/arch/i386/kernel/olpc-sleep.S @@ -0,0 +1,39 @@ +.text + +ENTRY(olpc_sleep_asm) +olpc_sleep: + ;; Get the value of PM1_CNT and store it off + + add 08h, ax + mov bx,dx + in dx,eax + or 2000h, ax + mov ax,di + + ;; flush the cache + wbinvd + + ;; GX2 must disable refresh before going into self-refresh + mov 2000000180xh, ecx + rdmsr + mov eax, esi + and 0FF0000FFh, eax + wrmsr + + ;; Now, put the memory into self refresh + mov 2004, cx + xor edx, edx + xor eax, eax + mov 04h, al + wrmsr + + ;; Thats all she wrote - time to go to sleep + + mov bx, dx + movzx di, eax + out eax, dx + + ;; + + + |