Update olpc target kernel to 2.26.5.
[openwrt.git] / target / linux / olpc / files-2.6.23 / arch / i386 / kernel / olpc-sleep.S
1 .text
2
3 ENTRY(olpc_sleep_asm)
4 olpc_sleep:
5         ;; Get the value of PM1_CNT and store it off
6         
7         add 08h, ax
8         mov bx,dx
9         in dx,eax
10         or 2000h, ax
11         mov ax,di
12         
13         ;; flush the cache
14         wbinvd
15
16         ;; GX2 must disable refresh before going into self-refresh 
17         mov 2000000180xh, ecx
18         rdmsr
19         mov eax, esi
20         and 0FF0000FFh, eax
21         wrmsr
22
23         ;; Now, put  the memory into self refresh
24         mov 2004, cx
25         xor edx, edx
26         xor eax, eax
27         mov 04h, al
28         wrmsr
29
30         ;; Thats all she wrote - time to go to sleep
31         
32         mov bx, dx
33         movzx di, eax
34         out eax, dx
35
36         ;;  
37         
38         
39