| /* |
| <:copyright-BRCM:2016:DUAL/GPL:standard |
| |
| Broadcom Proprietary and Confidential.(c) 2016 Broadcom |
| All Rights Reserved |
| |
| Unless you and Broadcom execute a separate written software license |
| agreement governing use of this software, this software is licensed |
| to you under the terms of the GNU General Public License version 2 |
| (the "GPL"), available at http://www.broadcom.com/licenses/GPLv2.php, |
| with the following added to such license: |
| |
| As a special exception, the copyright holders of this software give |
| you permission to link this software with independent modules, and |
| to copy and distribute the resulting executable under terms of your |
| choice, provided that you also meet, for each linked independent |
| module, the terms and conditions of the license of that module. |
| An independent module is a module which is not derived from this |
| software. The special exception does not apply to any modifications |
| of the software. |
| |
| Not withstanding the above, under no circumstances may you combine |
| this software in any way with any other Broadcom software provided |
| under a license other than the GPL, without Broadcom's express prior |
| written consent. |
| |
| :> |
| */ |
| |
| /* |
| * bcmos_system.h |
| * Maple System Services |
| * vxWorks 5.5 port |
| */ |
| |
| #ifndef BCMOS_SYSTEM_H_ |
| #define BCMOS_SYSTEM_H_ |
| |
| #define BCMOS_IRQ_SINGLE 0 |
| #define BCMOS_IRQ_SHARED 1 |
| |
| #define inline __inline |
| |
| |
| #include <stdio.h> |
| #include <stdlib.h> |
| #include <string.h> |
| #include <assert.h> |
| #include <ctype.h> |
| #include <time.h> |
| #include <limits.h> |
| #include <unistd.h> |
| #include <sockLib.h> |
| #include <sys/socket.h> |
| #include <netinet/in.h> |
| |
| /* Re-define GNU typeof as ISO __typeof__ */ |
| #define typeof __typeof__ |
| |
| /* Specify here which system functions are inlined */ |
| |
| /* #define BCMOS_FASTLOCK_INLINE */ |
| /* #define BCMOS_SEM_WAIT_INLINE */ |
| /* #define BCMOS_SEM_POST_INLINE */ |
| /* #define BCMOS_USLEEP_INLINE */ |
| #define BCMOS_TRACE_PRINTF |
| #define BCMOS_BYTE_POOL_ALLOC_FREE_INLINE |
| /* #define BCMOS_MALLOC_FREE_INLINE */ |
| /* #define BCMOS_CALLOC_INLINE */ |
| /* if Host cpu is MIPS cpu,enable this macro */ |
| /* Host cpu type will be determined during compile*/ |
| //#define HOST_CPU_IS_MIPS |
| //#define HOST_CPU_IS_PPC |
| /*if the Memory allocated by cacheDmaMalloc/acheDmaFree() is non-cached memory,enable this macro*/ |
| #define NON_CACHED_MEMORY_CREATED_BY_CACHEDMAMALLOC |
| /* Uncommentthe following line if h/w supports DMA cache coherency */ |
| /* #define BCMOS_DMA_CACHE_COHERENCY */ |
| |
| static inline void bcmos_int_disable(int irq) |
| {} |
| |
| void _bcmos_backtrace(void); |
| |
| #define BUG_ON(_f) do { if (_f) { _bcmos_backtrace(); } } while (0) |
| #define BUG() BUG_ON(1) |
| #define BUG_UNLESS(_f) BUG_ON(!(_f)) |
| |
| /** Boolean */ |
| #define BCMOS_BOOLEAN |
| typedef enum |
| { |
| BCMOS_FALSE = 0, |
| BCMOS_TRUE = 1, |
| } bcmos_bool; |
| |
| #include "bcmos_common.h" |
| |
| #define ffs(n) ffsLsb(n) |
| |
| /** Semaphore control block */ |
| struct bcmos_sem |
| { |
| uint32_t s; |
| }; |
| |
| |
| /** Mutex control block */ |
| struct bcmos_mutex |
| { |
| uint32_t m; |
| }; |
| |
| /** Fast lock control block */ |
| struct bcmos_fastlock |
| { |
| uint32_t l; |
| }; |
| |
| /** Fastlock initializer. Can be used instead of calling bcmos_fastlock_init() */ |
| #define BCMOS_FASTLOCK_INITIALIZER { 0 } |
| |
| /** OS-specific task control block extension */ |
| typedef struct bcmos_sys_task |
| { |
| uint32_t t; /**< vxWorks task ID */ |
| } bcmos_sys_task; |
| |
| |
| /** System timer */ |
| struct bcmos_sys_timer |
| { |
| uint32_t t; /**< VxW timer */ |
| bcmos_sys_timer_handler handler; /**< Timer handler */ |
| void *data; /**< Parameter to be passed to the handler */ |
| }; |
| |
| /** Byte memory pool control block */ |
| struct bcmos_byte_pool |
| { |
| bcmos_byte_pool_parm parm; /**< Pool parameters */ |
| uint32_t allocated; /**< Number of bytes allocated */ |
| #ifdef BCMOS_MEM_DEBUG |
| uint32_t magic; /**< magic number */ |
| #define BCMOS_BYTE_POOL_VALID (('b'<<24) | ('y' << 16) | ('p' << 8) | 'o') |
| #define BCMOS_BYTE_POOL_DELETED (('b'<<24) | ('y' << 16) | ('p' << 8) | '~') |
| #endif |
| }; |
| |
| #define bcmos_sys_vprintf(fmt, args) vprintf(fmt, args) |
| |
| #define EXPORT_SYMBOL(_sym) |
| |
| /* 2nd part of OS-independent declarations */ |
| #include "bcmos_common2.h" |
| |
| void bcm_pci_write32(volatile uint32_t *address, uint32_t value); |
| uint32_t bcm_pci_read32(const volatile uint32_t *address); |
| |
| |
| /*todo must check validity that the string is numeric, sscanf cannot detect errors, |
| * if not valid, put (*tailptr) in the first non valid char in string, |
| if valid, point tailptr in the last char in string (*tailptr=string+strlen(string))*/ |
| #define strtoull(string,tailptr,base) ({\ |
| unsigned long long int __a;\ |
| *(tailptr)=(char*)((string)+strlen(string));\ |
| sscanf(string, base == 10 ? "%llu" : "%llx", &__a );\ |
| __a;\ |
| }) |
| #define strtoll(string,tailptr,base) ({\ |
| long long int __a;\ |
| *(tailptr)=(char*)((string)+strlen(string));\ |
| sscanf(string,"%lld", &__a );\ |
| __a;\ |
| }) |
| |
| #define snprintf(s1,n,s2,args...) sprintf(s1, s2,## args) |
| #define vsnprintf(s1,n,s2,args...) vsprintf(s1, s2,## args) |
| |
| |
| int ffsLsb (UINT32 i); |
| int ffsll(long long int i); |
| |
| |
| #endif /* BCMOS_SYSTEM_H_ */ |