Ignore:
Timestamp:
Sep 14, 2020, 6:36:03 PM (4 years ago)
Author:
coas-nagasima
Message:

SPIとSerial、KPUの動作を改善

File:
1 edited

Legend:

Unmodified
Added
Removed
  • azure_iot_hub_riscv/trunk/app_iothub_client/kendryte/incbin.h

    r453 r458  
    1111#include <limits.h>
    1212
    13 # define INCBIN_ALIGNMENT_INDEX 7
     13# define INCBIN_ALIGNMENT_INDEX 8
    1414
    1515/* Lookup table of (1 << n) where `n' is `INCBIN_ALIGNMENT_INDEX' */
     
    2222#define INCBIN_ALIGN_SHIFT_6 64
    2323#define INCBIN_ALIGN_SHIFT_7 128
     24#define INCBIN_ALIGN_SHIFT_8 256
    2425
    2526/* Actual alignment value */
    2627#define INCBIN_ALIGNMENT \
    27     INCBIN_CONCATENATE( \
    28         INCBIN_CONCATENATE(INCBIN_ALIGN_SHIFT, _), \
    29         INCBIN_ALIGNMENT_INDEX)
     28        INCBIN_CONCATENATE( \
     29                INCBIN_CONCATENATE(INCBIN_ALIGN_SHIFT, _), \
     30                INCBIN_ALIGNMENT_INDEX)
    3031
    3132/* Stringize */
    3233#define INCBIN_STR(X) \
    33     #X
     34        #X
    3435#define INCBIN_STRINGIZE(X) \
    35     INCBIN_STR(X)
     36        INCBIN_STR(X)
    3637/* Concatenate */
    3738#define INCBIN_CAT(X, Y) \
    38     X ## Y
     39        X ## Y
    3940#define INCBIN_CONCATENATE(X, Y) \
    40     INCBIN_CAT(X, Y)
     41        INCBIN_CAT(X, Y)
    4142/* Deferred macro expansion */
    4243#define INCBIN_EVAL(X) \
    43     X
     44        X
    4445#define INCBIN_INVOKE(N, ...) \
    45     INCBIN_EVAL(N(__VA_ARGS__))
     46        INCBIN_EVAL(N(__VA_ARGS__))
    4647
    4748/* Green Hills uses a different directive for including binary data */
     
    5455#ifndef _MSC_VER
    5556#  define INCBIN_ALIGN \
    56     __attribute__((aligned(INCBIN_ALIGNMENT)))
     57        __attribute__((aligned(INCBIN_ALIGNMENT)))
    5758#else
    5859#  define INCBIN_ALIGN __declspec(align(INCBIN_ALIGNMENT))
     
    6061
    6162#if defined(__arm__) || /* GNU C and RealView */ \
    62     defined(__arm) || /* Diab */ \
    63     defined(_ARM) /* ImageCraft */
     63        defined(__arm) || /* Diab */ \
     64        defined(_ARM) /* ImageCraft */
    6465#  define INCBIN_ARM
    6566#endif
     
    9394#if defined(__APPLE__)
    9495/* The directives are different for Apple branded compilers */
    95 #  define INCBIN_SECTION         ".data\n"
     96#  define INCBIN_SECTION         ".rodata\n"
    9697#  define INCBIN_GLOBAL(NAME)    ".globl " INCBIN_STRINGIZE(INCBIN_PREFIX) #NAME "\n"
    9798#  define INCBIN_INT             ".long "
     
    100101#  define INCBIN_TYPE(...)
    101102#else
    102 #  define INCBIN_SECTION         ".section .data\n"
     103#  define INCBIN_SECTION         ".section .rodata\n"
    103104#  define INCBIN_GLOBAL(NAME)    ".global " INCBIN_STRINGIZE(INCBIN_PREFIX) #NAME "\n"
    104105#  define INCBIN_INT             ".int "
     
    199200/* Style lookup: returning identifier */
    200201#define INCBIN_STYLE_IDENT(TYPE) \
    201     INCBIN_CONCATENATE( \
    202         INCBIN_STYLE_, \
    203         INCBIN_CONCATENATE( \
    204             INCBIN_EVAL(INCBIN_STYLE), \
    205             INCBIN_CONCATENATE(_, TYPE)))
     202        INCBIN_CONCATENATE( \
     203                INCBIN_STYLE_, \
     204                INCBIN_CONCATENATE( \
     205                        INCBIN_EVAL(INCBIN_STYLE), \
     206                        INCBIN_CONCATENATE(_, TYPE)))
    206207
    207208/* Style lookup: returning string literal */
    208209#define INCBIN_STYLE_STRING(TYPE) \
    209     INCBIN_STRINGIZE( \
    210         INCBIN_STYLE_IDENT(TYPE)) \
     210        INCBIN_STRINGIZE( \
     211                INCBIN_STYLE_IDENT(TYPE)) \
    211212
    212213/* Generate the global labels by indirectly invoking the macro with our style
    213214 * type and concatenating the name against them. */
    214215#define INCBIN_GLOBAL_LABELS(NAME, TYPE) \
    215     INCBIN_INVOKE( \
    216         INCBIN_GLOBAL, \
    217         INCBIN_CONCATENATE( \
    218             NAME, \
    219             INCBIN_INVOKE( \
    220                 INCBIN_STYLE_IDENT, \
    221                 TYPE))) \
    222     INCBIN_INVOKE( \
    223         INCBIN_TYPE, \
    224         INCBIN_CONCATENATE( \
    225             NAME, \
    226             INCBIN_INVOKE( \
    227                 INCBIN_STYLE_IDENT, \
    228                 TYPE)))
     216        INCBIN_INVOKE( \
     217                INCBIN_GLOBAL, \
     218                INCBIN_CONCATENATE( \
     219                        NAME, \
     220                        INCBIN_INVOKE( \
     221                                INCBIN_STYLE_IDENT, \
     222                                TYPE))) \
     223        INCBIN_INVOKE( \
     224                INCBIN_TYPE, \
     225                INCBIN_CONCATENATE( \
     226                        NAME, \
     227                        INCBIN_INVOKE( \
     228                                INCBIN_STYLE_IDENT, \
     229                                TYPE)))
    229230
    230231/**
     
    249250 */
    250251#define INCBIN_EXTERN(NAME) \
    251     INCBIN_EXTERNAL INCBIN_ALIGN unsigned char \
    252         INCBIN_CONCATENATE( \
    253             INCBIN_CONCATENATE(INCBIN_PREFIX, NAME), \
    254             INCBIN_STYLE_IDENT(DATA))[]; \
    255     INCBIN_EXTERNAL INCBIN_ALIGN unsigned char * \
    256     INCBIN_CONCATENATE( \
    257         INCBIN_CONCATENATE(INCBIN_PREFIX, NAME), \
    258         INCBIN_STYLE_IDENT(END)); \
    259     INCBIN_EXTERNAL unsigned int \
    260         INCBIN_CONCATENATE( \
    261             INCBIN_CONCATENATE(INCBIN_PREFIX, NAME), \
    262             INCBIN_STYLE_IDENT(SIZE))
     252        INCBIN_EXTERNAL INCBIN_ALIGN unsigned char \
     253                INCBIN_CONCATENATE( \
     254                        INCBIN_CONCATENATE(INCBIN_PREFIX, NAME), \
     255                        INCBIN_STYLE_IDENT(DATA))[]; \
     256        INCBIN_EXTERNAL INCBIN_ALIGN unsigned char * \
     257        INCBIN_CONCATENATE( \
     258                INCBIN_CONCATENATE(INCBIN_PREFIX, NAME), \
     259                INCBIN_STYLE_IDENT(END)); \
     260        INCBIN_EXTERNAL unsigned int \
     261                INCBIN_CONCATENATE( \
     262                        INCBIN_CONCATENATE(INCBIN_PREFIX, NAME), \
     263                        INCBIN_STYLE_IDENT(SIZE))
    263264
    264265/**
     
    291292#ifdef _MSC_VER
    292293#define INCBIN(NAME, FILENAME) \
    293     INCBIN_EXTERN(NAME)
     294        INCBIN_EXTERN(NAME)
    294295#else
    295296#define INCBIN(NAME, FILENAME) \
    296     __asm__(INCBIN_SECTION \
    297             INCBIN_GLOBAL_LABELS(NAME, DATA) \
    298             INCBIN_ALIGN_HOST \
    299             INCBIN_MANGLE INCBIN_STRINGIZE(INCBIN_PREFIX) #NAME INCBIN_STYLE_STRING(DATA) ":\n" \
    300             INCBIN_MACRO " \"" FILENAME "\"\n" \
    301             INCBIN_GLOBAL_LABELS(NAME, END) \
    302             INCBIN_ALIGN_BYTE \
    303             INCBIN_MANGLE INCBIN_STRINGIZE(INCBIN_PREFIX) #NAME INCBIN_STYLE_STRING(END) ":\n" \
    304                 INCBIN_BYTE "1\n" \
    305             INCBIN_GLOBAL_LABELS(NAME, SIZE) \
    306             INCBIN_ALIGN_HOST \
    307             INCBIN_MANGLE INCBIN_STRINGIZE(INCBIN_PREFIX) #NAME INCBIN_STYLE_STRING(SIZE) ":\n" \
    308                 INCBIN_INT INCBIN_MANGLE INCBIN_STRINGIZE(INCBIN_PREFIX) #NAME INCBIN_STYLE_STRING(END) " - " \
    309                            INCBIN_MANGLE INCBIN_STRINGIZE(INCBIN_PREFIX) #NAME INCBIN_STYLE_STRING(DATA) "\n" \
    310     ); \
    311     INCBIN_EXTERN(NAME)
    312 
    313 #endif
    314 #endif
     297        __asm__(INCBIN_SECTION \
     298                        INCBIN_GLOBAL_LABELS(NAME, DATA) \
     299                        INCBIN_ALIGN_HOST \
     300                        INCBIN_MANGLE INCBIN_STRINGIZE(INCBIN_PREFIX) #NAME INCBIN_STYLE_STRING(DATA) ":\n" \
     301                        INCBIN_MACRO " \"" FILENAME "\"\n" \
     302                        INCBIN_GLOBAL_LABELS(NAME, END) \
     303                        INCBIN_ALIGN_BYTE \
     304                        INCBIN_MANGLE INCBIN_STRINGIZE(INCBIN_PREFIX) #NAME INCBIN_STYLE_STRING(END) ":\n" \
     305                                INCBIN_BYTE "1\n" \
     306                        INCBIN_GLOBAL_LABELS(NAME, SIZE) \
     307                        INCBIN_ALIGN_HOST \
     308                        INCBIN_MANGLE INCBIN_STRINGIZE(INCBIN_PREFIX) #NAME INCBIN_STYLE_STRING(SIZE) ":\n" \
     309                                INCBIN_INT INCBIN_MANGLE INCBIN_STRINGIZE(INCBIN_PREFIX) #NAME INCBIN_STYLE_STRING(END) " - " \
     310                                                   INCBIN_MANGLE INCBIN_STRINGIZE(INCBIN_PREFIX) #NAME INCBIN_STYLE_STRING(DATA) "\n" \
     311        ); \
     312        INCBIN_EXTERN(NAME)
     313
     314#endif
     315#endif
Note: See TracChangeset for help on using the changeset viewer.