mirror of https://github.com/hak5/openwrt.git
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
|
|
|
|
;;
|
|
|
|
|
|
|