23 */
24
25 #ifndef OS_CPU_SOLARIS_SPARC_VM_PREFETCH_SOLARIS_SPARC_INLINE_HPP
26 #define OS_CPU_SOLARIS_SPARC_VM_PREFETCH_SOLARIS_SPARC_INLINE_HPP
27
28 #include "runtime/prefetch.hpp"
29
30 // For Sun Studio inplementation is in solaris_sparc.il
31 // For gcc inplementation is just below
32 extern "C" void _Prefetch_read (void *loc, intx interval);
33 extern "C" void _Prefetch_write(void *loc, intx interval);
34
35 inline void Prefetch::read(void *loc, intx interval) {
36 _Prefetch_read(loc, interval);
37 }
38
39 inline void Prefetch::write(void *loc, intx interval) {
40 _Prefetch_write(loc, interval);
41 }
42
43 #ifdef _GNU_SOURCE
44 extern "C" {
45 inline void _Prefetch_read (void *loc, intx interval) {
46 __asm__ volatile
47 ("prefetch [%0+%1], 0" : : "r" (loc), "r" (interval) : "memory" );
48 }
49 inline void _Prefetch_write(void *loc, intx interval) {
50 __asm__ volatile
51 ("prefetch [%0+%1], 2" : : "r" (loc), "r" (interval) : "memory" );
52 }
53 }
54 #endif // _GNU_SOURCE
55
56 #endif // OS_CPU_SOLARIS_SPARC_VM_PREFETCH_SOLARIS_SPARC_INLINE_HPP
|
23 */
24
25 #ifndef OS_CPU_SOLARIS_SPARC_VM_PREFETCH_SOLARIS_SPARC_INLINE_HPP
26 #define OS_CPU_SOLARIS_SPARC_VM_PREFETCH_SOLARIS_SPARC_INLINE_HPP
27
28 #include "runtime/prefetch.hpp"
29
30 // For Sun Studio inplementation is in solaris_sparc.il
31 // For gcc inplementation is just below
32 extern "C" void _Prefetch_read (void *loc, intx interval);
33 extern "C" void _Prefetch_write(void *loc, intx interval);
34
35 inline void Prefetch::read(void *loc, intx interval) {
36 _Prefetch_read(loc, interval);
37 }
38
39 inline void Prefetch::write(void *loc, intx interval) {
40 _Prefetch_write(loc, interval);
41 }
42
43 #endif // OS_CPU_SOLARIS_SPARC_VM_PREFETCH_SOLARIS_SPARC_INLINE_HPP
|