m68k: set register a2 to current if MMU enabled on ColdFire
Virtual memory m68k systems build with register a2 dedicated to being the current proc pointer (non-MMU don't do this). Add code to the ColdFire interrupt and exception processing to set this on entry, and at context switch time. We use the same GET_CURRENT() macro that MMU enabled code uses - modifying it so that the assembler is ColdFire clean. Signed-off-by: Greg Ungerer <gerg@uclinux.org> Acked-by: Matt Waddel <mwaddel@yahoo.com> Acked-by: Kurt Mahan <kmahan@xmission.com> Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>
This commit is contained in:
@@ -222,16 +222,24 @@
|
||||
* Non-MMU systems do not reserve %a2 in this way, and this definition is
|
||||
* not used for them.
|
||||
*/
|
||||
#ifdef CONFIG_MMU
|
||||
|
||||
#define curptr a2
|
||||
|
||||
#define GET_CURRENT(tmp) get_current tmp
|
||||
.macro get_current reg=%d0
|
||||
movel %sp,\reg
|
||||
andw #-THREAD_SIZE,\reg
|
||||
andl #-THREAD_SIZE,\reg
|
||||
movel \reg,%curptr
|
||||
movel %curptr@,%curptr
|
||||
.endm
|
||||
|
||||
#else
|
||||
|
||||
#define GET_CURRENT(tmp)
|
||||
|
||||
#endif /* CONFIG_MMU */
|
||||
|
||||
#else /* C source */
|
||||
|
||||
#define STR(X) STR1(X)
|
||||
|
Reference in New Issue
Block a user