Rev 7132 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 7132 | Rev 7734 | ||
---|---|---|---|
Line 9... | Line 9... | ||
9 | ;; See file COPYING for details. ;; |
9 | ;; See file COPYING for details. ;; |
10 | ;; Copyright 2003 Ville Turjanmaa ;; |
10 | ;; Copyright 2003 Ville Turjanmaa ;; |
11 | ;; ;; |
11 | ;; ;; |
12 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
12 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
Line 13... | Line 13... | ||
13 | 13 | ||
- | 14 | $Revision: 7734 $ |
|
- | 15 | ||
- | 16 | ; ACPI Generic Address Structure |
|
- | 17 | struct GAS |
|
- | 18 | asid db ? ; address space id |
|
- | 19 | bit_width db ? |
|
- | 20 | bit_offset db ? |
|
- | 21 | access_size db ? |
|
- | 22 | address DQ ? |
|
- | 23 | ends |
|
- | 24 | ||
- | 25 | ASID.SYSTEM_MEMORY = 0 |
|
- | 26 | ASID.SYSTEM_IO = 1 |
|
- | 27 | ASID.PCI_CONFIG = 2 |
|
- | 28 | ASID.PCI_EC = 3 |
|
- | 29 | ASID.PCI_SMBUS = 4 |
|
- | 30 | ||
- | 31 | ACCESS_SIZE.UNDEFINED = 0 |
|
- | 32 | ACCESS_SIZE.BYTE = 1 |
|
- | 33 | ACCESS_SIZE.WORD = 2 |
|
- | 34 | ACCESS_SIZE.DWORD = 3 |
|
Line 14... | Line 35... | ||
14 | $Revision: 7132 $ |
35 | ACCESS_SIZE.QWORD = 4 |
15 | 36 | ||
Line 16... | Line 37... | ||
16 | align 4 |
37 | align 4 |
Line 171... | Line 192... | ||
171 | out dx, ax |
192 | out dx, ax |
172 | @@: |
193 | @@: |
173 | jmp $ |
194 | jmp $ |
Line 174... | Line 195... | ||
174 | 195 | ||
- | 196 | no_acpi_power_off: |
|
- | 197 | cmp byte[BOOT_LO.shutdown_type], SYSTEM_REBOOT |
|
- | 198 | jnz no_acpi_reboot |
|
- | 199 | ; try to reboot via ACPI fixed features |
|
- | 200 | mov ebx, [acpi_fadt_base-OS_BASE] |
|
- | 201 | cmp dword[ebx], 'FACP' |
|
- | 202 | jne no_acpi_power_off |
|
- | 203 | test dword[ebx+0x70], 1 SHL 10 ; RESET_REG_SUP |
|
- | 204 | jz no_acpi_reboot |
|
- | 205 | cmp [ebx+0x74+GAS.asid], ASID.SYSTEM_IO |
|
- | 206 | jnz no_acpi_reboot |
|
- | 207 | cmp [ebx+0x74+GAS.bit_width], 8 |
|
- | 208 | jnz no_acpi_reboot |
|
- | 209 | cmp [ebx+0x74+GAS.bit_offset], 0 |
|
- | 210 | jnz no_acpi_reboot |
|
- | 211 | cmp [ebx+0x74+GAS.access_size], ACCESS_SIZE.BYTE |
|
- | 212 | ja no_acpi_reboot |
|
- | 213 | cmp [ebx+0x74+GAS.address.hi], 0 |
|
- | 214 | jnz no_acpi_reboot |
|
- | 215 | mov edx, [ebx+0x74+GAS.address.lo] |
|
- | 216 | movzx eax, byte[ebx+0x80] |
|
- | 217 | out dx, al |
|
- | 218 | jmp $ |
|
- | 219 | ; unreachable |
|
175 | no_acpi_power_off: |
220 | no_acpi_reboot: |
Line 176... | Line 221... | ||
176 | jmp 0x50000 |
221 | jmp 0x50000 |
177 | 222 | ||
178 | align 4 |
223 | align 4 |