Rename to Memtest86+ v6.0.

This commit is contained in:
Martin Whitaker 2022-02-19 19:44:58 +00:00
parent 0075375632
commit d04ec9f681
10 changed files with 70 additions and 71 deletions

View File

@ -1,10 +1,10 @@
# PCMemTest # Memtest86+
PCMemTest is a stand-alone memory tester for x86 and x86-64 architecture Memtest86+ is a stand-alone memory tester for x86 and x86-64 architecture
computers. It provides a more thorough memory check than that provided by computers. It provides a more thorough memory check than that provided by
BIOS memory tests. BIOS memory tests.
PCMemTest can be loaded and run either directly by a PC BIOS (legacy or UEFI) Memtest86+ can be loaded and run either directly by a PC BIOS (legacy or UEFI)
or via an intermediate bootloader that supports the Linux 16-bit, 32-bit, or via an intermediate bootloader that supports the Linux 16-bit, 32-bit,
64-bit, or EFI handover boot protocol. It should work on any Pentium class or 64-bit, or EFI handover boot protocol. It should work on any Pentium class or
later 32-bit or 64-bit CPU. later 32-bit or 64-bit CPU.
@ -21,34 +21,32 @@ later 32-bit or 64-bit CPU.
* [Trouble-shooting Memory Errors](#trouble-shooting-memory-errors) * [Trouble-shooting Memory Errors](#trouble-shooting-memory-errors)
* [Execution Time](#execution-time) * [Execution Time](#execution-time)
* [Memory Testing Philosophy](#memory-testing-philosophy) * [Memory Testing Philosophy](#memory-testing-philosophy)
* [PCMemTest Test Algorithms](#pcmemtest-test-algorithms) * [Memtest86+ Test Algorithms](#memtest86+-test-algorithms)
* [Individual Test Descriptions](#individual-test-descriptions) * [Individual Test Descriptions](#individual-test-descriptions)
* [Known Limitations and Bugs](#known-limitations-and-bugs) * [Known Limitations and Bugs](#known-limitations-and-bugs)
* [Acknowledgments](#acknowledgments) * [Acknowledgments](#acknowledgments)
## Origins ## Origins
PCMemTest is a fork and rewrite of Memtest86+, which in turn was a fork of Memtest86+ v6.0 was based on PCMemTest, which was a fork and rewrite of the
Memtest86. The purpose of the rewrite was to: earlier Memtest86+ v5.01, which in turn was a fork of Memtest86. The purpose
of the PCMemTest rewrite was to:
* make the code more readable and easier to maintain * make the code more readable and easier to maintain
* make the code 64-bit clean and support UEFI boot * make the code 64-bit clean and support UEFI boot
* fix failures seen when building with newer versions of GCC * fix failures seen when building with newer versions of GCC
In the process, a number of features of Memtest86+ that are not required for In the process of creating PCMemTest, a number of features of Memtest86+ v5.01
the main purpose of PCMemTest (testing the system memory) have been dropped. that were not strictly required for testing the system memory were dropped. In
In particular, no attempt is made to measure the cache and main memory speed, particular, no attempt is made to measure the cache and main memory speed, or
or to identify and report the DRAM type. This should allow PCMemTest to work to identify and report the DRAM type. Some of these features will be added back
without modification on future hardware. in future releases.
PCMemTest is based on the v5.01 release of Memtest86+, which was the last
public release at the time of the fork.
## Licensing ## Licensing
PCMemTest is released under the terms of the GNU General Public License version Memtest86+ is released under the terms of the GNU General Public License
2 (GPLv2). Other than the provisions of the GPL there are no restrictions for version 2 (GPLv2). Other than the provisions of the GPL there are no
use, private or commercial. See the LICENSE file for details. restrictions for use, private or commercial. See the LICENSE file for details.
## Build and Installation ## Build and Installation
@ -92,8 +90,8 @@ When using an intermediate bootloader, either the `memtest.bin` file or the
access, and the bootloader configuration should be updated to boot from access, and the bootloader configuration should be updated to boot from
that file as if it were a Linux kernel with no initial RAM disk. Several that file as if it were a Linux kernel with no initial RAM disk. Several
boot command line options are recognised, as described below. If using the boot command line options are recognised, as described below. If using the
16-bit boot protocol, PCMemTest will use the display in text mode (640x400). 16-bit boot protocol, Memtest86+ will use the display in text mode (640x400).
If using the 32-bit or 64-bit boot protocols, PCMemTest will use the display If using the 32-bit or 64-bit boot protocols, Memtest86+ will use the display
in either text mode or graphics mode, as specified in the `boot_params` struct in either text mode or graphics mode, as specified in the `boot_params` struct
passed to it by the bootloader. If in graphics mode, the supplied framebuffer passed to it by the bootloader. If in graphics mode, the supplied framebuffer
must be at least 640x400 pixels; if larger, the display will be centred. If must be at least 640x400 pixels; if larger, the display will be centred. If
@ -107,12 +105,12 @@ on your build system. You may need to adjust some path and file names in
the make file to match the naming on your system. the make file to match the naming on your system.
The GRUB configuration files contained in the `grub` directory are there for The GRUB configuration files contained in the `grub` directory are there for
use on the test ISO, but also serve as an example of how to boot PCMemTest use on the test ISO, but also serve as an example of how to boot Memtest86+
from GRUB. from GRUB.
## Boot Options ## Boot Options
An intermediate bootloader may pass a boot command line to PCMemTest. The An intermediate bootloader may pass a boot command line to Memtest86+. The
command line may contain one or more options, separated by spaces. Each command line may contain one or more options, separated by spaces. Each
option consists of an option name, optionally followed by an `=` sign and option consists of an option name, optionally followed by an `=` sign and
one or more parameters, separated by commas. The following options are one or more parameters, separated by commas. The following options are
@ -130,7 +128,7 @@ recognised:
## Keyboard Selection ## Keyboard Selection
PCMemTest supports both the legacy keyboard interface (using I/O ports 0x60 Memtest86+ supports both the legacy keyboard interface (using I/O ports 0x60
and 0x64) and USB keyboards (using its own USB device drivers). One or the and 0x64) and USB keyboards (using its own USB device drivers). One or the
other can be selected via the boot command line, If neither is selected, the other can be selected via the boot command line, If neither is selected, the
default is to use both. An additional option on the boot command line is default is to use both. An additional option on the boot command line is
@ -139,7 +137,7 @@ older USB devices.
Older BIOSs usually support USB legacy keyboard emulation, which makes USB Older BIOSs usually support USB legacy keyboard emulation, which makes USB
keyboards act like legacy keyboards connected to ports 0x60 and 0x64. This keyboards act like legacy keyboards connected to ports 0x60 and 0x64. This
can often be enabled or disabled in the BIOS setup menus. If PCMemTest's can often be enabled or disabled in the BIOS setup menus. If Memtest86+'s
USB device drivers are enabled, they will override this and access any USB USB device drivers are enabled, they will override this and access any USB
keyboards directly. The downside of that is that the USB controllers and keyboards directly. The downside of that is that the USB controllers and
device drivers require some memory to be reserved for their private use, device drivers require some memory to be reserved for their private use,
@ -151,17 +149,17 @@ emulation and add `keyboard=legacy` on the boot command line.
you enable the Compatibility System Module (CSM) in the BIOS setup. Others you enable the Compatibility System Module (CSM) in the BIOS setup. Others
only support it when actually booting in legacy mode. only support it when actually booting in legacy mode.
**NOTE**: PCMemTest's USB device drivers are work in progress. Not all USB **NOTE**: Memtest86+'s USB device drivers are work in progress. Not all USB
devices are supported yet. devices are supported yet, and there may be problems on some hardware.
## Operation ## Operation
Once booted, PCMemTest will initialise its display, then pause for a few Once booted, Memtest86+ will initialise its display, then pause for a few
seconds to allow the user to configure its operation. If no key is pressed, seconds to allow the user to configure its operation. If no key is pressed,
it will automatically start running all tests using a single CPU core, it will automatically start running all tests using a single CPU core,
continuing indefinitely until the user reboots or halts the machine. continuing indefinitely until the user reboots or halts the machine.
At startup, and when running tests, PCMemTest responds to the following keys: At startup, and when running tests, Memtest86+ responds to the following keys:
* F1 * F1
* enters the configuration menu * enters the configuration menu
@ -281,7 +279,7 @@ results.
## Trouble-shooting Memory Errors ## Trouble-shooting Memory Errors
Please be aware that not all errors reported by PCMemTest are due to bad Please be aware that not all errors reported by Memtest86+ are due to bad
memory. The test implicitly tests the CPU, caches, and motherboard. It is memory. The test implicitly tests the CPU, caches, and motherboard. It is
impossible for the test to determine what causes the failure to occur. Most impossible for the test to determine what causes the failure to occur. Most
failures will be due to a problem with memory. When it is not, the only option failures will be due to a problem with memory. When it is not, the only option
@ -320,8 +318,8 @@ module may work fine in one system and not in another. This is not uncommon
and is a source of confusion. The components are not necessarily bad but and is a source of confusion. The components are not necessarily bad but
certain combinations may need to be avoided. certain combinations may need to be avoided.
In the vast majority of cases errors reported by PCMemTest are valid. There In the vast majority of cases errors reported by Memtest86+ are valid. There
are some systems that cause PCMemTest to be confused about the size of memory are some systems that cause Memtest86+ to be confused about the size of memory
and it will try to test non-existent memory. This will cause a large number of and it will try to test non-existent memory. This will cause a large number of
consecutive addresses to be reported as bad and generally there will be many consecutive addresses to be reported as bad and generally there will be many
bits in error. If you have a relatively small number of failing addresses and bits in error. If you have a relatively small number of failing addresses and
@ -332,14 +330,14 @@ All valid memory errors should be corrected. It is possible that a particular
error will never show up in normal operation. However, operating with marginal error will never show up in normal operation. However, operating with marginal
memory is risky and can result in data loss and even disk corruption. memory is risky and can result in data loss and even disk corruption.
PCMemTest can not diagnose many types of PC failures. For example a faulty CPU Memtest86+ can not diagnose many types of PC failures. For example a faulty CPU
that causes your OS to crash will most likely just cause PCMemTest to crash in that causes your OS to crash will most likely just cause Memtest86+ to crash in
the same way. the same way.
## Execution Time ## Execution Time
The time required for a complete pass of PCMemTest will vary greatly depending The time required for a complete pass of Memtest86+ will vary greatly depending
on CPU speed, memory speed, and memory size. PCMemTest executes indefinitely. on CPU speed, memory speed, and memory size. Memtest86+ executes indefinitely.
The pass counter increments each time that all of the selected tests have been The pass counter increments each time that all of the selected tests have been
run. Generally a single pass is sufficient to catch all but the most obscure run. Generally a single pass is sufficient to catch all but the most obscure
errors. However, for complete confidence when intermittent errors are suspected errors. However, for complete confidence when intermittent errors are suspected
@ -370,9 +368,9 @@ number of possible chip layouts for different chip types and manufacturers
making this strategy impractical. However, there are testing algorithms that making this strategy impractical. However, there are testing algorithms that
can approximate this ideal strategy. can approximate this ideal strategy.
## PCMemTest Test Algorithms ## Memtest86+ Test Algorithms
PCMemTest uses two algorithms that provide a reasonable approximation of the Memtest86+ uses two algorithms that provide a reasonable approximation of the
ideal test strategy above. The first of these strategies is called moving ideal test strategy above. The first of these strategies is called moving
inversions. The moving inversion tests work as follows: inversions. The moving inversion tests work as follows:
@ -419,7 +417,7 @@ strides may be more effective but would take longer to execute. The choice of
## Individual Test Descriptions ## Individual Test Descriptions
PCMemTest executes a series of numbered tests to check for errors. These tests Memtest86+ executes a series of numbered tests to check for errors. These tests
consist of a combination of test algorithm, data pattern and caching. The consist of a combination of test algorithm, data pattern and caching. The
execution order for these tests were arranged so that errors will be detected execution order for these tests were arranged so that errors will be detected
as rapidly as possible. A description of each test follows. as rapidly as possible. A description of each test follows.
@ -515,22 +513,23 @@ of all zeros and all ones.
## Acknowledgments ## Acknowledgments
PCMemTest was based on Memtest86+, developed by Samuel Demeulemeester, which Memtest86+ v6.0 was based on PCMemTest, developed by Martin Whitaker, which
in turn was based on Memtest86, developed by Chris Brady with the resources was based on Memtest86+ v5.01, developed by Samuel Demeulemeester, which in
and assistance listed below: turn was based on Memtest86, developed by Chris Brady with the resources and
assistance listed below:
* The initial versions of the source files bootsect.S, setup.S, head.S and * The initial versions of the source files bootsect.S, setup.S, head.S and
build.c are from the Linux 1.2.1 kernel and have been heavily modified. build.c are from the Linux 1.2.1 kernel and have been heavily modified.
* Doug Sisk provided code to support a console connected via a serial port. * Doug Sisk provided code to support a console connected via a serial port.
(not used by PCMemTest) (not currently used)
* Code to create BadRAM patterns was provided by Rick van Rein. * Code to create BadRAM patterns was provided by Rick van Rein.
* The block move test is based on Robert Redelmeier's burnBX test. * The block move test is based on Robert Redelmeier's burnBX test.
* Screen buffer code was provided by Jani Averbach. * Screen buffer code was provided by Jani Averbach.
(not used by PCMemTest) (not used by Memtest86+ v6.0)
* Eric Biederman provided all of the feature content for version 3.0 * Eric Biederman provided all of the feature content for version 3.0
plus many bugfixes and significant code cleanup. plus many bugfixes and significant code cleanup.

View File

@ -71,9 +71,9 @@ void display_init(void)
set_background_colour(WHITE); set_background_colour(WHITE);
clear_screen_region(0, 0, 0, 27); clear_screen_region(0, 0, 0, 27);
#if TESTWORD_WIDTH > 32 #if TESTWORD_WIDTH > 32
prints( 0, 0, " PCMemTest-64 v1.6-devel"); prints(0, 0, " Memtest86+64 v6.0pre");
#else #else
prints( 0, 0, " PCMemTest-32 v1.6-devel"); prints(0, 0, " Memtest86+32 v6.0pre");
#endif #endif
set_foreground_colour(WHITE); set_foreground_colour(WHITE);
set_background_colour(BLUE); set_background_colour(BLUE);

View File

@ -345,7 +345,7 @@ sectors:
.word 0 .word 0
boot_msg: boot_msg:
.ascii "Loading PCMemTest" .ascii "Loading Memtest86+"
boot_msg_end: boot_msg_end:
# Emulate the Linux boot header, to allow loading by intermediate boot loaders. # Emulate the Linux boot header, to allow loading by intermediate boot loaders.

View File

@ -163,7 +163,7 @@ dap_lba_start:
.quad 0 .quad 0
boot_msg: boot_msg:
.ascii "Loading PCMemTest\r\n" .ascii "Loading Memtest86+\r\n"
boot_msg_end: boot_msg_end:
error_msg: error_msg:

View File

@ -129,7 +129,7 @@ esp.img: memtest.efi
memtest.iso: memtest.mbr floppy.img esp.img memtest.iso: memtest.mbr floppy.img esp.img
@mkdir -p iso/boot @mkdir -p iso/boot
cp floppy.img iso/boot/floppy.img cp floppy.img iso/boot/floppy.img
xorrisofs -pad -R -J -volid PCMemTest32 -graft-points -hide-rr-moved --grub2-mbr memtest.mbr \ xorrisofs -pad -R -J -volid Memtest86+32 -graft-points -hide-rr-moved --grub2-mbr memtest.mbr \
-b /boot/floppy.img --efi-boot --interval:appended_partition_2:all:: \ -b /boot/floppy.img --efi-boot --interval:appended_partition_2:all:: \
-part_like_isohybrid -iso_mbr_part_type 0x00 -append_partition 2 0xef ./esp.img \ -part_like_isohybrid -iso_mbr_part_type 0x00 -append_partition 2 0xef ./esp.img \
-o ./memtest.iso /boot=./iso/boot /EFI=./iso/EFI -o ./memtest.iso /boot=./iso/boot /EFI=./iso/EFI
@ -167,7 +167,7 @@ grub-bootia32.efi:
grub-esp.img: memtest.efi grub-bootia32.efi ../grub/grub-efi.cfg grub-esp.img: memtest.efi grub-bootia32.efi ../grub/grub-efi.cfg
@mkdir -p grub-iso/EFI/BOOT/grub/i386-efi grub-iso/EFI/BOOT/grub/fonts @mkdir -p grub-iso/EFI/BOOT/grub/i386-efi grub-iso/EFI/BOOT/grub/fonts
cp memtest.efi grub-iso/EFI/BOOT/pcmemtest cp memtest.efi grub-iso/EFI/BOOT/memtest
cp grub-bootia32.efi grub-iso/EFI/BOOT/bootia32.efi cp grub-bootia32.efi grub-iso/EFI/BOOT/bootia32.efi
cp ../grub/grub-efi.cfg grub-iso/EFI/BOOT/grub/grub.cfg cp ../grub/grub-efi.cfg grub-iso/EFI/BOOT/grub/grub.cfg
cp $(GRUB_FONT_DIR)/unicode.pf2 grub-iso/EFI/BOOT/grub/fonts/ cp $(GRUB_FONT_DIR)/unicode.pf2 grub-iso/EFI/BOOT/grub/fonts/
@ -178,12 +178,12 @@ grub-esp.img: memtest.efi grub-bootia32.efi ../grub/grub-efi.cfg
grub-memtest.iso: memtest.bin grub-eltorito.img ../grub/grub-legacy.cfg grub-esp.img grub-memtest.iso: memtest.bin grub-eltorito.img ../grub/grub-legacy.cfg grub-esp.img
@mkdir -p grub-iso/boot/grub/i386-pc grub-iso/boot/grub/fonts @mkdir -p grub-iso/boot/grub/i386-pc grub-iso/boot/grub/fonts
cp memtest.bin grub-iso/boot/pcmemtest cp memtest.bin grub-iso/boot/memtest
cp grub-eltorito.img grub-iso/boot/eltorito.img cp grub-eltorito.img grub-iso/boot/eltorito.img
cp ../grub/grub-legacy.cfg grub-iso/boot/grub/grub.cfg cp ../grub/grub-legacy.cfg grub-iso/boot/grub/grub.cfg
cp $(GRUB_FONT_DIR)/unicode.pf2 grub-iso/boot/grub/fonts/ cp $(GRUB_FONT_DIR)/unicode.pf2 grub-iso/boot/grub/fonts/
cp $(GRUB_LIB_DIR)/i386-pc/*.mod grub-iso/boot/grub/i386-pc/ cp $(GRUB_LIB_DIR)/i386-pc/*.mod grub-iso/boot/grub/i386-pc/
xorrisofs -pad -R -J -volid PCMemTest64 -graft-points -hide-rr-moved \ xorrisofs -pad -R -J -volid Memtest86+32 -graft-points -hide-rr-moved \
--grub2-mbr $(GRUB_LIB_DIR)/i386-pc/boot_hybrid.img \ --grub2-mbr $(GRUB_LIB_DIR)/i386-pc/boot_hybrid.img \
-b /boot/eltorito.img -no-emul-boot -boot-load-size 4 -boot-info-table --grub2-boot-info \ -b /boot/eltorito.img -no-emul-boot -boot-load-size 4 -boot-info-table --grub2-boot-info \
--efi-boot --interval:appended_partition_2:all:: \ --efi-boot --interval:appended_partition_2:all:: \

View File

@ -128,7 +128,7 @@ esp.img: memtest.efi
memtest.iso: memtest.mbr floppy.img esp.img memtest.iso: memtest.mbr floppy.img esp.img
@mkdir -p iso/boot @mkdir -p iso/boot
cp floppy.img iso/boot/floppy.img cp floppy.img iso/boot/floppy.img
xorrisofs -pad -R -J -volid PCMemTest64 -graft-points -hide-rr-moved --grub2-mbr memtest.mbr \ xorrisofs -pad -R -J -volid Memtest86+64 -graft-points -hide-rr-moved --grub2-mbr memtest.mbr \
-b /boot/floppy.img --efi-boot --interval:appended_partition_2:all:: \ -b /boot/floppy.img --efi-boot --interval:appended_partition_2:all:: \
-part_like_isohybrid -iso_mbr_part_type 0x00 -append_partition 2 0xef ./esp.img \ -part_like_isohybrid -iso_mbr_part_type 0x00 -append_partition 2 0xef ./esp.img \
-o ./memtest.iso /boot=./iso/boot /EFI=./iso/EFI -o ./memtest.iso /boot=./iso/boot /EFI=./iso/EFI
@ -166,7 +166,7 @@ grub-bootx64.efi:
grub-esp.img: memtest.efi grub-bootx64.efi ../grub/grub-efi.cfg grub-esp.img: memtest.efi grub-bootx64.efi ../grub/grub-efi.cfg
@mkdir -p grub-iso/EFI/BOOT/grub/x86_64-efi grub-iso/EFI/BOOT/grub/fonts @mkdir -p grub-iso/EFI/BOOT/grub/x86_64-efi grub-iso/EFI/BOOT/grub/fonts
cp memtest.efi grub-iso/EFI/BOOT/pcmemtest cp memtest.efi grub-iso/EFI/BOOT/memtest
cp grub-bootx64.efi grub-iso/EFI/BOOT/bootx64.efi cp grub-bootx64.efi grub-iso/EFI/BOOT/bootx64.efi
cp ../grub/grub-efi.cfg grub-iso/EFI/BOOT/grub/grub.cfg cp ../grub/grub-efi.cfg grub-iso/EFI/BOOT/grub/grub.cfg
cp $(GRUB_FONT_DIR)/unicode.pf2 grub-iso/EFI/BOOT/grub/fonts/ cp $(GRUB_FONT_DIR)/unicode.pf2 grub-iso/EFI/BOOT/grub/fonts/
@ -177,12 +177,12 @@ grub-esp.img: memtest.efi grub-bootx64.efi ../grub/grub-efi.cfg
grub-memtest.iso: memtest.bin grub-eltorito.img ../grub/grub-legacy.cfg grub-esp.img grub-memtest.iso: memtest.bin grub-eltorito.img ../grub/grub-legacy.cfg grub-esp.img
@mkdir -p grub-iso/boot/grub/i386-pc grub-iso/boot/grub/fonts @mkdir -p grub-iso/boot/grub/i386-pc grub-iso/boot/grub/fonts
cp memtest.bin grub-iso/boot/pcmemtest cp memtest.bin grub-iso/boot/memtest
cp grub-eltorito.img grub-iso/boot/eltorito.img cp grub-eltorito.img grub-iso/boot/eltorito.img
cp ../grub/grub-legacy.cfg grub-iso/boot/grub/grub.cfg cp ../grub/grub-legacy.cfg grub-iso/boot/grub/grub.cfg
cp $(GRUB_FONT_DIR)/unicode.pf2 grub-iso/boot/grub/fonts/ cp $(GRUB_FONT_DIR)/unicode.pf2 grub-iso/boot/grub/fonts/
cp $(GRUB_LIB_DIR)/i386-pc/*.mod grub-iso/boot/grub/i386-pc/ cp $(GRUB_LIB_DIR)/i386-pc/*.mod grub-iso/boot/grub/i386-pc/
xorrisofs -pad -R -J -volid PCMemTest64 -graft-points -hide-rr-moved \ xorrisofs -pad -R -J -volid Memtest86+64 -graft-points -hide-rr-moved \
--grub2-mbr $(GRUB_LIB_DIR)/i386-pc/boot_hybrid.img \ --grub2-mbr $(GRUB_LIB_DIR)/i386-pc/boot_hybrid.img \
-b /boot/eltorito.img -no-emul-boot -boot-load-size 4 -boot-info-table --grub2-boot-info \ -b /boot/eltorito.img -no-emul-boot -boot-load-size 4 -boot-info-table --grub2-boot-info \
--efi-boot --interval:appended_partition_2:all:: \ --efi-boot --interval:appended_partition_2:all:: \

View File

@ -32,7 +32,7 @@ DOXYFILE_ENCODING = UTF-8
# title of most generated pages and in a few other places. # title of most generated pages and in a few other places.
# The default value is: My Project. # The default value is: My Project.
PROJECT_NAME = "PCMemTest" PROJECT_NAME = "Memtest86+"
# The PROJECT_NUMBER tag can be used to enter a project or revision number. This # The PROJECT_NUMBER tag can be used to enter a project or revision number. This
# could be handy for archiving the generated documentation or if some version # could be handy for archiving the generated documentation or if some version

View File

@ -1,6 +1,6 @@
# Developer's Guide # Developer's Guide
This is the developer's guide to the PCMemTest source code. The user's guide This is the developer's guide to the Memtest86+ source code. The user's guide
can be found in the README.md file in the top level directory. can be found in the README.md file in the top level directory.
## Code Organisation ## Code Organisation
@ -14,12 +14,12 @@ subdirectory of the same name:
* boot * boot
The code that transitions from the BIOS or bootloader entry point to the The code that runs from the BIOS or bootloader entry point to the
start of the main application. start of the main application.
* lib * lib
The subset of the C standard library that is used by PCMemTest plus other The subset of the C standard library that is used by Memtest86+ plus other
hardware-independent low-level support functions. hardware-independent low-level support functions.
* system * system
@ -31,7 +31,7 @@ subdirectory of the same name:
The individual memory tests. The individual memory tests.
The boot code is mostly written in AT&T syntax x86 assembly language. The The boot code is mostly written in AT&T syntax x86 assembly language. The
remaining code is written in C. remaining code is written in C with a smattering of inline assembly code.
Each category is further subdivided into multiple source files, splitting the Each category is further subdivided into multiple source files, splitting the
code into small units of closely related functionality. For the C code, the code into small units of closely related functionality. For the C code, the

View File

@ -11,12 +11,12 @@ insmod linux
insmod linuxefi insmod linuxefi
insmod linux32 insmod linux32
menuentry "Start PCMemTest using 'linux' command" { menuentry "Start Memtest86+ using 'linux' command" {
linux /EFI/BOOT/pcmemtest linux /EFI/BOOT/memtest
} }
menuentry "Start PCMemTest using 'linuxefi' command" { menuentry "Start Memtest86+ using 'linuxefi' command" {
linuxefi /EFI/BOOT/pcmemtest linuxefi /EFI/BOOT/memtest
} }
menuentry "Start PCMemTest using 'linux32' command" { menuentry "Start Memtest86+ using 'linux32' command" {
linux32 /EFI/BOOT/pcmemtest linux32 /EFI/BOOT/memtest
} }

View File

@ -11,12 +11,12 @@ insmod linux
insmod linux16 insmod linux16
insmod linux32 insmod linux32
menuentry "Start PCMemTest using 'linux' command" { menuentry "Start Memtest86+ using 'linux' command" {
linux /boot/pcmemtest linux /boot/memtest
} }
menuentry "Start PCMemTest using 'linux16' command" { menuentry "Start Memtest86+ using 'linux16' command" {
linux16 /boot/pcmemtest linux16 /boot/memtest
} }
menuentry "Start PCMemTest using 'linux32' command" { menuentry "Start Memtest86+ using 'linux32' command" {
linux32 /boot/pcmemtest linux32 /boot/memtest
} }