разделение адресов ядра пользователя - PullRequest
1 голос
/ 11 мая 2010

В ARM linux диапазон виртуальных адресов ядра пользователя делится в соотношении 3: 1.

Но в MIPS Linux это обычно 2: 2

Кто-нибудь знает, что мотивирует эту разницу в дизайне?

У меня есть слабое представление о том, что это как-то связано с тем, что в MIPS управление пополнением TLB осуществляется в ш / б, а записи TLB ядра являются своего рода аппаратными средствами, гарантирующими, что они никогда не потерпят промах TLB. .

1 Ответ

3 голосов
/ 03 июля 2010

Это ограничение 32-битной архитектуры MIPS. Пользовательский режим ограничен 2 ГБ на большинстве процессоров MIPS.

Только нижние виртуальные адреса 2 ГБ (0x0000_00000 to 0x7fff_ffff) доступны в режиме пользователя. Эта часть адресного пространства называется kuseg. Kuseg адреса переводятся TLB. Независимо от того, производятся ли заправки TLB в программном обеспечении, не имеет значения.

Ядро живет в виртуальном пространстве 512 МБ, которое простирается от 0x8000_0000 to 9fff_ffff. Эта часть адресного пространства называется kseg0. Адреса Kseg0 не переводятся TLB. Эти адреса преобразуются путем удаления MSB (то есть виртуальный диапазон адресов 0x8000_0000-9fff_ffff жестко привязан к диапазону физических адресов 0x0000_0000-0x1fff_0000)

Подробнее см. В руководстве MIPS.

...