linux/arch/blackfin/include/asm/blackfin.h
<<
>>
Prefs
   1/*
   2 * Common header file for Blackfin family of processors.
   3 *
   4 * Copyright 2004-2009 Analog Devices Inc.
   5 *
   6 * Licensed under the GPL-2 or later.
   7 */
   8
   9#ifndef _BLACKFIN_H_
  10#define _BLACKFIN_H_
  11
  12#include <mach/anomaly.h>
  13
  14#ifndef __ASSEMBLY__
  15
  16/* SSYNC implementation for C file */
  17static inline void SSYNC(void)
  18{
  19        int _tmp;
  20        if (ANOMALY_05000312 || ANOMALY_05000244)
  21                __asm__ __volatile__(
  22                        "cli %0;"
  23                        "nop;"
  24                        "nop;"
  25                        "nop;"
  26                        "ssync;"
  27                        "sti %0;"
  28                        : "=d" (_tmp)
  29                );
  30        else
  31                __asm__ __volatile__("ssync;");
  32}
  33
  34/* CSYNC implementation for C file */
  35static inline void CSYNC(void)
  36{
  37        int _tmp;
  38        if (ANOMALY_05000312 || ANOMALY_05000244)
  39                __asm__ __volatile__(
  40                        "cli %0;"
  41                        "nop;"
  42                        "nop;"
  43                        "nop;"
  44                        "csync;"
  45                        "sti %0;"
  46                        : "=d" (_tmp)
  47                );
  48        else
  49                __asm__ __volatile__("csync;");
  50}
  51
  52#else  /* __ASSEMBLY__ */
  53
  54#define LO(con32) ((con32) & 0xFFFF)
  55#define lo(con32) ((con32) & 0xFFFF)
  56#define HI(con32) (((con32) >> 16) & 0xFFFF)
  57#define hi(con32) (((con32) >> 16) & 0xFFFF)
  58
  59/* SSYNC & CSYNC implementations for assembly files */
  60
  61#define ssync(x) SSYNC(x)
  62#define csync(x) CSYNC(x)
  63
  64#if ANOMALY_05000312 || ANOMALY_05000244
  65#define SSYNC(scratch)  \
  66        cli scratch;    \
  67        nop; nop; nop;  \
  68        SSYNC;          \
  69        sti scratch;
  70
  71#define CSYNC(scratch)  \
  72        cli scratch;    \
  73        nop; nop; nop;  \
  74        CSYNC;          \
  75        sti scratch;
  76
  77#else
  78#define SSYNC(scratch) SSYNC;
  79#define CSYNC(scratch) CSYNC;
  80#endif /* ANOMALY_05000312 & ANOMALY_05000244 handling */
  81
  82#endif /* __ASSEMBLY__ */
  83
  84#include <asm/mem_map.h>
  85#include <mach/blackfin.h>
  86#include <asm/bfin-global.h>
  87
  88#endif                          /* _BLACKFIN_H_ */
  89