/*************************************************************************** * Copyright (c) 2006, Broadcom Corporation * All Rights Reserved * Confidential Property of Broadcom Corporation * * THIS SOFTWARE MAY ONLY BE USED SUBJECT TO AN EXECUTED SOFTWARE LICENSE * AGREEMENT BETWEEN THE USER AND BROADCOM. YOU HAVE NO RIGHT TO USE OR * EXPLOIT THIS MATERIAL EXCEPT SUBJECT TO THE TERMS OF SUCH AN AGREEMENT. * * $brcm_Workfile: bunit_cache.c $ * $brcm_Revision: 1 $ * $brcm_Date: 12/21/06 6:48p $ * * Module Description: * * Profiler suite * CPU bus unit tests * * Revision History: * * $brcm_Log: /BSEAV/lib/bprofile/bunit_cache.c $ * * 1 12/21/06 6:48p vsilyaev * PR 26779: CPU cache latency test module * * 2 12/20/06 2:41p vsilyaev * PR 26715: Fixed memory leak * * 1 12/20/06 10:44a vsilyaev * PR 26715: CPU bus latency test module * * *******************************************************************************/ #include "bstd.h" #include "bkni.h" #include "batomic.h" #include "btrc.h" BTRC_MODULE(bunit_cache,ENABLE); #define B_TEST_ROUNDS (16*1024) #define b_nop() __asm__ __volatile__( \ ".set\tpush\n\t" \ ".set\tnoreorder\n\t" \ " nop \n" \ " nop \n" \ ".set\tpop\n") #define b_nop_64() \ b_nop();b_nop();b_nop();b_nop(); /* 8 */ \ b_nop();b_nop();b_nop();b_nop(); /* 16 */ \ b_nop();b_nop();b_nop();b_nop(); /* 24 */ \ b_nop();b_nop();b_nop();b_nop(); /* 32 */ \ b_nop();b_nop();b_nop();b_nop(); /* 40 */ \ b_nop();b_nop();b_nop();b_nop(); /* 48 */ \ b_nop();b_nop();b_nop();b_nop(); /* 56 */ \ b_nop();b_nop();b_nop();b_nop() /* 64 */ #define b_nop_4096k() \ b_nop_64(); b_nop_64(); b_nop_64(); b_nop_64(); /* 1024 */ \ b_nop_64(); b_nop_64(); b_nop_64(); b_nop_64(); /* 2048 */ \ b_nop_64(); b_nop_64(); b_nop_64(); b_nop_64(); /* 3072 */ \ b_nop_64(); b_nop_64(); b_nop_64(); b_nop_64() /* 4096 */ static void b_test_icache_4k(volatile uint32_t *ptr, uint32_t val) { unsigned i; BSTD_UNUSED(val); BSTD_UNUSED(ptr); for(i=0;i