processor.h 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. /*
  2. * Copyright (C) 2008 Michal Simek
  3. * Copyright (C) 2008 PetaLogix
  4. * Copyright (C) 2006 Atmark Techno, Inc.
  5. *
  6. * This file is subject to the terms and conditions of the GNU General Public
  7. * License. See the file "COPYING" in the main directory of this archive
  8. * for more details.
  9. */
  10. #ifndef _ASM_MICROBLAZE_PROCESSOR_H
  11. #define _ASM_MICROBLAZE_PROCESSOR_H
  12. #include <asm/ptrace.h>
  13. #include <asm/setup.h>
  14. #include <asm/registers.h>
  15. #include <asm/segment.h>
  16. # ifndef __ASSEMBLY__
  17. /* from kernel/cpu/mb.c */
  18. extern const struct seq_operations cpuinfo_op;
  19. # define cpu_relax() barrier()
  20. # define cpu_sleep() do {} while (0)
  21. # define prepare_to_copy(tsk) do {} while (0)
  22. # endif /* __ASSEMBLY__ */
  23. #define task_pt_regs(tsk) \
  24. (((struct pt_regs *)(THREAD_SIZE + task_stack_page(tsk))) - 1)
  25. /* Do necessary setup to start up a newly executed thread. */
  26. void start_thread(struct pt_regs *regs, unsigned long pc, unsigned long usp);
  27. /*
  28. * User space process size: memory size
  29. *
  30. * TASK_SIZE on MMU cpu is usually 1GB. However, on no-MMU arch, both
  31. * user processes and the kernel is on the same memory region. They
  32. * both share the memory space and that is limited by the amount of
  33. * physical memory. thus, we set TASK_SIZE == amount of total memory.
  34. */
  35. # define TASK_SIZE (0x81000000 - 0x80000000)
  36. /*
  37. * Default implementation of macro that returns current
  38. * instruction pointer ("program counter").
  39. */
  40. # define current_text_addr() ({ __label__ _l; _l: &&_l; })
  41. /*
  42. * This decides where the kernel will search for a free chunk of vm
  43. * space during mmap's. We won't be using it
  44. */
  45. # define TASK_UNMAPPED_BASE 0
  46. /* definition in include/linux/sched.h */
  47. struct task_struct;
  48. /* thread_struct is gone. use thread_info instead. */
  49. struct thread_struct { };
  50. # define INIT_THREAD { }
  51. /* Free all resources held by a thread. */
  52. static inline void release_thread(struct task_struct *dead_task)
  53. {
  54. }
  55. /* Free all resources held by a thread. */
  56. static inline void exit_thread(void)
  57. {
  58. }
  59. extern unsigned long thread_saved_pc(struct task_struct *t);
  60. extern unsigned long get_wchan(struct task_struct *p);
  61. /*
  62. * create a kernel thread without removing it from tasklists
  63. */
  64. extern int kernel_thread(int (*fn)(void *), void *arg, unsigned long flags);
  65. # define KSTK_EIP(tsk) (0)
  66. # define KSTK_ESP(tsk) (0)
  67. #endif /* _ASM_MICROBLAZE_PROCESSOR_H */