corda/src/arch.h

53 lines
1.1 KiB
C
Raw Normal View History

2010-12-06 03:21:09 +00:00
/* Copyright (c) 2008-2010, Avian Contributors
2008-06-04 22:21:27 +00:00
Permission to use, copy, modify, and/or distribute this software
for any purpose with or without fee is hereby granted, provided
that the above copyright notice and this permission notice appear
in all copies.
There is NO WARRANTY for this software. See license.txt for
details. */
#ifndef ARCH_H
#define ARCH_H
2010-04-15 17:11:10 +00:00
#ifdef _MSC_VER
# include "windows.h"
# pragma push_macro("assert")
# include "intrin.h"
# pragma pop_macro("assert")
# undef interface
#endif
2008-06-04 22:21:27 +00:00
#include "common.h"
extern "C" void NO_RETURN
2009-05-05 01:04:17 +00:00
vmJump(void* address, void* base, void* stack, void* thread,
uintptr_t returnLow, uintptr_t returnHigh);
2008-06-04 22:21:27 +00:00
namespace vm {
inline void
compileTimeMemoryBarrier()
{
#ifdef _MSC_VER
_ReadWriteBarrier();
#else
__asm__ __volatile__("": : :"memory");
#endif
}
} // namespace vm
#if (defined ARCH_x86_32) || (defined ARCH_x86_64)
2008-06-04 22:21:27 +00:00
# include "x86.h"
#elif defined ARCH_powerpc
2008-06-04 22:21:27 +00:00
# include "powerpc.h"
#elif defined ARCH_arm
2009-08-06 17:52:36 +00:00
# include "arm.h"
2008-06-04 22:21:27 +00:00
#else
# error unsupported architecture
#endif
#endif//ARCH_H