]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - include/asm-avr32/processor.h
aout: move STACK_TOP[_MAX] to asm/processor.h
[linux-2.6-omap-h63xx.git] / include / asm-avr32 / processor.h
index f6913778a45fc1a34ade796cec2fecb45a8eb01b..49a88f5a9d2feda1c7b033cfd19c71453c6dd6bf 100644 (file)
 
 #define TASK_SIZE      0x80000000
 
+#ifdef __KERNEL__
+#define STACK_TOP      TASK_SIZE
+#define STACK_TOP_MAX  STACK_TOP
+#endif
+
 #ifndef __ASSEMBLY__
 
 static inline void *current_text_addr(void)
@@ -40,6 +45,14 @@ enum tlb_config {
        TLB_INVALID
 };
 
+#define AVR32_FEATURE_RMW      (1 << 0)
+#define AVR32_FEATURE_DSP      (1 << 1)
+#define AVR32_FEATURE_SIMD     (1 << 2)
+#define AVR32_FEATURE_OCD      (1 << 3)
+#define AVR32_FEATURE_PCTR     (1 << 4)
+#define AVR32_FEATURE_JAVA     (1 << 5)
+#define AVR32_FEATURE_FPU      (1 << 6)
+
 struct avr32_cpuinfo {
        struct clk *clk;
        unsigned long loops_per_jiffy;
@@ -48,11 +61,26 @@ struct avr32_cpuinfo {
        unsigned short arch_revision;
        unsigned short cpu_revision;
        enum tlb_config tlb_config;
+       unsigned long features;
+       u32 device_id;
 
        struct cache_info icache;
        struct cache_info dcache;
 };
 
+static inline unsigned int avr32_get_manufacturer_id(struct avr32_cpuinfo *cpu)
+{
+       return (cpu->device_id >> 1) & 0x7f;
+}
+static inline unsigned int avr32_get_product_number(struct avr32_cpuinfo *cpu)
+{
+       return (cpu->device_id >> 12) & 0xffff;
+}
+static inline unsigned int avr32_get_chip_revision(struct avr32_cpuinfo *cpu)
+{
+       return (cpu->device_id >> 28) & 0x0f;
+}
+
 extern struct avr32_cpuinfo boot_cpu_data;
 
 #ifdef CONFIG_SMP
@@ -125,10 +153,13 @@ extern int kernel_thread(int (*fn)(void *), void *arg, unsigned long flags);
 #define thread_saved_pc(tsk)    ((tsk)->thread.cpu_context.pc)
 
 struct pt_regs;
-void show_trace(struct task_struct *task, unsigned long *stack,
-               struct pt_regs *regs);
-
 extern unsigned long get_wchan(struct task_struct *p);
+extern void show_regs_log_lvl(struct pt_regs *regs, const char *log_lvl);
+extern void show_stack_log_lvl(struct task_struct *tsk, unsigned long sp,
+                              struct pt_regs *regs, const char *log_lvl);
+
+#define task_pt_regs(p) \
+       ((struct pt_regs *)(THREAD_SIZE + task_stack_page(p)) - 1)
 
 #define KSTK_EIP(tsk)  ((tsk)->thread.cpu_context.pc)
 #define KSTK_ESP(tsk)  ((tsk)->thread.cpu_context.ksp)