diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2010-09-08 11:58:16 +0000 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2010-09-08 11:58:16 +0000 |
commit | 2e5b6e76aab23301ec25fad3c6a89c817d2cebb9 (patch) | |
tree | ab801833ba7b22cd73050804d7c82f8697a44c0e /c | |
parent | 2010-09-08 Ralf Corsépius <ralf.corsepius@rtems.org> (diff) | |
download | rtems-2e5b6e76aab23301ec25fad3c6a89c817d2cebb9.tar.bz2 |
2010-09-08 Sebastian Huber <sebastian.huber@embedded-brains.de>
* include/utility.h: More macros. Changed casts.
Diffstat (limited to 'c')
-rw-r--r-- | c/src/lib/libbsp/shared/ChangeLog | 4 | ||||
-rw-r--r-- | c/src/lib/libbsp/shared/include/utility.h | 119 |
2 files changed, 118 insertions, 5 deletions
diff --git a/c/src/lib/libbsp/shared/ChangeLog b/c/src/lib/libbsp/shared/ChangeLog index b4177ea38c..a2ce022b97 100644 --- a/c/src/lib/libbsp/shared/ChangeLog +++ b/c/src/lib/libbsp/shared/ChangeLog @@ -1,3 +1,7 @@ +2010-09-08 Sebastian Huber <sebastian.huber@embedded-brains.de> + + * include/utility.h: More macros. Changed casts. + 2010-08-15 Joel Sherrill <joel.sherrilL@OARcorp.com> * src/uart-output-char.c: Add BSP_poll_char. diff --git a/c/src/lib/libbsp/shared/include/utility.h b/c/src/lib/libbsp/shared/include/utility.h index dc991dbf5c..b8bae8d55a 100644 --- a/c/src/lib/libbsp/shared/include/utility.h +++ b/c/src/lib/libbsp/shared/include/utility.h @@ -24,19 +24,128 @@ #include <stdint.h> +#define BIT8(bit) \ + ((uint8_t) (((uint8_t) 1) << (bit))) + +#define MASK8(first_bit, last_bit) \ + ((uint8_t) ((BIT8((last_bit) - (first_bit) + 1) - 1) << (first_bit))) + +#define FIELD8(val, first_bit, last_bit) \ + ((uint8_t) (((val) << (first_bit)) & MASK8(first_bit, last_bit))) + +#define GETFIELD8(reg, first_bit, last_bit) \ + ((uint8_t) (((reg) & MASK8(first_bit, last_bit)) >> (first_bit))) + +#define SETFIELD8(reg, val, first_bit, last_bit) \ + ((uint8_t) (((reg) & ~MASK8(first_bit, last_bit)) \ + | FIELD8(val, first_bit, last_bit))) + +#define BIT16(bit) \ + ((uint16_t) (((uint16_t) 1) << (bit))) + +#define MASK16(first_bit, last_bit) \ + ((uint16_t) ((BIT16((last_bit) - (first_bit) + 1) - 1) << (first_bit))) + +#define FIELD16(val, first_bit, last_bit) \ + ((uint16_t) (((val) << (first_bit)) & MASK16(first_bit, last_bit))) + +#define GETFIELD16(reg, first_bit, last_bit) \ + ((uint16_t) (((reg) & MASK16(first_bit, last_bit)) >> (first_bit))) + +#define SETFIELD16(reg, val, first_bit, last_bit) \ + ((uint16_t) (((reg) & ~MASK16(first_bit, last_bit)) \ + | FIELD16(val, first_bit, last_bit))) + #define BIT32(bit) \ - ((uint32_t) 1 << (bit)) + ((uint32_t) (((uint32_t) 1) << (bit))) #define MASK32(first_bit, last_bit) \ - ((BIT32((last_bit) - (first_bit) + 1) - (uint32_t) 1) << (first_bit)) + ((uint32_t) ((BIT32((last_bit) - (first_bit) + 1) - 1) << (first_bit))) #define FIELD32(val, first_bit, last_bit) \ - (((uint32_t) (val) << (first_bit)) & MASK32(first_bit, last_bit)) + ((uint32_t) (((val) << (first_bit)) & MASK32(first_bit, last_bit))) #define GETFIELD32(reg, first_bit, last_bit) \ - (((reg) & MASK32(first_bit, last_bit)) >> (first_bit)) + ((uint32_t) (((reg) & MASK32(first_bit, last_bit)) >> (first_bit))) #define SETFIELD32(reg, val, first_bit, last_bit) \ - (((reg) & ~MASK32(first_bit, last_bit)) | FIELD32(val, first_bit, last_bit)) + ((uint32_t) (((reg) & ~MASK32(first_bit, last_bit)) \ + | FIELD32(val, first_bit, last_bit))) + +#define BIT64(bit) \ + ((uint64_t) (((uint64_t) 1) << (bit))) + +#define MASK64(first_bit, last_bit) \ + ((uint64_t) ((BIT64((last_bit) - (first_bit) + 1) - 1) << (first_bit))) + +#define FIELD64(val, first_bit, last_bit) \ + ((uint64_t) (((val) << (first_bit)) & MASK64(first_bit, last_bit))) + +#define GETFIELD64(reg, first_bit, last_bit) \ + ((uint64_t) (((reg) & MASK64(first_bit, last_bit)) >> (first_bit))) + +#define SETFIELD64(reg, val, first_bit, last_bit) \ + ((uint64_t) (((reg) & ~MASK64(first_bit, last_bit)) \ + | FIELD64(val, first_bit, last_bit))) + +#define BBIT8(bit) \ + BIT8(7 - (bit)) + +#define BMASK8(first_bit, last_bit) \ + MASK8(7 - (last_bit), 7 - (first_bit)) + +#define BFIELD8(val, first_bit, last_bit) \ + FIELD8(val, 7 - (last_bit), 7 - (first_bit)) + +#define BGETFIELD8(reg, first_bit, last_bit) \ + GETFIELD8(reg, 7 - (last_bit), 7 - (first_bit)) + +#define BSETFIELD8(reg, val, first_bit, last_bit) \ + SETFIELD8(reg, val, 7 - (last_bit), 7 - (first_bit)) + +#define BBIT16(bit) \ + BIT16(15 - (bit)) + +#define BMASK16(first_bit, last_bit) \ + MASK16(15 - (last_bit), 15 - (first_bit)) + +#define BFIELD16(val, first_bit, last_bit) \ + FIELD16(val, 15 - (last_bit), 15 - (first_bit)) + +#define BGETFIELD16(reg, first_bit, last_bit) \ + GETFIELD16(reg, 15 - (last_bit), 15 - (first_bit)) + +#define BSETFIELD16(reg, val, first_bit, last_bit) \ + SETFIELD16(reg, val, 15 - (last_bit), 15 - (first_bit)) + +#define BBIT32(bit) \ + BIT32(31 - (bit)) + +#define BMASK32(first_bit, last_bit) \ + MASK32(31 - (last_bit), 31 - (first_bit)) + +#define BFIELD32(val, first_bit, last_bit) \ + FIELD32(val, 31 - (last_bit), 31 - (first_bit)) + +#define BGETFIELD32(reg, first_bit, last_bit) \ + GETFIELD32(reg, 31 - (last_bit), 31 - (first_bit)) + +#define BSETFIELD32(reg, val, first_bit, last_bit) \ + SETFIELD32(reg, val, 31 - (last_bit), 31 - (first_bit)) + +#define BBIT64(bit) \ + BIT64(63 - (bit)) + +#define BMASK64(first_bit, last_bit) \ + MASK64(63 - (last_bit), 63 - (first_bit)) + +#define BFIELD64(val, first_bit, last_bit) \ + FIELD64(val, 63 - (last_bit), 63 - (first_bit)) + +#define BGETFIELD64(reg, first_bit, last_bit) \ + GETFIELD64(reg, 63 - (last_bit), 63 - (first_bit)) + +#define BSETFIELD64(reg, val, first_bit, last_bit) \ + SETFIELD64(reg, val, 63 - (last_bit), 63 - (first_bit)) #endif /* LIBCPU_SHARED_UTILITY_H */ |