Skip to content

Commit e755548

Browse files
author
Ian Seyler
committed
Store values from CPUID
1 parent 97687d8 commit e755548

File tree

2 files changed

+22
-5
lines changed

2 files changed

+22
-5
lines changed

docs/README.md

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -168,11 +168,14 @@ The Pure64 information table is located at `0x0000000000005000` and ends at `0x0
168168
<table border="1" cellpadding="2" cellspacing="0">
169169
<tr><th>Memory Address</th><th>Variable Size</th><th>Name</th><th>Description</th></tr>
170170
<tr><td>0x5000</td><td>64-bit</td><td>ACPI</td><td>Address of the ACPI tables</td></tr>
171-
<tr><td>0x5008</td><td>32-bit</td><td>BSP_ID</td><td>APIC ID of the BSP</td></tr>
172-
<tr><td>0x5010</td><td>16-bit</td><td>CPUSPEED</td><td>Speed of the CPUs in MegaHertz (<a href="http://en.wikipedia.org/wiki/Hertz">MHz</a>)</td></tr>
173-
<tr><td>0x5012</td><td>16-bit</td><td>CORES_ACTIVE</td><td>The number of CPU cores that were activated in the system</td></tr>
174-
<tr><td>0x5014</td><td>16-bit</td><td>CORES_DETECT</td><td>The number of CPU cores that were detected in the system</td></tr>
175-
<tr><td>0x5016 - 0x501F</td><td>&nbsp;</td><td>&nbsp;</td><td>For future use</td></tr>
171+
<tr><td>0x5008</td><td>32-bit</td><td>CPU_BSP_ID</td><td>APIC ID of the BSP</td></tr>
172+
<tr><td>0x5010</td><td>16-bit</td><td>CPU_SPEED</td><td>Speed of the CPUs in MegaHertz (<a href="http://en.wikipedia.org/wiki/Hertz">MHz</a>)</td></tr>
173+
<tr><td>0x5012</td><td>16-bit</td><td>CPU_CORES_ACTIVE</td><td>The number of CPU cores that were activated in the system</td></tr>
174+
<tr><td>0x5014</td><td>16-bit</td><td>CPU_CORES_DETECT</td><td>The number of CPU cores that were detected in the system</td></tr>
175+
<tr><td>0x5016</td><td>8-bit</td><td>CPU_MEM_PHYSICAL</td><td>The number of bits that are valid for a physical address</td></tr>
176+
<tr><td>0x5017</td><td>8-bit</td><td>CPU_MEM_VIRTUAL</td><td>The number of bits that are valid for a virtual address</td></tr>
177+
<tr><td>0x5018</td><td>32-bit</td><td>CPU_ID_MAX_STANDARD</td><td>The maximum CPUID standard leaf</td></tr>
178+
<tr><td>0x501C</td><td>32-bit</td><td>CPU_ID_MAX_EXTENDED</td><td>The maximum CPUID extended leaf</td></tr>
176179
<tr><td>0x5020</td><td>32-bit</td><td>RAMAMOUNT</td><td>Amount of system RAM in Mebibytes (<a href="http://en.wikipedia.org/wiki/Mebibyte">MiB</a>)</td></tr>
177180
<tr><td>0x5022 - 0x502F</td><td>&nbsp;</td><td>&nbsp;</td><td>For future use</td></tr>
178181
<tr><td>0x5030</td><td>8-bit</td><td>IOAPIC_COUNT</td><td>Number of I/O APICs in the system</td></tr>

src/pure64.asm

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -746,6 +746,20 @@ pde_end:
746746
mov ax, [p_cpu_detected]
747747
stosw
748748

749+
mov di, 0x5018
750+
xor eax, eax
751+
cpuid
752+
stosd ; Store maximum supported CPUID standard level
753+
mov eax, 0x80000000
754+
cpuid
755+
stosd ; Store maximum supported CPUID extended level
756+
cmp eax, 0x80000008
757+
jb no_address_size
758+
mov eax, 0x80000008
759+
cpuid
760+
mov [0x5016], ax ; Store virtual/physical address bits
761+
no_address_size:
762+
749763
mov di, 0x5020
750764
mov eax, [p_mem_amount]
751765
and eax, 0xFFFFFFFE

0 commit comments

Comments
 (0)