43 lines
1.5 KiB
C
43 lines
1.5 KiB
C
|
/*
|
||
|
* Very simple but very effective user-space memory tester.
|
||
|
* Originally by Simon Kirby <sim@stormix.com> <sim@neato.org>
|
||
|
* Version 2 by Charles Cazabon <charlesc-memtester@pyropus.ca>
|
||
|
* Version 3 not publicly released.
|
||
|
* Version 4 rewrite:
|
||
|
* Copyright (C) 2004-2010 Charles Cazabon <charlesc-memtester@pyropus.ca>
|
||
|
* Licensed under the terms of the GNU General Public License version 2 (only).
|
||
|
* See the file COPYING for details.
|
||
|
*
|
||
|
* This file contains some macro definitions for handling 32/64 bit platforms.
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
//#include <limits.h>
|
||
|
|
||
|
#define ULONG_MAX (4294967295UL)
|
||
|
extern unsigned long get_timer_masked(void);
|
||
|
|
||
|
//#define rand32() ((unsigned int) rand() | ( (unsigned int) rand() << 16))
|
||
|
#define rand32() ((unsigned int) get_timer_masked() | ( (unsigned int) get_timer_masked() << 16))
|
||
|
|
||
|
#if (ULONG_MAX == 4294967295UL)
|
||
|
#define rand_ul() rand32()
|
||
|
#define UL_ONEBITS 0xffffffff
|
||
|
#define UL_LEN 32
|
||
|
#define CHECKERBOARD1 0x55555555
|
||
|
#define CHECKERBOARD2 0xaaaaaaaa
|
||
|
#define UL_BYTE(x) ((x | x << 8 | x << 16 | x << 24))
|
||
|
#elif (ULONG_MAX == 18446744073709551615ULL)
|
||
|
#define rand64() (((ul) rand32()) << 32 | ((ul) rand32()))
|
||
|
#define rand_ul() rand64()
|
||
|
#define UL_ONEBITS 0xffffffffffffffffUL
|
||
|
#define UL_LEN 64
|
||
|
#define CHECKERBOARD1 0x5555555555555555
|
||
|
#define CHECKERBOARD2 0xaaaaaaaaaaaaaaaa
|
||
|
#define UL_BYTE(x) (((ul)x | (ul)x<<8 | (ul)x<<16 | (ul)x<<24 | (ul)x<<32 | (ul)x<<40 | (ul)x<<48 | (ul)x<<56))
|
||
|
#else
|
||
|
#error long on this platform is not 32 or 64 bits
|
||
|
#endif
|
||
|
|
||
|
|