lkml.org 
[lkml]   [2009]   [Mar]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 41/57] microblaze_v7: system.h processor.h
    Date
    From: Michal Simek <monstr@monstr.eu>


    Signed-off-by: Michal Simek <monstr@monstr.eu>
    ---
    arch/microblaze/include/asm/processor.h | 93 +++++++++++++++++++++++++++++++
    arch/microblaze/include/asm/system.h | 91 ++++++++++++++++++++++++++++++
    2 files changed, 184 insertions(+), 0 deletions(-)
    create mode 100644 arch/microblaze/include/asm/processor.h
    create mode 100644 arch/microblaze/include/asm/system.h

    diff --git a/arch/microblaze/include/asm/processor.h b/arch/microblaze/include/asm/processor.h
    new file mode 100644
    index 0000000..d8e1543
    --- /dev/null
    +++ b/arch/microblaze/include/asm/processor.h
    @@ -0,0 +1,93 @@
    +/*
    + * Copyright (C) 2008 Michal Simek
    + * Copyright (C) 2008 PetaLogix
    + * Copyright (C) 2006 Atmark Techno, Inc.
    + *
    + * This file is subject to the terms and conditions of the GNU General Public
    + * License. See the file "COPYING" in the main directory of this archive
    + * for more details.
    + */
    +
    +#ifndef _ASM_MICROBLAZE_PROCESSOR_H
    +#define _ASM_MICROBLAZE_PROCESSOR_H
    +
    +#include <asm/ptrace.h>
    +#include <asm/setup.h>
    +#include <asm/registers.h>
    +#include <asm/segment.h>
    +
    +# ifndef __ASSEMBLY__
    +/* from kernel/cpu/mb.c */
    +extern const struct seq_operations cpuinfo_op;
    +
    +# define cpu_relax() barrier()
    +# define cpu_sleep() do {} while (0)
    +# define prepare_to_copy(tsk) do {} while (0)
    +
    +# endif /* __ASSEMBLY__ */
    +
    +/*
    + * User space process size: memory size
    + *
    + * TASK_SIZE on MMU cpu is usually 1GB. However, on no-MMU arch, both
    + * user processes and the kernel is on the same memory region. They
    + * both share the memory space and that is limited by the amount of
    + * physical memory. thus, we set TASK_SIZE == amount of total memory.
    + */
    +# define TASK_SIZE (0x81000000 - 0x80000000)
    +
    +/*
    + * Default implementation of macro that returns current
    + * instruction pointer ("program counter").
    + */
    +# define current_text_addr() ({ __label__ _l; _l: &&_l; })
    +
    +/*
    + * This decides where the kernel will search for a free chunk of vm
    + * space during mmap's. We won't be using it
    + */
    +# define TASK_UNMAPPED_BASE 0
    +
    +/* definition in include/linux/sched.h */
    +struct task_struct;
    +
    +/* thread_struct is gone. use thread_info instead. */
    +struct thread_struct { };
    +# define INIT_THREAD { }
    +
    +/* Do necessary setup to start up a newly executed thread. */
    +static inline void start_thread(struct pt_regs *regs,
    + unsigned long pc,
    + unsigned long usp)
    +{
    + regs->pc = pc;
    + regs->r1 = usp;
    + regs->kernel_mode = 0;
    +}
    +
    +/* Free all resources held by a thread. */
    +static inline void release_thread(struct task_struct *dead_task)
    +{
    +}
    +
    +/* Free all resources held by a thread. */
    +static inline void exit_thread(void)
    +{
    +}
    +
    +extern unsigned long thread_saved_pc(struct task_struct *t);
    +
    +extern unsigned long get_wchan(struct task_struct *p);
    +
    +/*
    + * create a kernel thread without removing it from tasklists
    + */
    +extern int kernel_thread(int (*fn)(void *), void *arg, unsigned long flags);
    +
    +# define task_pt_regs(tsk) \
    + (((struct pt_regs *)(THREAD_SIZE + task_stack_page(tsk))) - 1)
    +
    +# define KSTK_EIP(tsk) (0)
    +# define KSTK_ESP(tsk) (0)
    +
    +#endif /* _ASM_MICROBLAZE_PROCESSOR_H */
    diff --git a/arch/microblaze/include/asm/system.h b/arch/microblaze/include/asm/system.h
    new file mode 100644
    index 0000000..c4e3088
    --- /dev/null
    +++ b/arch/microblaze/include/asm/system.h
    @@ -0,0 +1,91 @@
    +/*
    + * Copyright (C) 2006 Atmark Techno, Inc.
    + *
    + * This file is subject to the terms and conditions of the GNU General Public
    + * License. See the file "COPYING" in the main directory of this archive
    + * for more details.
    + */
    +
    +#ifndef _ASM_MICROBLAZE_SYSTEM_H
    +#define _ASM_MICROBLAZE_SYSTEM_H
    +
    +#include <asm/registers.h>
    +#include <asm/setup.h>
    +#include <asm/irqflags.h>
    +
    +struct task_struct;
    +struct thread_info;
    +
    +extern struct task_struct *_switch_to(struct thread_info *prev,
    + struct thread_info *next);
    +
    +#define switch_to(prev, next, last) \
    + do { \
    + (last) = _switch_to(task_thread_info(prev), \
    + task_thread_info(next)); \
    + } while (0)
    +
    +#define smp_read_barrier_depends() do {} while (0)
    +#define read_barrier_depends() do {} while (0)
    +
    +#define nop() asm volatile ("nop")
    +#define mb() barrier()
    +#define rmb() mb()
    +#define wmb() mb()
    +#define set_mb(var, value) do { var = value; mb(); } while (0)
    +#define set_wmb(var, value) do { var = value; wmb(); } while (0)
    +
    +#define smp_mb() mb()
    +#define smp_rmb() rmb()
    +#define smp_wmb() wmb()
    +
    +void show_trace(struct task_struct *task, unsigned long *stack);
    +void __bad_xchg(volatile void *ptr, int size);
    +
    +static inline unsigned long __xchg(unsigned long x, volatile void *ptr,
    + int size)
    +{
    + unsigned long ret;
    + unsigned long flags;
    +
    + switch (size) {
    + case 1:
    + local_irq_save(flags);
    + ret = *(volatile unsigned char *)ptr;
    + *(volatile unsigned char *)ptr = x;
    + local_irq_restore(flags);
    + break;
    +
    + case 4:
    + local_irq_save(flags);
    + ret = *(volatile unsigned long *)ptr;
    + *(volatile unsigned long *)ptr = x;
    + local_irq_restore(flags);
    + break;
    + default:
    + __bad_xchg(ptr, size), ret = 0;
    + break;
    + }
    +
    + return ret;
    +}
    +
    +void disable_hlt(void);
    +void enable_hlt(void);
    +void default_idle(void);
    +
    +#define xchg(ptr, x) \
    + ((__typeof__(*(ptr))) __xchg((unsigned long)(x), (ptr), sizeof(*(ptr))))
    +
    +void free_init_pages(char *what, unsigned long begin, unsigned long end);
    +void free_initmem(void);
    +extern char *klimit;
    +extern void ret_from_fork(void);
    +
    +#ifdef CONFIG_DEBUG_FS
    +extern struct dentry *of_debugfs_root;
    +#endif
    +
    +#define arch_align_stack(x) (x)
    +
    +#endif /* _ASM_MICROBLAZE_SYSTEM_H */
    --
    1.5.5.1


    \
     
     \ /
      Last update: 2009-03-18 22:57    [W:0.076 / U:59.516 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site