mirror of
https://github.com/gnif/LookingGlass.git
synced 2024-12-23 05:53:40 +00:00
[common] inline get_pc to memcpySSE
This commit is contained in:
parent
cd6caea4b0
commit
778af24d82
@ -30,15 +30,6 @@ Place, Suite 330, Boston, MA 02111-1307 USA
|
|||||||
|
|
||||||
#define OP(...) #__VA_ARGS__ "\n\t"
|
#define OP(...) #__VA_ARGS__ "\n\t"
|
||||||
|
|
||||||
#ifdef __i386__
|
|
||||||
__asm__ (
|
|
||||||
".global get_pc\n\t"
|
|
||||||
"get_pc:\n\t"
|
|
||||||
"mov (%esp), %eax \n\t"
|
|
||||||
"ret"
|
|
||||||
);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
inline static void memcpySSE(void *dst, const void * src, size_t length)
|
inline static void memcpySSE(void *dst, const void * src, size_t length)
|
||||||
{
|
{
|
||||||
#if !defined(NATIVE_MEMCPY) && (defined(__x86_64__) || defined(__i386__))
|
#if !defined(NATIVE_MEMCPY) && (defined(__x86_64__) || defined(__i386__))
|
||||||
@ -117,13 +108,19 @@ inline static void memcpySSE(void *dst, const void * src, size_t length)
|
|||||||
#ifdef __x86_64__
|
#ifdef __x86_64__
|
||||||
"leaq (%%rip), %%rax\n\t"
|
"leaq (%%rip), %%rax\n\t"
|
||||||
#else
|
#else
|
||||||
"call get_pc\n\t"
|
"call GetPC_%=\n\t"
|
||||||
#endif
|
#endif
|
||||||
"Offset_%=:\n\t"
|
"Offset_%=:\n\t"
|
||||||
"add $(BlockTable_%= - Offset_%=), %%" REG "\n\t"
|
"add $(BlockTable_%= - Offset_%=), %%" REG "\n\t"
|
||||||
"add %[off],%%" REG " \n\t"
|
"add %[off],%%" REG " \n\t"
|
||||||
"jmp *%%" REG " \n\t"
|
"jmp *%%" REG " \n\t"
|
||||||
|
|
||||||
|
#ifdef __i386__
|
||||||
|
"GetPC_%=:\n\t"
|
||||||
|
"mov (%%esp), %%eax \n\t"
|
||||||
|
"ret \n\t"
|
||||||
|
#endif
|
||||||
|
|
||||||
"BlockTable_%=:\n\t"
|
"BlockTable_%=:\n\t"
|
||||||
#ifdef __x86_64__
|
#ifdef __x86_64__
|
||||||
"vmovaps 0xE0(%[src]),%%xmm14 \n\t"
|
"vmovaps 0xE0(%[src]),%%xmm14 \n\t"
|
||||||
|
Loading…
Reference in New Issue
Block a user