.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 ;;