C6X: process management
Original port to early 2.6 kernel using TI COFF toolchain. Brought up to date by Mark Salter <msalter@redhat.com> Signed-off-by: Aurelien Jacquiot <a-jacquiot@ti.com> Signed-off-by: Mark Salter <msalter@redhat.com> Acked-by: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:

کامیت شده توسط
Mark Salter

والد
14aa7e8bf6
کامیت
687b12baec
74
arch/c6x/kernel/switch_to.S
Normal file
74
arch/c6x/kernel/switch_to.S
Normal file
@@ -0,0 +1,74 @@
|
||||
/*
|
||||
* Copyright (C) 2011 Texas Instruments Incorporated
|
||||
* Author: Mark Salter (msalter@redhat.com)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#include <linux/linkage.h>
|
||||
#include <asm/asm-offsets.h>
|
||||
|
||||
#define SP B15
|
||||
|
||||
/*
|
||||
* void __switch_to(struct thread_info *prev,
|
||||
* struct thread_info *next,
|
||||
* struct task_struct *tsk) ;
|
||||
*/
|
||||
ENTRY(__switch_to)
|
||||
LDDW .D2T2 *+B4(THREAD_B15_14),B7:B6
|
||||
|| MV .L2X A4,B5 ; prev
|
||||
|| MV .L1X B4,A5 ; next
|
||||
|| MVC .S2 RILC,B1
|
||||
|
||||
STW .D2T2 B3,*+B5(THREAD_PC)
|
||||
|| STDW .D1T1 A13:A12,*+A4(THREAD_A13_12)
|
||||
|| MVC .S2 ILC,B0
|
||||
|
||||
LDW .D2T2 *+B4(THREAD_PC),B3
|
||||
|| LDDW .D1T1 *+A5(THREAD_A13_12),A13:A12
|
||||
|
||||
STDW .D1T1 A11:A10,*+A4(THREAD_A11_10)
|
||||
|| STDW .D2T2 B1:B0,*+B5(THREAD_RICL_ICL)
|
||||
#ifndef __DSBT__
|
||||
|| MVKL .S2 current_ksp,B1
|
||||
#endif
|
||||
|
||||
STDW .D2T2 B15:B14,*+B5(THREAD_B15_14)
|
||||
|| STDW .D1T1 A15:A14,*+A4(THREAD_A15_14)
|
||||
#ifndef __DSBT__
|
||||
|| MVKH .S2 current_ksp,B1
|
||||
#endif
|
||||
|
||||
;; Switch to next SP
|
||||
MV .S2 B7,SP
|
||||
#ifdef __DSBT__
|
||||
|| STW .D2T2 B7,*+B14(current_ksp)
|
||||
#else
|
||||
|| STW .D2T2 B7,*B1
|
||||
|| MV .L2 B6,B14
|
||||
#endif
|
||||
|| LDDW .D1T1 *+A5(THREAD_RICL_ICL),A1:A0
|
||||
|
||||
STDW .D2T2 B11:B10,*+B5(THREAD_B11_10)
|
||||
|| LDDW .D1T1 *+A5(THREAD_A15_14),A15:A14
|
||||
|
||||
STDW .D2T2 B13:B12,*+B5(THREAD_B13_12)
|
||||
|| LDDW .D1T1 *+A5(THREAD_A11_10),A11:A10
|
||||
|
||||
B .S2 B3 ; return in next E1
|
||||
|| LDDW .D2T2 *+B4(THREAD_B13_12),B13:B12
|
||||
|
||||
LDDW .D2T2 *+B4(THREAD_B11_10),B11:B10
|
||||
NOP
|
||||
|
||||
MV .L2X A0,B0
|
||||
|| MV .S1 A6,A4
|
||||
|
||||
MVC .S2 B0,ILC
|
||||
|| MV .L2X A1,B1
|
||||
|
||||
MVC .S2 B1,RILC
|
||||
ENDPROC(__switch_to)
|
مرجع در شماره جدید
Block a user