LINUX.ORG.RU

Что за константа MODULE_ADDR

 , ,


0

1

Портирую небольшую програмулину на e2k. В програмулине есть некоторая константа MODULE_ADDR, которая объявляется отдельно для каждой архитектуры.
Для i386: MODULE_ADDR 0xa0000000
Для x86_64: #define MODULE_ADDR 0xffffffffa0000000UL
Для arm

 
#define PAGE_OFFSET     0xC0000000
#define MODULE_ADDR     (PAGE_OFFSET - 0x00800000)
Что это за константа, и как её в операционке найти?

★★★

Базовый адрес региона, куда грузятся модули.

MODULES_VADDR в arch/<arch>/include/asm/pgtable[_64].h

Для sparc:

/* The kernel image occupies 0x4000000 to 0x6000000 (4MB --> 96MB).
 * The page copy blockops can use 0x6000000 to 0x8000000.
 * The TSB is mapped in the 0x8000000 to 0xa000000 range.
 * The PROM resides in an area spanning 0xf0000000 to 0x100000000.
 * The vmalloc area spans 0x100000000 to 0x200000000.
 * Since modules need to be in the lowest 32-bits of the address space,
 * we place them right before the OBP area from 0x10000000 to 0xf0000000.
 * There is a single static kernel PMD which maps from 0x0 to address
 * 0x400000000.
 */
#define TLBTEMP_BASE            _AC(0x0000000006000000,UL)
#define TSBMAP_BASE             _AC(0x0000000008000000,UL)
#define MODULES_VADDR           _AC(0x0000000010000000,UL)
#define MODULES_LEN             _AC(0x00000000e0000000,UL)
#define MODULES_END             _AC(0x00000000f0000000,UL)
#define LOW_OBP_ADDRESS         _AC(0x00000000f0000000,UL)
#define HI_OBP_ADDRESS          _AC(0x0000000100000000,UL)
#define VMALLOC_START           _AC(0x0000000100000000,UL)
#define VMALLOC_END             _AC(0x0000010000000000,UL)
#define VMEMMAP_BASE            _AC(0x0000010000000000,UL)
mv ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.