1 #ifndef CYGONCE_USBS_AT91_BITOPS_H
2 #define CYGONCE_USBS_AT91_BITOPS_H
4 //==========================================================================
8 // Hardware Bit manipulation macros for the AT91 USB device
10 //==========================================================================
11 //####ECOSGPLCOPYRIGHTBEGIN####
12 // -------------------------------------------
13 // This file is part of eCos, the Embedded Configurable Operating System.
14 // Copyright (C) 2002 Bart Veer
15 // Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
17 // eCos is free software; you can redistribute it and/or modify it under
18 // the terms of the GNU General Public License as published by the Free
19 // Software Foundation; either version 2 or (at your option) any later version.
21 // eCos is distributed in the hope that it will be useful, but WITHOUT ANY
22 // WARRANTY; without even the implied warranty of MERCHANTABILITY or
23 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
26 // You should have received a copy of the GNU General Public License along
27 // with eCos; if not, write to the Free Software Foundation, Inc.,
28 // 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
30 // As a special exception, if other files instantiate templates or use macros
31 // or inline functions from this file, or you compile this file and link it
32 // with other works to produce a work based on this file, this file does not
33 // by itself cause the resulting work to be covered by the GNU General Public
34 // License. However the source code for this file must still be made available
35 // in accordance with section (3) of the GNU General Public License.
37 // This exception does not invalidate any other reasons why a work based on
38 // this file might be covered by the GNU General Public License.
39 // -------------------------------------------
40 //####ECOSGPLCOPYRIGHTEND####
41 //==========================================================================
42 //#####DESCRIPTIONBEGIN####
44 // Author(s): Oliver Munz
45 // Contributors: bartv
48 //####DESCRIPTIONEND####
49 //==========================================================================
51 // Set the given bits in a device register
52 #define SET_BITS(_register_, _bits_) \
55 HAL_READ_UINT32(_register_, _value_); \
57 HAL_WRITE_UINT32(_register_, _value_); \
60 // Clear the given bits in a device register
61 #define CLEAR_BITS(_register_, _bits_) \
64 HAL_READ_UINT32(_register_, _value_); \
66 HAL_WRITE_UINT32(_register_, _value_); \
69 #define BITS_ARE_SET(_register_, _bits) \
70 bits_are_set(_register_, _bits)
72 #define BITS_ARE_CLEARED(_register_, _bits) \
73 bits_are_cleared(_register_, _bits)
75 static inline cyg_bool
76 bits_are_set (cyg_addrword_t addr, cyg_uint32 bits)
80 HAL_READ_UINT32 (addr, read);
82 return (read & bits) == bits;
85 static inline cyg_bool
86 bits_are_cleared (cyg_addrword_t addr, cyg_uint32 bits)
90 HAL_READ_UINT32 (addr, read);
92 return (read | ~bits) == ~bits;
96 #endif // CYGONCE_USBS_AT91_BITOPS_H