Initial version.
This commit is contained in:
@@ -0,0 +1,113 @@
|
||||
#ifndef FSL_H
|
||||
#define FSL_H
|
||||
/*****************************************************************************/
|
||||
/**
|
||||
*
|
||||
* @file fsl.h
|
||||
*
|
||||
* @addtogroup microblaze_fsl_macro MicroBlaze Processor FSL Macros
|
||||
*
|
||||
* Microblaze BSP includes macros to provide convenient access to accelerators
|
||||
* connected to the MicroBlaze Fast Simplex Link (FSL) Interfaces.To use these functions,
|
||||
* include the header file fsl.h in your source code
|
||||
*
|
||||
* @{
|
||||
*
|
||||
******************************************************************************/
|
||||
#include "mb_interface.h" /* Legacy reasons. We just have to include this guy who defines the FSL stuff */
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Extended FSL macros. These now replace all of the previous FSL macros */
|
||||
#define FSL_DEFAULT
|
||||
#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
|
||||
|
||||
/**
|
||||
Performs a get function on an input FSL of the MicroBlaze processor
|
||||
@param val variable to sink data from get function
|
||||
@param id literal in the range of 0 to 7 (0 to 15 for MicroBlaze v7.00.a and later)
|
||||
@param flags valid FSL macro flags
|
||||
*/
|
||||
#define getfslx(val, id, flags) asm volatile (stringify(flags) "get\t%0,rfsl" stringify(id) : "=d" (val))
|
||||
|
||||
/**
|
||||
Performs a put function on an input FSL of the MicroBlaze processor
|
||||
@param val variable to source data to put function
|
||||
@param id literal in the range of 0 to 7 (0 to 15 for MicroBlaze v7.00.a and later)
|
||||
@param flags valid FSL macro flags
|
||||
*/
|
||||
#define putfslx(val, id, flags) asm volatile (stringify(flags) "put\t%0,rfsl" stringify(id) :: "d" (val))
|
||||
|
||||
/**
|
||||
Performs a test get function on an input FSL of the MicroBlaze processor
|
||||
@param val variable to sink data from get function
|
||||
@param id literal in the range of 0 to 7 (0 to 15 for MicroBlaze v7.00.a and later)
|
||||
@param flags valid FSL macro flags
|
||||
*/
|
||||
#define tgetfslx(val, id, flags) asm volatile ("t" stringify(flags) "get\t%0,rfsl" stringify(id) : "=d" (val))
|
||||
|
||||
/**
|
||||
Performs a put function on an input FSL of the MicroBlaze processor
|
||||
@param id FSL identifier
|
||||
@param flags valid FSL macro flags
|
||||
*/
|
||||
#define tputfslx(id, flags) asm volatile ("t" stringify(flags) "put\trfsl" stringify(id))
|
||||
|
||||
/**
|
||||
Performs a getd function on an input FSL of the MicroBlaze processor
|
||||
@param val variable to sink data from getd function
|
||||
@param var literal in the range of 0 to 7 (0 to 15 for MicroBlaze v7.00.a and later)
|
||||
@param flags valid FSL macro flags
|
||||
*/
|
||||
#define getdfslx(val, var, flags) asm volatile (stringify(flags) "getd\t%0,%1" : "=d" (val) : "d" (var))
|
||||
|
||||
/**
|
||||
Performs a putd function on an input FSL of the MicroBlaze processor
|
||||
@param val variable to source data to putd function
|
||||
@param var literal in the range of 0 to 7 (0 to 15 for MicroBlaze v7.00.a and later)
|
||||
@param flags valid FSL macro flags
|
||||
*/
|
||||
#define putdfslx(val, var, flags) asm volatile (stringify(flags) "putd\t%0,%1" :: "d" (val), "d" (var))
|
||||
|
||||
/**
|
||||
Performs a test getd function on an input FSL of the MicroBlaze processor;
|
||||
@param val variable to sink data from getd function
|
||||
@param var literal in the range of 0 to 7 (0 to 15 for MicroBlaze v7.00.a and later)
|
||||
@param flags valid FSL macro flags
|
||||
*/
|
||||
#define tgetdfslx(val, var, flags) asm volatile ("t" stringify(flags) "getd\t%0,%1" : "=d" (val) : "d" (var))
|
||||
|
||||
/**
|
||||
Performs a put function on an input FSL of the MicroBlaze processor
|
||||
@param var FSL identifier
|
||||
@param flags valid FSL macro flags
|
||||
*/
|
||||
#define tputdfslx(var, flags) asm volatile ("t" stringify(flags) "putd\t%0" :: "d" (var))
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* FSL_H */
|
||||
/**
|
||||
* @} End of "addtogroup microblaze_fsl_macro".
|
||||
*/
|
||||
Reference in New Issue
Block a user