mirror of
https://github.com/raspberrypi/userland.git
synced 2025-12-06 04:49:12 +00:00
Initial import of userland code
This commit is contained in:
127
vcinclude/common.h
Normal file
127
vcinclude/common.h
Normal file
@@ -0,0 +1,127 @@
|
||||
/*
|
||||
Copyright (c) 2012, Broadcom Europe Ltd
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
* Neither the name of the copyright holder nor the
|
||||
names of its contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef __VC_INCLUDE_COMMON_H__
|
||||
#define __VC_INCLUDE_COMMON_H__
|
||||
|
||||
#include "interface/vcos/vcos_stdint.h"
|
||||
#include "interface/vctypes/vc_image_types.h"
|
||||
|
||||
#if defined(__HIGHC__) && defined(_VIDEOCORE) && !defined(_I386)
|
||||
// __HIGHC__ is only available with MW
|
||||
// The scvc plugins are compiled (bizarrely) on an x86 with _VIDEOCORE set!
|
||||
#include <vc/intrinsics.h>
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifdef __SYMBIAN32__
|
||||
# ifndef INLINE
|
||||
# define INLINE __inline
|
||||
# endif
|
||||
|
||||
/* Align a pointer/integer by rounding up/down */
|
||||
#define ALIGN_DOWN(p, n) ((uint32_t)(p) - ( (uint32_t)(p) % (uint32_t)(n) ))
|
||||
#define ALIGN_UP(p, n) ALIGN_DOWN((uint32_t)(p) + (uint32_t)(n) - 1, (n))
|
||||
|
||||
#elif defined (VCMODS_LCC)
|
||||
#include <limits.h>
|
||||
|
||||
|
||||
#elif !defined(__KERNEL__)
|
||||
#include <limits.h>
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/*}}}*/
|
||||
|
||||
/* Fixed-point types */
|
||||
typedef unsigned short uint8p8_t;
|
||||
typedef signed short sint8p8_t;
|
||||
typedef unsigned short uint4p12_t;
|
||||
typedef signed short sint4p12_t;
|
||||
typedef signed short sint0p16_t;
|
||||
typedef signed char sint8p0_t;
|
||||
typedef unsigned char uint0p8_t;
|
||||
typedef signed long int24p8_t;
|
||||
|
||||
/*{{{ Common typedefs */
|
||||
|
||||
typedef enum bool_e
|
||||
{
|
||||
VC_FALSE = 0,
|
||||
VC_TRUE = 1,
|
||||
} bool_t;
|
||||
|
||||
/*}}}*/
|
||||
|
||||
/*{{{ Common macros */
|
||||
|
||||
|
||||
/* Align a pointer/integer by rounding up/down */
|
||||
#define ALIGN_DOWN(p, n) ((uintptr_t)(p) - ( (uintptr_t)(p) % (uintptr_t)(n) ))
|
||||
#define ALIGN_UP(p, n) ALIGN_DOWN((uintptr_t)(p) + (uintptr_t)(n) - 1, (n))
|
||||
|
||||
#define CLIP(lower, n, upper) _min((upper), _max((lower), (n)))
|
||||
|
||||
/*}}}*/
|
||||
|
||||
/*{{{ Debugging and profiling macros */
|
||||
|
||||
#if 0
|
||||
/* There's already an assert_once in <logging/logging.h> */
|
||||
#ifdef DEBUG
|
||||
#define assert_once(x) \
|
||||
{ \
|
||||
static uint8_t ignore = 0; \
|
||||
if(!ignore) \
|
||||
{ \
|
||||
assert(x); \
|
||||
ignore++; \
|
||||
} \
|
||||
}
|
||||
#else
|
||||
#define assert_once(x) (void)0
|
||||
#endif
|
||||
#endif /* 0 */
|
||||
|
||||
#if defined(__HIGHC__) && !defined(NDEBUG)
|
||||
/* HighC lacks a __FUNCTION__ preproc symbol... :( */
|
||||
#define profile_rename(name) _ASM(".global " name "\n" name ":\n")
|
||||
#else
|
||||
#define profile_rename(name) (void)0
|
||||
#endif
|
||||
|
||||
/*}}}*/
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* __VCINCLUDE_COMMON_H__ */
|
||||
|
||||
33
vcinclude/vc_image_types.h
Normal file
33
vcinclude/vc_image_types.h
Normal file
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
Copyright (c) 2012, Broadcom Europe Ltd
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
* Neither the name of the copyright holder nor the
|
||||
names of its contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef __VC_INCLUDE_IMAGE_TYPES_H__
|
||||
#define __VC_INCLUDE_IMAGE_TYPES_H__
|
||||
|
||||
#include "interface/vctypes/vc_image_types.h"
|
||||
|
||||
#endif /* __VC_INCLUDE_IMAGE_TYPES_H__ */
|
||||
65
vcinclude/vcore.h
Normal file
65
vcinclude/vcore.h
Normal file
@@ -0,0 +1,65 @@
|
||||
/*
|
||||
Copyright (c) 2012, Broadcom Europe Ltd
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
* Neither the name of the copyright holder nor the
|
||||
names of its contributors may be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
|
||||
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef VCORE_H
|
||||
#define VCORE_H
|
||||
|
||||
#ifdef __HIGHC__
|
||||
#include "vc/intrinsics.h"
|
||||
|
||||
#undef asm
|
||||
#define asm(x) _ASM(x)
|
||||
|
||||
#undef min
|
||||
#define min(x,y) _min(x,y)
|
||||
|
||||
#undef max
|
||||
#define max(x,y) _max(x,y)
|
||||
|
||||
#ifndef abs
|
||||
#define abs(x) _abs(x)
|
||||
#endif
|
||||
#else
|
||||
#define _vasm asm
|
||||
#define _bkpt() do {asm(" bkpt");}while(0)
|
||||
#define _di() do{asm(" di");}while(0)
|
||||
#define _ei() do{asm(" ei");}while(0)
|
||||
#define _nop() do{asm(" nop");}while(0)
|
||||
#define _sleep() do{asm(" sleep");}while(0)
|
||||
|
||||
#undef min
|
||||
#define min(x,y) ((x)<(y) ? (x):(y))
|
||||
|
||||
#undef max
|
||||
#define max(x,y) ((x)>(y) ? (x):(y))
|
||||
|
||||
#ifndef abs
|
||||
#define abs(x) ((x)>=0 ? (x):-(x))
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user