home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / asm-cris / processor.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  2.0 KB  |  73 lines

  1. /*
  2.  * include/asm-cris/processor.h
  3.  *
  4.  * Copyright (C) 2000, 2001 Axis Communications AB
  5.  *
  6.  * Authors:         Bjorn Wesen        Initial version
  7.  *
  8.  */
  9.  
  10. #ifndef __ASM_CRIS_PROCESSOR_H
  11. #define __ASM_CRIS_PROCESSOR_H
  12.  
  13. #include <asm/system.h>
  14. #include <asm/page.h>
  15. #include <asm/ptrace.h>
  16. #include <asm/arch/processor.h>
  17.  
  18. struct task_struct;
  19.  
  20. /* This decides where the kernel will search for a free chunk of vm
  21.  * space during mmap's.
  22.  */
  23. #define TASK_UNMAPPED_BASE      (PAGE_ALIGN(TASK_SIZE / 3))
  24.  
  25. /* THREAD_SIZE is the size of the task_struct/kernel_stack combo.
  26.  * normally, the stack is found by doing something like p + THREAD_SIZE
  27.  * in CRIS, a page is 8192 bytes, which seems like a sane size
  28.  */
  29.  
  30. #define THREAD_SIZE       PAGE_SIZE
  31. #define KERNEL_STACK_SIZE PAGE_SIZE
  32.  
  33. /*
  34.  * At user->kernel entry, the pt_regs struct is stacked on the top of the kernel-stack.
  35.  * This macro allows us to find those regs for a task.
  36.  * Notice that subsequent pt_regs stackings, like recursive interrupts occurring while
  37.  * we're in the kernel, won't affect this - only the first user->kernel transition
  38.  * registers are reached by this.
  39.  */
  40.  
  41. #define user_regs(thread_info) (((struct pt_regs *)((unsigned long)(thread_info) + THREAD_SIZE)) - 1)
  42.  
  43. /*
  44.  * Dito but for the currently running task
  45.  */
  46.  
  47. #define task_pt_regs(task) user_regs(task_thread_info(task))
  48. #define current_regs() task_pt_regs(current)
  49.  
  50. static inline void prepare_to_copy(struct task_struct *tsk)
  51. {
  52. }
  53.  
  54. extern int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags);
  55.  
  56. unsigned long get_wchan(struct task_struct *p);
  57.  
  58. #define KSTK_ESP(tsk)   ((tsk) == current ? rdusp() : (tsk)->thread.usp)
  59.  
  60. extern unsigned long thread_saved_pc(struct task_struct *tsk);
  61.  
  62. /* Free all resources held by a thread. */
  63. static inline void release_thread(struct task_struct *dead_task)
  64. {
  65.         /* Nothing needs to be done.  */
  66. }
  67.  
  68. #define init_stack      (init_thread_union.stack)
  69.  
  70. #define cpu_relax()     barrier()
  71.  
  72. #endif /* __ASM_CRIS_PROCESSOR_H */
  73.