Mercurial > sdl-ios-xcode
view src/hermes/x86_main.asm @ 1879:cb232e63552c
Default the X11 dynamically loading on if the OS loader loads libraries
with their private symbols hidden. If that isn't the case, and someone
tries to enable it anyway, spit out a warning and don't let them do it.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Fri, 23 Jun 2006 08:39:05 +0000 |
parents | eb4d9d99849b |
children | 180fa05e98e2 |
line wrap: on
line source
; ; x86 format converters for HERMES ; Some routines Copyright (c) 1998 Christian Nentwich (brn@eleet.mcb.at) ; This source code is licensed under the GNU LGPL ; ; Please refer to the file COPYING.LIB contained in the distribution for ; licensing conditions ; ; Most routines are (c) Glenn Fiedler (ptc@gaffer.org), used with permission ; BITS 32 %include "common.inc" SDL_FUNC _ConvertX86 SDL_FUNC _x86return SDL_FUNC _Hermes_X86_CPU SECTION .text ;; _ConvertX86: ;; [ESP+8] ConverterInfo* ;; -------------------------------------------------------------------------- ;; ConverterInfo (ebp+..) ;; 0: void *s_pixels ;; 4: int s_width ;; 8: int s_height ;; 12: int s_add ;; 16: void *d_pixels ;; 20: int d_width ;; 24: int d_height ;; 28: int d_add ;; 32: void (*converter_function)() ;; 36: int32 *lookup _ConvertX86: push ebp mov ebp,esp ; Save the registers used by the blitters, necessary for optimized code pusha mov eax,[ebp+8] cmp dword [eax+4],BYTE 0 je endconvert mov ebp,eax mov esi,[ebp+0] mov edi,[ebp+16] y_loop: mov ecx,[ebp+4] jmp [ebp+32] _x86return: add esi,[ebp+12] add edi,[ebp+28] dec dword [ebp+8] jnz y_loop ; Restore the registers used by the blitters, necessary for optimized code popa pop ebp endconvert: ret ;; 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