diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-06-09 18:05:11 -0700 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-06-09 18:05:11 -0700 | 
| commit | 9b651cc2277b5e4883012ebab0fea2bcda4cbafa (patch) | |
| tree | dd6744f80a07f72876e9307d854700019255218e /arch/arc/kernel/process.c | |
| parent | 214b93132023cc9305d5801add812515bea4d7d0 (diff) | |
| parent | ef680cdc24376f394841a3f19b3a7ef6d57a009d (diff) | |
Merge tag 'arc-v3.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/vgupta/arc
Pull ARC updates from Vineet Gupta:
 "Nothing too exciting here, just minor fixes/cleanup.  Only noteworthy
  ones are:
   - Moving cache disabling to early boot
   - ARC UART enabled only if earlyprintk setup in cmdline"
* tag 'arc-v3.16-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/vgupta/arc:
  ARC: Disable caches in early boot if so configured
  ARC: [arcfpga] Early ARC UART to be only activated by cmdline
  ARC: [arcfpga] Get rid of legacy BVCI latency unit support
  ARC: remove duplicate header exports
  ARC: arc_local_timer_setup() need not pass own cpu id
  ARC: Fixed spelling errors within comments
  ARC: make start_thread() out-of-line
  ARC: fix mmuv2 warning
  ARC: [SMP] ISS SMP extension bitrot
Diffstat (limited to 'arch/arc/kernel/process.c')
| -rw-r--r-- | arch/arc/kernel/process.c | 23 | 
1 files changed, 23 insertions, 0 deletions
diff --git a/arch/arc/kernel/process.c b/arch/arc/kernel/process.c index 07a3a968fe49..fdd89715d2d3 100644 --- a/arch/arc/kernel/process.c +++ b/arch/arc/kernel/process.c @@ -151,6 +151,29 @@ int copy_thread(unsigned long clone_flags,  }  /* + * Do necessary setup to start up a new user task + */ +void start_thread(struct pt_regs * regs, unsigned long pc, unsigned long usp) +{ +	set_fs(USER_DS); /* user space */ + +	regs->sp = usp; +	regs->ret = pc; + +	/* +	 * [U]ser Mode bit set +	 * [L] ZOL loop inhibited to begin with - cleared by a LP insn +	 * Interrupts enabled +	 */ +	regs->status32 = STATUS_U_MASK | STATUS_L_MASK | +			 STATUS_E1_MASK | STATUS_E2_MASK; + +	/* bogus seed values for debugging */ +	regs->lp_start = 0x10; +	regs->lp_end = 0x80; +} + +/*   * Some archs flush debug and FPU info here   */  void flush_thread(void)  | 
