diff options
Diffstat (limited to 'ndb/include/portlib/prefetch.h')
-rw-r--r-- | ndb/include/portlib/prefetch.h | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/ndb/include/portlib/prefetch.h b/ndb/include/portlib/prefetch.h new file mode 100644 index 00000000000..d663dd4c40d --- /dev/null +++ b/ndb/include/portlib/prefetch.h @@ -0,0 +1,69 @@ +/* Copyright (C) 2003 MySQL AB + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ + +#ifndef PREFETCH_H +#define PREFETCH_H + +#ifdef NDB_FORTE6 +#include <sun_prefetch.h> +#endif + +#ifdef USE_PREFETCH +#define PREFETCH(addr) prefetch(addr) +#else +#define PREFETCH(addr) +#endif + +#ifdef USE_PREFETCH +#define WRITEHINT(addr) writehint(addr) +#else +#define WRITEHINT(addr) +#endif + +#include "PortDefs.h" + +#ifdef NDB_FORTE6 +#pragma optimize("", off) +#endif +inline void prefetch(void* p) +{ +#ifdef NDB_ALPHA + __asm(" ldl r31,0(a0);", p); +#endif // NDB_ALPHA +#ifdef NDB_FORTE6 + sparc_prefetch_read_once(p); +#else + (void)p; +#endif +} + +inline void writehint(void* p) +{ +#ifdef NDB_ALPHA + __asm(" wh64 (a0);", p); +#endif // NDB_ALPHA +#ifdef NDB_FORTE6 + sparc_prefetch_write_once(p); +#else + (void)p; +#endif +} +#ifdef NDB_FORTE6 +#pragma optimize("", on) +#endif + +#endif + |