⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fsl.h

📁 Here an embedded System-on-Chip is build, in an Xilinx Spartan-3 FPGA with Microblaze as the process
💻 H
字号:
/* $Id: fsl.h,v 1.1 2007/06/20 19:16:42 meinelte Exp $ *//********************************************************************************       XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS"*       AS A COURTESY TO YOU, SOLELY FOR USE IN DEVELOPING PROGRAMS AND*       SOLUTIONS FOR XILINX DEVICES.  BY PROVIDING THIS DESIGN, CODE,*       OR INFORMATION AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE,*       APPLICATION OR STANDARD, XILINX IS MAKING NO REPRESENTATION*       THAT THIS IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT,*       AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE*       FOR YOUR IMPLEMENTATION.  XILINX EXPRESSLY DISCLAIMS ANY*       WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE*       IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR*       REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF*       INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS*       FOR A PARTICULAR PURPOSE.**       (c) Copyright 2007 Xilinx Inc.*       All rights reserved.*******************************************************************************//*****************************************************************************//*** @file fsl.h** This file contains macros for interfacing to the Fast Simplex Link (FSL)* interface..** <pre>* MODIFICATION HISTORY:** Ver   Who  Date     Changes* ----- ---- -------- ---------------------------------------------------* 1.00a ecm  06/20/07 Initial version, moved over from bsp area* </pre>** @note** None.*******************************************************************************/#ifndef _FSL_H#define _FSL_H/***************************** Include Files *********************************/#include "xbasic_types.h"#ifdef __cplusplusextern "C" {#endif/************************** Constant Definitions *****************************//**************************** Type Definitions *******************************//***************** Macros (Inline Functions) Definitions *********************//* if these have not been defined already, define here */#ifndef stringify/* necessary for pre-processor */#define stringify(s)    tostring(s)#define tostring(s)     #s#endif /* stringify *//* Extended FSL macros. These now replace all of the previous FSL macros */#define FSL_NONBLOCKING                          n#define FSL_EXCEPTION                            e#define FSL_CONTROL                              c#define FSL_ATOMIC                               a#define FSL_NONBLOCKING_EXCEPTION                ne#define FSL_NONBLOCKING_CONTROL                  nc#define FSL_NONBLOCKING_ATOMIC                   na#define FSL_EXCEPTION_CONTROL                    ec#define FSL_EXCEPTION_ATOMIC                     ea#define FSL_CONTROL_ATOMIC                       ca#define FSL_NONBLOCKING_EXCEPTION_CONTROL        nec#define FSL_NONBLOCKING_EXCEPTION_ATOMIC         nea#define FSL_NONBLOCKING_CONTROL_ATOMIC           nca#define FSL_EXCEPTION_CONTROL_ATOMIC             eca#define FSL_NONBLOCKING_EXCEPTION_CONTROL_ATOMIC neca#define getfslx(val, id, f1ags)      asm volatile (stringify(f1ags) "get\t%0,rfsl" stringify(id) : "=d" (val))#define putfslx(val, id, flags)      asm volatile (stringify(flags) "put\t%0,rfsl" stringify(id) :: "d" (val))#define tgetfslx(val, id, flags)     asm volatile ("t" stringify(flags) "get\t%0,rfsl" stringify(id) : "=d" (val))#define tputfslx(id, flags)          asm volatile ("t" stringify(flags) "put\trfsl" stringify(id))#define getdfslx(val, var, flags)    asm volatile (stringify(flags) "getd\t%0,%1" : "=d" (val) : "d" (var))#define putdfslx(val, var, flags)    asm volatile (stringify(flags) "putd\t%0,%1" :: "d" (val), "d" (var))#define tgetdfslx(val, var, flags)   asm volatile ("t" stringify(flags) "getd\t%0,%1" : "=d" (val) : "d" (var))#define tputdfslx(var, flags)        asm volatile ("t" stringify(flags) "putd\t%0" :: "d" (var))/* if the mb_interface.h file has been included already, the following are not needed and will not be defined *//* Legacy FSL Access Macros */#ifndef getfsl/* Blocking Data Read and Write to FSL no. id */#define getfsl(val, id)         asm volatile ("get\t%0,rfsl" stringify(id) : "=d" (val))#define putfsl(val, id)         asm volatile ("put\t%0,rfsl" stringify(id) :: "d" (val))/* Non-blocking Data Read and Write to FSL no. id */#define ngetfsl(val, id)        asm volatile ("nget\t%0,rfsl" stringify(id) : "=d" (val))#define nputfsl(val, id)        asm volatile ("nput\t%0,rfsl" stringify(id) :: "d" (val))/* Blocking Control Read and Write to FSL no. id */#define cgetfsl(val, id)        asm volatile ("cget\t%0,rfsl" stringify(id) : "=d" (val))#define cputfsl(val, id)        asm volatile ("cput\t%0,rfsl" stringify(id) :: "d" (val))/* Non-blocking Control Read and Write to FSL no. id */#define ncgetfsl(val, id)       asm volatile ("ncget\t%0,rfsl" stringify(id) : "=d" (val))#define ncputfsl(val, id)       asm volatile ("ncput\t%0,rfsl" stringify(id) :: "d" (val))/* Polling versions of FSL access macros. This makes the FSL access interruptible */#define getfsl_interruptible(val, id)       asm volatile ("\n1:\n\tnget\t%0,rfsl" stringify(id) "\n\t"   \                                                          "addic\tr18,r0,0\n\t"                \                                                          "bnei\tr18,1b\n"                     \                                                           : "=d" (val) :: "r18")#define putfsl_interruptible(val, id)       asm volatile ("\n1:\n\tnput\t%0,rfsl" stringify(id) "\n\t"   \                                                          "addic\tr18,r0,0\n\t"                \                                                          "bnei\tr18,1b\n"                     \                                                          :: "d" (val) : "r18")#define cgetfsl_interruptible(val, id)      asm volatile ("\n1:\n\tncget\t%0,rfsl" stringify(id) "\n\t"  \                                                          "addic\tr18,r0,0\n\t"                \                                                          "bnei\tr18,1b\n"                     \                                                          : "=d" (val) :: "r18")#define cputfsl_interruptible(val, id)      asm volatile ("\n1:\n\tncput\t%0,rfsl" stringify(id) "\n\t"  \                                                          "addic\tr18,r0,0\n\t"                \                                                          "bnei\tr18,1b\n"                     \                                                          :: "d" (val) : "r18")/* FSL valid and error check macros. */#define fsl_isinvalid(result)               asm volatile ("addic\t%0,r0,0"  : "=d" (result))#define fsl_iserror(error)                  asm volatile ("mfs\t%0,rmsr\n\t"  \                                                              "andi\t%0,%0,0x10" : "=d" (error))#endif /* legacy FSL defines *//************************** Function Prototypes ******************************//************************** Variable Definitions *****************************/#ifdef __cplusplus}#endif#endif /* _FSL_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -