From 7e9c5668fc5d1d470f2b5659be985c6a8d25cd3f Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Wed, 27 Jun 2007 10:17:35 +0000 Subject: [PATCH] Merged r3106:3107 from branches/SDL-1.2: Hermes PIC fixes. --- src/hermes/mmx_main.asm | 4 +--- src/hermes/mmxp2_32.asm | 10 ++++----- src/hermes/x86_main.asm | 49 +---------------------------------------- src/hermes/x86p_16.asm | 17 +++++++------- src/hermes/x86p_32.asm | 40 ++++++++++++++++----------------- 5 files changed, 33 insertions(+), 87 deletions(-) diff --git a/src/hermes/mmx_main.asm b/src/hermes/mmx_main.asm index f79bb398d..c3886d6f0 100644 --- a/src/hermes/mmx_main.asm +++ b/src/hermes/mmx_main.asm @@ -12,7 +12,6 @@ BITS 32 %include "common.inc" SDL_FUNC _ConvertMMX -SDL_FUNC _mmxreturn SECTION .text @@ -51,9 +50,8 @@ _ConvertMMX: y_loop: mov ecx,[ebp+4] - jmp [ebp+32] + call [ebp+32] -_mmxreturn: add esi,[ebp+12] add edi,[ebp+28] diff --git a/src/hermes/mmxp2_32.asm b/src/hermes/mmxp2_32.asm index 8de8de482..89c76d0cb 100644 --- a/src/hermes/mmxp2_32.asm +++ b/src/hermes/mmxp2_32.asm @@ -28,8 +28,6 @@ SDL_FUNC _ConvertMMXpII32_16BGR565 SDL_FUNC _ConvertMMXpII32_16RGB555 SDL_FUNC _ConvertMMXpII32_16BGR555 -EXTERN _mmxreturn - ;; Macros for conversion routines %macro _push_immq_mask 1 @@ -121,7 +119,7 @@ _ConvertMMXpII32_24RGB888: dec ecx jnz .L3 .L4: - jmp _mmxreturn + return @@ -190,7 +188,7 @@ _ConvertMMXpII32_16RGB565: jnz .L3 .L4: - jmp _mmxreturn + retn _ConvertMMXpII32_16BGR565: @@ -260,7 +258,7 @@ _ConvertMMXpII32_16BGR565: jnz .L3 .L4: - jmp _mmxreturn + retn _ConvertMMXpII32_16BGR555: @@ -400,7 +398,7 @@ _convert_bgr555_cheat: jnz .L3 .L4: - jmp _mmxreturn + retn %ifidn __OUTPUT_FORMAT__,elf section .note.GNU-stack noalloc noexec nowrite progbits diff --git a/src/hermes/x86_main.asm b/src/hermes/x86_main.asm index fdc185dd7..e78bf8f7a 100644 --- a/src/hermes/x86_main.asm +++ b/src/hermes/x86_main.asm @@ -14,9 +14,6 @@ BITS 32 %include "common.inc" SDL_FUNC _ConvertX86 -SDL_FUNC _x86return - -SDL_FUNC _Hermes_X86_CPU SECTION .text @@ -55,9 +52,8 @@ _ConvertX86: y_loop: mov ecx,[ebp+4] - jmp [ebp+32] + call [ebp+32] -_x86return: add esi,[ebp+12] add edi,[ebp+28] @@ -74,49 +70,6 @@ endconvert: -;; Hermes_X86_CPU returns the CPUID flags in eax - -_Hermes_X86_CPU: - pushfd - pop eax - - mov ecx,eax - - xor eax,040000h - push eax - - popfd - pushfd - - pop eax - xor eax,ecx - jz .L1 ; Processor is 386 - - push ecx - popfd - - mov eax,ecx - xor eax,200000h - - push eax - popfd - pushfd - - pop eax - xor eax,ecx - je .L1 - - push ebx - - mov eax,1 - cpuid - mov eax,edx - - pop ebx - -.L1: - ret - %ifidn __OUTPUT_FORMAT__,elf section .note.GNU-stack noalloc noexec nowrite progbits %endif diff --git a/src/hermes/x86p_16.asm b/src/hermes/x86p_16.asm index 53363d2e7..e35c75de7 100644 --- a/src/hermes/x86p_16.asm +++ b/src/hermes/x86p_16.asm @@ -20,7 +20,6 @@ SDL_FUNC _ConvertX86p16_16BGR555 SDL_FUNC _ConvertX86p16_8RGB332 EXTERN _ConvertX86 -EXTERN _x86return SECTION .text @@ -49,7 +48,7 @@ _ConvertX86p16_16BGR565: dec ecx jnz .L1 .L2 - jmp _x86return + retn .L3 ; head mov eax,edi @@ -127,7 +126,7 @@ _ConvertX86p16_16BGR565: add edi,BYTE 2 .L7 - jmp _x86return + retn @@ -156,7 +155,7 @@ _ConvertX86p16_16RGB555: dec ecx jnz .L1 .L2 - jmp _x86return + retn .L3 ; head mov eax,edi @@ -235,7 +234,7 @@ _ConvertX86p16_16RGB555: jmp SHORT .L6 .L7 pop ebp - jmp _x86return + retn @@ -269,7 +268,7 @@ _ConvertX86p16_16BGR555: dec ecx jnz .L1 .L2 - jmp _x86return + retn .L3 ; head mov eax,edi @@ -353,7 +352,7 @@ _ConvertX86p16_16BGR555: add edi,BYTE 2 .L7 - jmp _x86return + retn @@ -386,7 +385,7 @@ _ConvertX86p16_8RGB332: dec ecx jnz .L1 .L2 - jmp _x86return + retn .L3 mov eax,edi and eax,BYTE 11b @@ -484,7 +483,7 @@ _ConvertX86p16_8RGB332: jnz .L6 .L7 pop ebp - jmp _x86return + retn %ifidn __OUTPUT_FORMAT__,elf section .note.GNU-stack noalloc noexec nowrite progbits diff --git a/src/hermes/x86p_32.asm b/src/hermes/x86p_32.asm index 1aaef410a..4446c1c2c 100644 --- a/src/hermes/x86p_32.asm +++ b/src/hermes/x86p_32.asm @@ -24,8 +24,6 @@ SDL_FUNC _ConvertX86p32_16RGB555 SDL_FUNC _ConvertX86p32_16BGR555 SDL_FUNC _ConvertX86p32_8RGB332 -EXTERN _x86return - SECTION .text ;; _Convert_* @@ -53,7 +51,7 @@ _ConvertX86p32_32BGR888: dec ecx jnz .L1 .L2 - jmp _x86return + retn .L3 ; save ebp push ebp @@ -113,7 +111,7 @@ _ConvertX86p32_32BGR888: jnz .L5 .L6 pop ebp - jmp _x86return + retn @@ -133,7 +131,7 @@ _ConvertX86p32_32RGBA888: dec ecx jnz .L1 .L2 - jmp _x86return + retn .L3 ; save ebp push ebp @@ -184,7 +182,7 @@ _ConvertX86p32_32RGBA888: jnz .L5 .L6 pop ebp - jmp _x86return + retn @@ -204,7 +202,7 @@ _ConvertX86p32_32BGRA888: dec ecx jnz .L1 .L2 - jmp _x86return + retn .L3 ; save ebp push ebp @@ -257,7 +255,7 @@ _ConvertX86p32_32BGRA888: jnz .L5 .L6 pop ebp - jmp _x86return + retn @@ -282,7 +280,7 @@ _ConvertX86p32_24RGB888: dec ecx jnz .L1 .L2 - jmp _x86return + retn .L3 ; head mov edx,edi @@ -354,7 +352,7 @@ _ConvertX86p32_24RGB888: jnz .L6 .L7 pop ebp - jmp _x86return + retn @@ -380,7 +378,7 @@ _ConvertX86p32_24BGR888: dec ecx jnz .L1 .L2 - jmp _x86return + retn .L3 ; head mov edx,edi @@ -455,7 +453,7 @@ _ConvertX86p32_24BGR888: .L7 pop ebp - jmp _x86return + retn @@ -484,7 +482,7 @@ _ConvertX86p32_16RGB565: jnz .L1 .L2: ; End of short loop - jmp _x86return + retn .L3 ; head @@ -570,7 +568,7 @@ _ConvertX86p32_16RGB565: add edi,BYTE 2 .L7: - jmp _x86return + retn @@ -599,7 +597,7 @@ _ConvertX86p32_16BGR565: dec ecx jnz .L1 .L2 - jmp _x86return + retn .L3 ; head mov ebx,edi @@ -684,7 +682,7 @@ _ConvertX86p32_16BGR565: add edi,BYTE 2 .L7 - jmp _x86return + retn @@ -713,7 +711,7 @@ _ConvertX86p32_16RGB555: dec ecx jnz .L1 .L2 - jmp _x86return + retn .L3 ; head mov ebx,edi @@ -795,7 +793,7 @@ _ConvertX86p32_16RGB555: add edi,BYTE 2 .L7 - jmp _x86return + retn @@ -825,7 +823,7 @@ _ConvertX86p32_16BGR555: dec ecx jnz .L1 .L2 - jmp _x86return + retn .L3 ; head mov ebx,edi @@ -910,7 +908,7 @@ _ConvertX86p32_16BGR555: add edi,BYTE 2 .L7 - jmp _x86return + retn @@ -1040,7 +1038,7 @@ _ConvertX86p32_8RGB332: jnz .L3 .L4: - jmp _x86return + retn %ifidn __OUTPUT_FORMAT__,elf section .note.GNU-stack noalloc noexec nowrite progbits