[MIPS] Fixes necessary for non-SMP kernels and non-relocatable binaries
Signed-off-by: Kevin D. Kissell <kevink@mips.com> Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
parent
8e07c2c6af
commit
b618336aac
1 changed files with 15 additions and 8 deletions
|
@ -781,10 +781,15 @@ static int vpe_run(struct vpe * v)
|
|||
/* take system out of configuration state */
|
||||
clear_c0_mvpcontrol(MVPCONTROL_VPC);
|
||||
|
||||
/*
|
||||
* SMTC/SMVP kernels manage VPE enable independently,
|
||||
* but uniprocessor kernels need to turn it on, even
|
||||
* if that wasn't the pre-dvpe() state.
|
||||
*/
|
||||
#ifdef CONFIG_SMP
|
||||
evpe(EVPE_ENABLE);
|
||||
#else
|
||||
evpe(vpeflags);
|
||||
#else
|
||||
evpe(EVPE_ENABLE);
|
||||
#endif
|
||||
emt(dmt_flag);
|
||||
local_irq_restore(flags);
|
||||
|
@ -947,12 +952,14 @@ static int vpe_elfload(struct vpe * v)
|
|||
struct elf_phdr *phdr = (struct elf_phdr *) ((char *)hdr + hdr->e_phoff);
|
||||
|
||||
for (i = 0; i < hdr->e_phnum; i++) {
|
||||
if (phdr->p_type != PT_LOAD)
|
||||
continue;
|
||||
|
||||
memcpy((void *)phdr->p_paddr, (char *)hdr + phdr->p_offset, phdr->p_filesz);
|
||||
memset((void *)phdr->p_paddr + phdr->p_filesz, 0, phdr->p_memsz - phdr->p_filesz);
|
||||
phdr++;
|
||||
if (phdr->p_type == PT_LOAD) {
|
||||
memcpy((void *)phdr->p_paddr,
|
||||
(char *)hdr + phdr->p_offset,
|
||||
phdr->p_filesz);
|
||||
memset((void *)phdr->p_paddr + phdr->p_filesz,
|
||||
0, phdr->p_memsz - phdr->p_filesz);
|
||||
}
|
||||
phdr++;
|
||||
}
|
||||
|
||||
for (i = 0; i < hdr->e_shnum; i++) {
|
||||
|
|
Loading…
Reference in a new issue