Author: wmb Date: 2009-07-01 02:25:47 +0200 (Wed, 01 Jul 2009) New Revision: 1231
Modified: cpu/x86/pc/olpc/via/acpi.fth cpu/x86/pc/olpc/via/rmstart.fth cpu/x86/pc/olpc/via/romreset.bth Log: Via - fixes to ACPI wakeup support.
Modified: cpu/x86/pc/olpc/via/acpi.fth =================================================================== --- cpu/x86/pc/olpc/via/acpi.fth 2009-06-30 19:53:14 UTC (rev 1230) +++ cpu/x86/pc/olpc/via/acpi.fth 2009-07-01 00:25:47 UTC (rev 1231) @@ -248,25 +248,25 @@ then
op: ax bx mov - h# 0f # ax and + h# 0f # ax and ax cx mov op: 4 # bx shr
- cs: ax wake-adr la1+ #) mov \ Offset - cs: bx wake-adr wa1+ #) mov \ Segment - \ The following might be unnecessary ax ax xor rm-ds # al mov \ 16-bit data segment ax ds mov ax es mov ax ss mov
- cr0 ax mov h# fe # al and ax cr0 mov \ Enter real mode + cx wake-adr la1+ #) mov \ Offset + bx wake-adr wa1+ #) mov \ Segment
- here 5 + do-acpi-wake - wake-adr + >seg:off #) far jmp \ Jump to set cs + op: cr0 ax mov h# fe # al and op: ax cr0 mov \ Enter real mode
+ here 5 + do-acpi-wake - wake-adr + lwsplit #) far jmp \ Jump to set cs + \ The following might be unnecessary \ Now we are running in real mode; fix segments again cs ax mov ax ds mov ax es mov
- cs: wake-adr wa1+ s#) far jmp + wake-adr wa1+ s#) far jmp end-code here do-acpi-wake - constant /do-acpi-wake
@@ -292,7 +292,7 @@ " dsdt" find-drop-in 0= abort" No DSDT " ( adr len ) 2dup dsdt-adr swap move free-mem
- do-acpi-wake wake-adr 4 + /do-acpi-wake move + do-acpi-wake wake-adr /do-acpi-wake move
[ifdef] notdef \ Copy in the SSDT
Modified: cpu/x86/pc/olpc/via/rmstart.fth =================================================================== --- cpu/x86/pc/olpc/via/rmstart.fth 2009-06-30 19:53:14 UTC (rev 1230) +++ cpu/x86/pc/olpc/via/rmstart.fth 2009-07-01 00:25:47 UTC (rev 1231) @@ -83,7 +83,7 @@
\ ffff.fc00 GDT
- 1f w, ffff.fc00 l, 0 w, \ 0 Pointer to GDT in first slot + 2f w, ffff.fc00 l, 0 w, \ 0 Pointer to GDT in first slot 0 w, 0 l, 0 w, \ * Null descriptor ffff w, 9b.000000 l, 00.c.f w, \ 10 Code, linear=physical, full 4Gbytes ffff w, 93.000000 l, 00.c.f w, \ 18 Data, linear=physical, full 4Gbytes
Modified: cpu/x86/pc/olpc/via/romreset.bth =================================================================== --- cpu/x86/pc/olpc/via/romreset.bth 2009-06-30 19:53:14 UTC (rev 1230) +++ cpu/x86/pc/olpc/via/romreset.bth 2009-07-01 00:25:47 UTC (rev 1231) @@ -179,7 +179,7 @@ \ Resume in real mode for ACPI operating systems \ Linear wakeup address is in EAX sp sp xor \ Possibly unnecessary - wake-adr >seg:off drop rm-cs #) far jmp + wake-adr lwsplit drop rm-cs #) far jmp else \ Resume in 32-bit protected mode for OFW resume-data # sp mov