Fix for bug 2283 (RVCT 4.0 support is missing from PDK 3.0.h)
Have multiple extension sections in the bld.inf, one for each version
of the compiler. The RVCT version building the tools will build the
runtime libraries for its version, but make sure we extract all the other
versions from zip archives. Also add the archive for RVCT4.
// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
// All rights reserved.
// This component and the accompanying materials are made available
// under the terms of the License "Eclipse Public License v1.0"
// which accompanies this distribution, and is available
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
//
// Initial Contributors:
// Nokia Corporation - initial contribution.
//
// Contributors:
//
// Description:
// e32test\nkernsa\utils.h
//
//
#ifndef __UTILS_H__
#define __UTILS_H__
#include <e32err.h>
#include <nkern.h>
extern "C" {
extern TBool InitialThreadDefined;
extern void SetupMemoryAllocator();
extern TAny* malloc(TUint32 aSize);
extern void free(TAny* aCell);
extern TAny* realloc(TAny* aCell, TUint32 aSize);
extern TUint32 round_to_page(TUint32 x);
extern void SpinWait(TUint32 aTicks);
extern void nfcfspin(TUint32 aTicks);
extern void fcfspin(TUint64 aTicks);
extern void DebugPrint(const char*, int);
extern void __cpu_idle();
extern void __cpu_yield();
extern TLinAddr __stack_pointer();
extern TUint32 __cpu_status_reg();
extern TUint32 __cpu_id();
extern TUint32 __trace_cpu_num();
extern void __finish();
extern void* memcpy(void*, const void*, unsigned);
extern void* memset(void*, int, unsigned);
extern void* memclr(void*, unsigned);
extern void* wordmove(void*, const void*, unsigned);
extern TUint32 random(TUint32* aSeed);
extern void setup_block(TUint32* aBlock, TInt aNumWords);
extern TBool verify_block(const TUint32* aBlock, TInt aNumWords);
extern TBool verify_block_no_trace(const TUint32* aBlock, TInt aNumWords);
extern void setup_block_cpu(TUint32* aBlock, TInt aNumWords);
extern TInt verify_block_cpu_no_trace(const TUint32* aBlock, TInt aNumWords);
extern TUint64 fast_counter();
extern TUint64 fast_counter_freq();
extern TUint32 norm_fast_counter(); // normalised to count between 1-2MHz
extern TUint32 norm_fast_counter_freq(); // normalised to count between 1-2MHz
extern void init_fast_counter();
extern TInt __microseconds_to_fast_counter(TInt us);
extern TInt __microseconds_to_norm_fast_counter(TInt us);
extern void DumpMemory(const char* msg, const void* data, int length);
}
#define TEST_PRINT(s) \
DEBUGPRINT("NKTEST: " s)
#define TEST_PRINT1(s, a) \
DEBUGPRINT("NKTEST: " s, a)
#define TEST_PRINT2(s, a, b) \
DEBUGPRINT("NKTEST: " s, a, b)
#define TEST_PRINT3(s, a, b, c) \
DEBUGPRINT("NKTEST: " s, a, b, c)
#define TEST_PRINT4(s, a, b, c, d) \
DEBUGPRINT("NKTEST: " s, a, b, c, d)
#define TEST_PRINT5(s, a, b, c, d, e) \
DEBUGPRINT("NKTEST: " s, a, b, c, d, e)
#define TEST_PRINT6(s, a, b, c, d, e, f) \
DEBUGPRINT("NKTEST: " s, a, b, c, d, e, f)
#define TEST_PRINT7(s, a, b, c, d, e, f, g) \
DEBUGPRINT("NKTEST: " s, a, b, c, d, e, f, g)
#define TRACE_LINE() \
DEBUGPRINT("NKTEST: line %d", __LINE__)
#define TEST_RESULT(x, s) \
do { if (!(x)) {DEBUGPRINT("NKTEST: " s); DEBUGPRINT("Line %d File %s", __LINE__, __FILE__);}} while(0)
#define TEST_RESULT1(x, s, a) \
do { if (!(x)) {DEBUGPRINT("NKTEST: " s, a); DEBUGPRINT("Line %d File %s", __LINE__, __FILE__);}} while(0)
#define TEST_RESULT2(x, s, a, b) \
do { if (!(x)) {DEBUGPRINT("NKTEST: " s, a, b); DEBUGPRINT("Line %d File %s", __LINE__, __FILE__);}} while(0)
#define TEST_RESULT3(x, s, a, b, c) \
do { if (!(x)) {DEBUGPRINT("NKTEST: " s, a, b, c); DEBUGPRINT("Line %d File %s", __LINE__, __FILE__);}} while(0)
#define TEST_RESULT4(x, s, a, b, c, d) \
do { if (!(x)) {DEBUGPRINT("NKTEST: " s, a, b, c, d); DEBUGPRINT("Line %d File %s", __LINE__, __FILE__);}} while(0)
#define TEST_OOM(p) TEST_RESULT(p, "Out of memory");
#define RANGE_CHECK(l,x,h) ((l)<=(x) && (x)<=(h))
#ifdef __SMP__
#define for_each_cpu(cpu) \
for((cpu)=0; (cpu)<NKern::NumberOfCpus(); ++(cpu))
#else
#define for_each_cpu(cpu) \
for((cpu)=0; (cpu)<1; ++(cpu))
#endif
class CircBuf
{
public:
static CircBuf* New(TInt aSlots);
CircBuf();
~CircBuf();
TInt TryGet(TUint32& aOut);
TInt TryPut(TUint32 aIn);
TUint32 Get();
void Put(TUint32 aIn);
void Reset();
TInt Count();
public:
TUint32* iBufBase;
TInt iSlotCount;
TInt iGetIndex;
TInt iPutIndex;
TSpinLock iLock;
};
#endif