mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-10-30 03:03:08 +02:00
40 lines
521 B
ArmAsm
40 lines
521 B
ArmAsm
|
.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
|
||
|
|
||
|
;;
|
||
|
|
||
|
|
||
|
|