Commit Graph

37 Commits

Author SHA1 Message Date
Martin Whitaker
f8b82eb0bd Exclude copyright notices from Doxygen file descriptions. 2022-02-19 19:56:55 +00:00
Martin Whitaker
d04ec9f681 Rename to Memtest86+ v6.0. 2022-02-19 19:44:58 +00:00
Martin Whitaker
76adad2fe6 Add ability to generate internal API documentation using Doxygen. 2022-02-19 16:17:40 +00:00
Martin Whitaker
f4a413cf6d Translate non-usable EFI memory regions to E820_RESERVED, not E820_NONE.
This is more correct. Using E820_NONE may have been confusing the code
in pmem.c that sanitises the memory map.
2022-02-13 20:44:58 +00:00
Martin Whitaker
99e258457b Use je/jne instead of jz/jnz when testing boolean variables in startup code.
Just for readability - they are aliases for the same instructions.
2022-02-12 09:39:18 +00:00
Martin Whitaker
39d5715224 Fix interrupt handling when long mode is enabled in a 32-bit binary (part 2).
Handle passing the processor state to the application interrupt handler.
Update the 64-bit code to match the new trap state structure definition.
2022-02-12 09:39:09 +00:00
Martin Whitaker
111e619b10 Fix interrupt handling when long mode is enabled in a 32-bit binary (part 1).
If long mode is enabled, the interrupt handler always runs in 64-bit
mode, so we need to set up the interrupt dispatch table accordingly.
2022-02-08 23:35:00 +00:00
Martin Whitaker
e96fd7b99f Fix a few minor issues in the 64-bit startup code...
- the calculation of the RSP value when an interrupt occurred was
  out by 8 bytes
- in a few places a 32-bit pointer was used instead of a 64-bit one
- incorrect tabulation (white space)
2022-02-08 23:29:24 +00:00
Martin Whitaker
9769990679 Extend the use of the startup mutex to cover the entire startup code.
There is more in the startup code that isn't thread safe than just
the use of the temporary stack. So take the mutex for the whole time.
The code isn't that long, so it's not worth trying to cover just the
critical sections.
2022-02-05 18:03:32 +00:00
Martin Whitaker
e37fbbd429 Set stack alignment to 16 bytes.
This needs to be done in the ldscripts.
2022-02-02 18:23:23 +00:00
Martin Whitaker
7acb81e302 Fix assembler warning about unsized bts instruction. 2022-02-02 12:52:44 +00:00
Martin Whitaker
dcac527068 Don't make assumptions about usable memory.
When using a legacy BIOS, the memory regions used by the BIOS are well
defined. This is not the case when using a UEFI BIOS. So include the
stack area in the BSS so the loader knows how much memory to allocate,
and check we have space to relocate the program to either low or high
memory.

There are still some assumptions in the USB driver code that need to
be fixed.
2022-02-02 12:20:39 +00:00
Martin Whitaker
16d55b7dad Remove distinction between physical and virtual CPUs.
This is no longer needed, now we can display as many CPUs as we can
physically handle.
2022-01-31 22:59:14 +00:00
Martin Whitaker
4100a44b12 Properly protect the startup stack with a mutex.
Because we start the APs sequentially, it is unlikely they will coincide
for the brief period that they use the temporary startup stack, but we
should guard against it. This allows us to remove the mutex around the
restart of each AP when relocating, which should improve test times.
2022-01-31 21:54:24 +00:00
Martin Whitaker
c5e9fa4e18 Increase maximum number of APs to 256. 2022-01-29 16:13:05 +00:00
Martin Whitaker
fe4374e818 Allocate the main program stacks after the loaded program.
After we relocate the program, we restart it. So there is no need to copy
over the old stack contents. This allows us to increase the maximum number
of APs without a run time overhead. The maximum number of APs will still
be limited by the size of low memory.
2022-01-29 15:17:00 +00:00
Martin Whitaker
0aa1b1fa97 Rearrange stack space to reduce memory footprint.
The BSP only needs extra stack space during program initialisation. The APs
aren't running at that point, so by positioning the BSP stack above the AP
stacks, it can extend down into the AP stack space without causing any
problems.
2022-01-09 21:25:16 +00:00
Martin Whitaker
a454174f3f Fis startup stack address calculations. 2022-01-09 19:26:56 +00:00
Martin Whitaker
733919966d Add support for boot command line options. 2021-12-23 14:08:02 +00:00
Martin Whitaker
4aea5f4d19 Minor spacing fix. 2021-12-22 16:37:54 +00:00
Martin Whitaker
d70d8dd407 Disable debug output in efisetup.c (committed by accident). 2021-09-04 13:10:09 +01:00
Martin Whitaker
abbee1a25f Use 'size -B' instead of 'size -G' to determine BSS size.
The -G option is a relatively recent addition, so fails on older
systems (issue #11).
2021-09-02 18:11:30 +01:00
Martin Whitaker
bb667b600f Use ACPI RSDP address from boot_params if provided by bootloader. 2020-12-11 16:18:04 +00:00
Martin Whitaker
b508b528d0 Add more EFI display debug. 2020-11-19 20:10:15 +00:00
Martin Whitaker
e91d4bc0b0 Fix bug in setting screen info from EFI bit mask mode. 2020-11-01 16:57:23 +00:00
Martin Whitaker
4f5cabedf3 Add code for debugging EFI display problems. 2020-11-01 16:56:25 +00:00
Martin Whitaker
7d044ed089 Add support for USB legacy boot on hybrid ISO. 2020-07-09 15:53:44 +01:00
Martin Whitaker
fd7f4be912 Simplify. 2020-07-09 15:49:58 +01:00
Martin Whitaker
c089a81ed1 Add support for 32-bit EFI boot. 2020-07-08 11:07:32 +01:00
Martin Whitaker
4573faa78c Simplify addressing in bootsect.S.
We locate boot at address 0 when linking, so no need to adjust addresses.
2020-07-04 10:18:32 +01:00
Martin Whitaker
c505472939 Support direct 64-bit EFI boot. 2020-07-03 22:42:45 +01:00
Martin Whitaker
b68afac6c0 Cosmetic changes to ldscripts. 2020-07-03 19:33:42 +01:00
Martin Whitaker
a2110cb97f Add support for 64-bit EFI handover boot protocol. 2020-06-30 13:54:58 +01:00
Martin Whitaker
9492c086fe Move boot_params definitions into separate header file. 2020-06-29 12:09:13 +01:00
Martin Whitaker
cae4ffa636 Add missing header include. 2020-05-30 10:55:34 +01:00
Martin Whitaker
dc74849f50 Disable paging whilst updating the pdbr during restart. 2020-05-30 10:52:35 +01:00
Martin Whitaker
fbd3376668 Initial commit. 2020-05-24 21:30:55 +01:00