MN10300: And Panasonic AM34 subarch and implement SMP
Implement the Panasonic MN10300 AM34 CPU subarch and implement SMP support for MN10300. Also implement support for the MN2WS0060 processor and the ASB2364 evaluation board which are AM34 based. Signed-off-by: Akira Takeuchi <takeuchi.akr@jp.panasonic.com> Signed-off-by: Kiyoshi Owada <owada.kiyoshi@jp.panasonic.com> Signed-off-by: David Howells <dhowells@redhat.com>
This commit is contained in:

committed by
David Howells

parent
04157a6e7d
commit
368dd5acd1
@@ -18,6 +18,9 @@
|
||||
#ifndef __ASM_OFFSETS_H__
|
||||
#include <asm/asm-offsets.h>
|
||||
#endif
|
||||
#ifdef CONFIG_SMP
|
||||
#include <proc/smp-regs.h>
|
||||
#endif
|
||||
|
||||
#define pi break
|
||||
|
||||
@@ -37,9 +40,25 @@
|
||||
movm [d2,d3,a2,a3,exreg0,exreg1,exother],(sp)
|
||||
mov sp,fp # FRAME pointer in A3
|
||||
add -12,sp # allow for calls to be made
|
||||
#ifdef CONFIG_SMP
|
||||
#ifdef CONFIG_PREEMPT /* FIXME */
|
||||
mov epsw,d2
|
||||
and ~EPSW_IE,epsw
|
||||
#endif
|
||||
mov (CPUID),a0
|
||||
add a0,a0
|
||||
add a0,a0
|
||||
mov (___frame,a0),a1
|
||||
mov a1,(REG_NEXT,fp)
|
||||
mov fp,(___frame,a0)
|
||||
#ifdef CONFIG_PREEMPT /* FIXME */
|
||||
mov d2,epsw
|
||||
#endif
|
||||
#else /* CONFIG_SMP */
|
||||
mov (__frame),a1
|
||||
mov a1,(REG_NEXT,fp)
|
||||
mov fp,(__frame)
|
||||
#endif /* CONFIG_SMP */
|
||||
|
||||
and ~EPSW_FE,epsw # disable the FPU inside the kernel
|
||||
|
||||
@@ -57,10 +76,27 @@
|
||||
.macro RESTORE_ALL
|
||||
# peel back the stack to the calling frame
|
||||
# - this permits execve() to discard extra frames due to kernel syscalls
|
||||
#ifdef CONFIG_SMP
|
||||
#ifdef CONFIG_PREEMPT /* FIXME */
|
||||
mov epsw,d2
|
||||
and ~EPSW_IE,epsw
|
||||
#endif
|
||||
mov (CPUID),a0
|
||||
add a0,a0
|
||||
add a0,a0
|
||||
mov (___frame,a0),fp
|
||||
mov fp,sp
|
||||
mov (REG_NEXT,fp),d0 # userspace has regs->next == 0
|
||||
mov d0,(___frame,a0)
|
||||
#ifdef CONFIG_PREEMPT /* FIXME */
|
||||
mov d2,epsw
|
||||
#endif
|
||||
#else /* CONFIG_SMP */
|
||||
mov (__frame),fp
|
||||
mov fp,sp
|
||||
mov (REG_NEXT,fp),d0 # userspace has regs->next == 0
|
||||
mov d0,(__frame)
|
||||
#endif /* CONFIG_SMP */
|
||||
|
||||
#ifndef CONFIG_MN10300_USING_JTAG
|
||||
mov (REG_EPSW,fp),d0
|
||||
|
Reference in New Issue
Block a user