summaryrefslogtreecommitdiff
path: root/src/vendorcode/amd/agesa
diff options
context:
space:
mode:
authorFrank Vibrans <frank.vibrans@amd.com>2011-05-05 16:45:36 +0000
committerMarc Jones <marc.jones@amd.com>2011-05-05 16:45:36 +0000
commitec40260ade7f9d03978f3a15b5c4e8343d3e6065 (patch)
tree5abee0f352ada1576bfbc50d35cf8813a39891f4 /src/vendorcode/amd/agesa
parent2f81c03d3a0d3183061ca56aecc306995dd648f2 (diff)
Remove AMD Agesa requirement for standard include files
This change modifies Makefile.inc to add the -nostdinc flag to the default CFLAGS value and removes the test for non-AMD Agesa builds. Other code is added to the gcc-intrin.h file in the Agesa Include folder to make the requirement for the standard includes obsolete from the Agesa perspective. Signed-off-by: Frank Vibrans <frank.vibrans@amd.com> Acked-by: Marc Jones <marcj303@gmail.com> git-svn-id: svn://svn.coreboot.org/coreboot/trunk@6555 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'src/vendorcode/amd/agesa')
-rw-r--r--src/vendorcode/amd/agesa/Include/gcc-intrin.h19
1 files changed, 16 insertions, 3 deletions
diff --git a/src/vendorcode/amd/agesa/Include/gcc-intrin.h b/src/vendorcode/amd/agesa/Include/gcc-intrin.h
index 26bb46154b..bacd83c1d6 100644
--- a/src/vendorcode/amd/agesa/Include/gcc-intrin.h
+++ b/src/vendorcode/amd/agesa/Include/gcc-intrin.h
@@ -27,8 +27,6 @@
*/
#if defined (__GNUC__)
-#include <pmmintrin.h>
-
/* I/O intrin functions. */
static __inline__ __attribute__((always_inline)) unsigned char __inbyte(unsigned short Port)
@@ -558,6 +556,10 @@ static __inline__ __attribute__((always_inline)) unsigned long long __readfsdwor
return value;
}
+#ifdef __SSE3__
+typedef long long __v2di __attribute__ ((__vector_size__ (16)));
+typedef long long __m128i __attribute__ ((__vector_size__ (16), __may_alias__));
+
static __inline__ __attribute__((always_inline)) void _mm_stream_si128_fs2 (void *__A, __m128i __B)
{
__asm__(".byte 0x64"); // fs prefix
@@ -567,9 +569,10 @@ static __inline__ __attribute__((always_inline)) void _mm_stream_si128_fs2 (void
static __inline__ __attribute__((always_inline)) void _mm_stream_si128_fs (void *__A, void *__B)
{
__m128i data;
- data = _mm_lddqu_si128 (__B);
+ data = (__m128i) __builtin_ia32_lddqu ((char const *)__B);
_mm_stream_si128_fs2 (__A, data);
}
+#endif
static __inline__ __attribute__((always_inline)) void _mm_clflush_fs (void *__A)
{
@@ -577,6 +580,16 @@ static __inline__ __attribute__((always_inline)) void _mm_clflush_fs (void *__A)
__builtin_ia32_clflush (__A);
}
+static __inline __attribute__(( __always_inline__)) void _mm_mfence (void)
+{
+ __builtin_ia32_mfence ();
+}
+
+static __inline __attribute__(( __always_inline__)) void _mm_sfence (void)
+{
+ __builtin_ia32_sfence ();
+}
+
static __inline__ __attribute__((always_inline)) void __stosb(unsigned char *dest, unsigned char data, size_t count)
{
__asm__ __volatile__ (