x86: fix x86-32 early fixmap initialization.
pageexec@freemail.hu writes: > i've just noticed that the chunk in i386/kernel/head.S ended up in a > weird place, namely, it's not going to be executed as it's just after > a 'jmp 3f' and before startup_32_smp, probably not what you intended. > on a sidenote, the whole thing can be done in a single insn, like: > > movl $(swapper_pg_pmd - __PAGE_OFFSET + 0x067), (swapper_pg_dir - > __PAGE_OFFSET+ 4092) Thanks for the reminder I thought we had fixed this problem a while ago. Needed to get fixed virtual address for USB debug and earlycon with mmio. Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
Родитель
0c1b272406
Коммит
17d57a9206
|
@ -193,6 +193,12 @@ default_entry:
|
|||
jb 10b
|
||||
movl %edi,(init_pg_tables_end - __PAGE_OFFSET)
|
||||
|
||||
/* Do an early initialization of the fixmap area */
|
||||
movl $(swapper_pg_dir - __PAGE_OFFSET), %edx
|
||||
movl $(swapper_pg_pmd - __PAGE_OFFSET), %eax
|
||||
addl $0x007, %eax /* 0x007 = PRESENT+RW+USER */
|
||||
movl %eax, 4092(%edx)
|
||||
|
||||
xorl %ebx,%ebx /* This is the boot CPU (BSP) */
|
||||
jmp 3f
|
||||
/*
|
||||
|
@ -208,12 +214,6 @@ default_entry:
|
|||
.section .init.text,"ax",@progbits
|
||||
#endif
|
||||
|
||||
/* Do an early initialization of the fixmap area */
|
||||
movl $(swapper_pg_dir - __PAGE_OFFSET), %edx
|
||||
movl $(swapper_pg_pmd - __PAGE_OFFSET), %eax
|
||||
addl $0x007, %eax /* 0x007 = PRESENT+RW+USER */
|
||||
movl %eax, 4092(%edx)
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
ENTRY(startup_32_smp)
|
||||
cld
|
||||
|
|
Загрузка…
Ссылка в новой задаче