В PTE есть несколько битов, доступных программисту.
Например, в ядре linux определены следующие макросы
// arch/x86/include/asm/pgtable_types.h
#define _PAGE_BIT_SOFTW1 9 /* available for programmer */
#define _PAGE_BIT_SOFTW2 10 /* " */
#define _PAGE_BIT_SOFTW3 11 /* " */
#define _PAGE_BIT_SOFTW4 58 /* available for programmer */
Однако кажется, что 9-й, 11-й и 58-й биты используются некоторым кодом в ядре.
Я отключил некоторые настройки и макросы, подобные следующему, чтобы эти биты не использовались кодом.
// arch/x86/include/asm/pgtable_types.h
#define __HAVE_ARCH_PTE_SPECIAL
#undef __HAVE_ARCH_PTE_SPECIAL // This is added by me.
// arch/Kconfig
#config HAVE_ARCH_SOFT_DIRTY
# bool
После отключения я скомпилировал ядро и получил сообщение об ошибке ядра.
ld:./arch/x86/kernel/vmlinux.lds:506: syntax error
Makefile:983: recipe for target 'vmlinux' failed
make: *** [vmlinux] Error 1
Я хочу использовать эти биты.
Как я могу отключить код, который использует эти биты?