BCOS 80x86 Include FilesProject Map
Physical Address Space Map (PASM)
File: 80x86/inc/kernel/pasm.inc
 

Copyright © Brendan Trotter 2008

This material is provided by Brendan Trotter as a service to interested parties on an "as-is" basis, for informational purposes only. Brendan Trotter assumes no responsibility for any errors or omissions. Brendan Trotter does not make, and expressly disclaims any, representations or warranties, express or implied, regarding this web page and the host web site, including, without limitation, any implied warranties of merchantability or fitness for a particular purpose.

Under no circumstances shall Brendan Trotter, or any associated contributors, volunteers or representatives be liable for any damages, whether direct, indirect, special or consequential damages for lost revenues, lost profits, or otherwise, arising from or in connection with this web page, the host web site, or the materials contained herein.

All materials contained in these files are protected by copyright laws, and may not be reproduced, republished, distributed, transmitted, displayed, broadcast or otherwise exploited in any manner without the express prior written permission of Brendan Trotter. You may make one copy of this web page for your personal and non-commercial use only, without altering or removing this copyright notice or any other notice.




PASM Entry Format

 8: struc PASM_ENTRY
 9:       .baseAddress:                 resd 2            ;64-bit base address of range
10:       .length:                      resd 2            ;64-bit length of range in bytes
11:       .type:                        resd 1            ;Range type (as defined by ACPI specifications)
12:       .flags:                       resd 1            ;Range flags (as defined by ACPI specifications)
13:       .domain:                      resd 1            ;NUMA domain for area
14:                                     resd 1            ;Unused (padding)
15: endstruc
16: 
17: 
%define PASMTYPE_unknown            0x00000000        ;Unknown area
18: %define PASMTYPE_RAM                0x00000001        ;Usable RAM
19: %define PASMTYPE_system             0x00000002        ;Reserved (e.g. system ROM, memory-mapped device)
20: %define PASMTYPE_ACPIreclaim        0x00000003        ;ACPI reclaimable memory (usable by OS after reading ACPI tables)
21: %define PASMTYPE_ACPINVS            0x00000004        ;ACPI NVS memory
22: %define PASMTYPE_faulty             0x00000005        ;Unusable/faulty RAM
23: %define PASMTYPE_BIOSreclaim        0x00000006        ;BIOS reclaimable memory (usable by OS after entering stage 2)
24: %define PASMTYPE_mixed              0x00000007        ;Mixed (reported as different types by firmware)
25: 
26: 
%define MAX_KNOWN_PASMTYPE          PASMTYPE_faulty   ;Maximum PASM type accepted from firmware (higher numbers used internally only)
27: %define MAX_USED_PASMTYPE           PASMTYPE_mixed    ;Maximum PASM type used by the OS
28: 
29: 
30: 
%define PASMFLG_invalid             0x00000001        ;Valid entry (only used by boot loaders, invalid entries aren't inserted in the PASM list)
31: %define PASMFLG_nonVolatile         0x00000002        ;Non-volatile area (from memory detection or SRAT)
32: %define PASMFLG_hotPlug             0x80000000        ;Hot-pluggable area (from SRAT)


PASM Detection Methods

38: %define PASMDETECT_unknown                0x00        ;Unknown
39: %define PASMDETECT_probing                0x01        ;Manual probing
40: %define PASMDETECT_CMOS                   0x02        ;CMOS locations 0x17 and 0x18
41: %define PASMDETECT_CMOS_probe16MB         0x03        ;CMOS locations 0x17 and 0x18 with probing above 16 MiB
42: %define PASMDETECT_CMOS_probe64MB         0x04        ;CMOS locations 0x17 and 0x18 with probing above 64 MiB
43: %define PASMDETECT_int15_88               0x05        ;BIOS interrupt 0x15 (AH=0x88)
44: %define PASMDETECT_int15_88_probe16MB     0x06        ;BIOS interrupt 0x15 (AH=0x88) with probing above 16 MiB
45: %define PASMDETECT_int15_88_probe64MB     0x07        ;BIOS interrupt 0x15 (AH=0x88) with probing above 64 MiB
46: %define PASMDETECT_int15_DA88             0x08        ;BIOS interrupt 0x15 (AX=0xDA88)
47: %define PASMDETECT_int15_DA88_probe16MB   0x09        ;BIOS interrupt 0x15 (AX=0xDA88) with probing above 16 MiB
48: %define PASMDETECT_int15_8A               0x0A        ;BIOS interrupt 0x15 (AH=0x8A)
49: %define PASMDETECT_int15_8A_probe16MB     0x0B        ;BIOS interrupt 0x15 (AH=0x8A) with probing above 16 MiB
50: %define PASMDETECT_int15_C7               0x0C        ;BIOS interrupt 0x15 (AH=0xC7)
51: %define PASMDETECT_int15_E801             0x0D        ;BIOS interrupt 0x15 (AX=0xE801)
52: %define PASMDETECT_int15_E802             0x0E        ;BIOS interrupt 0x15 (AX=0xE802) **unused due to lack of information**
53: %define PASMDETECT_int15_E881             0x0F        ;BIOS interrupt 0x15 (AX=0xE881)
54: %define PASMDETECT_int15_E820             0x10        ;BIOS interrupt 0x15 (EAX=0xE820)
55: %define PASMDETECT_int15_E820_ACPI3       0x11        ;BIOS interrupt 0x15 (EAX=0xE820, ACPI 3.0)
56: %define PASMDETECT_embedded               0x12        ;From embedded ROM


Generated on Mon Oct 12 01:17:24 2009