home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / arch / cris / include / asm / processor.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  2.0 KB  |  76 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 <arch/processor.h>
  17.  
  18. struct task_struct;
  19.  
  20. #define STACK_TOP    TASK_SIZE
  21. #define STACK_TOP_MAX    STACK_TOP
  22.  
  23. /* This decides where the kernel will search for a free chunk of vm
  24.  * space during mmap's.
  25.  */
  26. #define TASK_UNMAPPED_BASE      (PAGE_ALIGN(TASK_SIZE / 3))
  27.  
  28. /* THREAD_SIZE is the size of the task_struct/kernel_stack combo.
  29.  * normally, the stack is found by doing something like p + THREAD_SIZE
  30.  * in CRIS, a page is 8192 bytes, which seems like a sane size
  31.  */
  32.  
  33. #define THREAD_SIZE       PAGE_SIZE
  34. #define KERNEL_STACK_SIZE PAGE_SIZE
  35.  
  36. /*
  37.  * At user->kernel entry, the pt_regs struct is stacked on the top of the kernel-stack.
  38.  * This macro allows us to find those regs for a task.
  39.  * Notice that subsequent pt_regs stackings, like recursive interrupts occurring while
  40.  * we're in the kernel, won't affect this - only the first user->kernel transition
  41.  * registers are reached by this.
  42.  */
  43.  
  44. #define user_regs(thread_info) (((struct pt_regs *)((unsigned long)(thread_info) + THREAD_SIZE)) - 1)
  45.  
  46. /*
  47.  * Dito but for the currently running task
  48.  */
  49.  
  50. #define task_pt_regs(task) user_regs(task_thread_info(task))
  51. #define current_regs() task_pt_regs(current)
  52.  
  53. static inline void prepare_to_copy(struct task_struct *tsk)
  54. {
  55. }
  56.  
  57. extern int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags);
  58.  
  59. unsigned long get_wchan(struct task_struct *p);
  60.  
  61. #define KSTK_ESP(tsk)   ((tsk) == current ? rdusp() : (tsk)->thread.usp)
  62.  
  63. extern unsigned long thread_saved_pc(struct task_struct *tsk);
  64.  
  65. /* Free all resources held by a thread. */
  66. static inline void release_thread(struct task_struct *dead_task)
  67. {
  68.         /* Nothing needs to be done.  */
  69. }
  70.  
  71. #define init_stack      (init_thread_union.stack)
  72.  
  73. #define cpu_relax()     barrier()
  74.  
  75. #endif /* __ASM_CRIS_PROCESSOR_H */
  76.