ROMFLAGS (Compact 2013)
3/26/2014
ROMFLAGS specifies a bitmask of flag options for the kernel.
Syntax
ROMFLAGS = Flags
Parameters
Flags
Specifies a bitmask of flags, which can be a combination of the values given in the following table.Flag
Description
0x00000001
Demand paging is disabled.
0x00000002
Disable full-kernel mode.
0x00000010
Trust only modules from the ROM MODULES section.
0x00000020
Use this flag to stop flushing soft TLB (x86 only).
0x00000040
Honor the /base linker setting for DLLs.
Remarks
Demand paging is disabled when the first bit of ROMFLAGS is set. When demand paging is disabled, a module is fully loaded into RAM before running.
For OEMs that need real-time performance, turning off demand paging eliminates page faults that can cause poor performance.
Full-kernel mode is disabled when the second bit ROMFLAGS is set. You can run all OS threads in either kernel mode or user mode.
Although running threads in kernel mode leaves the entire system vulnerable, it also enables increased performance. This is because the operating system bypasses security functionality that can prevent a thread from entering kernel mode. This can be acceptable in a closed environment, but in an open environment this can have dramatic effects that an OEM must consider.
The Trust module marks only files in ROM as trusted. The OEM code is not used to determine whether a non-ROM module is trusted.
By default, everything in the ROM MODULES section and anything that loads from a file system is trusted unless the OEM enables the OAL for module-by-module checking. The 0x00000010 bit can be used to signal to the kernel that only ROM MODULES are trusted by default and that they do not require the OAL to be enabled.
For security reasons, the kernel flushes the x86 TLB. The bit 0x00000020 can prevent this from happening, but creates a security hole. If real-time performance is required and there are no security concerns, set this flag.
Loading a DLL at its preferred load address releases the kernel from relocating the DLL and using extra memory. However, there can be a potential backward compatibility issue. DLL binaries might exist that set their preferred load address really low and, thus, cannot be loaded.
OEMs should use caution when enabling this flag and are encouraged to use it only for closed environments.
This flag is not needed if all DLLs are XIP.