|
@@ -7,9 +7,8 @@
|
|
*/
|
|
*/
|
|
#define current_text_addr() ({ __label__ _l; _l: &&_l;})
|
|
#define current_text_addr() ({ __label__ _l; _l: &&_l;})
|
|
|
|
|
|
|
|
+#include <asm/ptrace.h>
|
|
#include <asm/blackfin.h>
|
|
#include <asm/blackfin.h>
|
|
-#include <asm/segment.h>
|
|
|
|
-#include <linux/compiler.h>
|
|
|
|
|
|
|
|
static inline unsigned long rdusp(void)
|
|
static inline unsigned long rdusp(void)
|
|
{
|
|
{
|
|
@@ -59,36 +58,8 @@ struct thread_struct {
|
|
PS_S, 0, 0 \
|
|
PS_S, 0, 0 \
|
|
}
|
|
}
|
|
|
|
|
|
-/*
|
|
|
|
- * Do necessary setup to start up a newly executed thread.
|
|
|
|
- *
|
|
|
|
- * pass the data segment into user programs if it exists,
|
|
|
|
- * it can't hurt anything as far as I can tell
|
|
|
|
- */
|
|
|
|
-#ifndef CONFIG_SMP
|
|
|
|
-#define start_thread(_regs, _pc, _usp) \
|
|
|
|
-do { \
|
|
|
|
- set_fs(USER_DS); \
|
|
|
|
- (_regs)->pc = (_pc); \
|
|
|
|
- if (current->mm) \
|
|
|
|
- (_regs)->p5 = current->mm->start_data; \
|
|
|
|
- task_thread_info(current)->l1_task_info.stack_start \
|
|
|
|
- = (void *)current->mm->context.stack_start; \
|
|
|
|
- task_thread_info(current)->l1_task_info.lowest_sp = (void *)(_usp); \
|
|
|
|
- memcpy(L1_SCRATCH_TASK_INFO, &task_thread_info(current)->l1_task_info, \
|
|
|
|
- sizeof(*L1_SCRATCH_TASK_INFO)); \
|
|
|
|
- wrusp(_usp); \
|
|
|
|
-} while(0)
|
|
|
|
-#else
|
|
|
|
-#define start_thread(_regs, _pc, _usp) \
|
|
|
|
-do { \
|
|
|
|
- set_fs(USER_DS); \
|
|
|
|
- (_regs)->pc = (_pc); \
|
|
|
|
- if (current->mm) \
|
|
|
|
- (_regs)->p5 = current->mm->start_data; \
|
|
|
|
- wrusp(_usp); \
|
|
|
|
-} while (0)
|
|
|
|
-#endif
|
|
|
|
|
|
+extern void start_thread(struct pt_regs *regs, unsigned long new_ip,
|
|
|
|
+ unsigned long new_sp);
|
|
|
|
|
|
/* Forward declaration, a strange C thing */
|
|
/* Forward declaration, a strange C thing */
|
|
struct task_struct;
|
|
struct task_struct;
|