# HG changeset patch # User Patrice Mandin # Date 1158407434 0 # Node ID afbcf97a5dd92c77c00fdd4bb0c11a958d04345e # Parent e958a003b69b1303c098872c5b16a383918992f8 Save/restore fpu registers if needed diff -r e958a003b69b -r afbcf97a5dd9 src/audio/mint/SDL_mintaudio_it.S --- a/src/audio/mint/SDL_mintaudio_it.S Sat Sep 16 10:38:09 2006 +0000 +++ b/src/audio/mint/SDL_mintaudio_it.S Sat Sep 16 11:50:34 2006 +0000 @@ -40,6 +40,7 @@ .globl _SDL_MintAudio_numbuf .globl _SDL_MintAudio_audiosize .globl _SDL_MintAudio_clocktics + .globl _SDL_MintAudio_hasfpu .globl _SDL_MintAudio_stfa @@ -77,7 +78,7 @@ /* Check if we are not already running */ tstw _SDL_MintAudio_mutex - bnes SDL_MintAudio_XbiosEnd + bne SDL_MintAudio_XbiosEnd notw _SDL_MintAudio_mutex /* Swap buffers */ @@ -85,9 +86,25 @@ moveml d0-d7/a0-a6,sp@- + /* Save FPU if needed */ + tstw _SDL_MintAudio_hasfpu + beqs SDL_MintAudio_Xbios_nofpu1 + fsave sp@- + fmoveml fpcr/fpsr/fpiar,sp@- + fmovemx fp0-fp7,sp@- +SDL_MintAudio_Xbios_nofpu1: + /* Callback */ jsr _SDL_MintAudio_Callback + /* Restore FPU if needed */ + tstw _SDL_MintAudio_hasfpu + beqs SDL_MintAudio_Xbios_nofpu2 + fmovemx sp@+,fp0-fp7 + fmoveml sp@+,fpcr/fpsr/fpiar + frestore sp@+ +SDL_MintAudio_Xbios_nofpu2: + /* Reserve space for registers */ subl #savamt,savptr @@ -131,7 +148,7 @@ /* Check if we are not already running */ tstw _SDL_MintAudio_mutex - bnes SDL_MintAudio_Dma8End + bne SDL_MintAudio_Dma8End notw _SDL_MintAudio_mutex /* Swap buffers */ @@ -139,9 +156,25 @@ moveml d0-d1/a0-a1,sp@- + /* Save FPU if needed */ + tstw _SDL_MintAudio_hasfpu + beqs SDL_MintAudio_Dma8_nofpu1 + fsave sp@- + fmoveml fpcr/fpsr/fpiar,sp@- + fmovemx fp0-fp7,sp@- +SDL_MintAudio_Dma8_nofpu1: + /* Callback */ jsr _SDL_MintAudio_Callback + /* Restore FPU if needed */ + tstw _SDL_MintAudio_hasfpu + beqs SDL_MintAudio_Dma8_nofpu2 + fmovemx sp@+,fp0-fp7 + fmoveml sp@+,fpcr/fpsr/fpiar + frestore sp@+ +SDL_MintAudio_Dma8_nofpu2: + /* Set new buffer */ moveq #0,d0 @@ -195,9 +228,25 @@ moveml d0-d7/a0-a6,sp@- + /* Save FPU if needed */ + tstw _SDL_MintAudio_hasfpu + beqs SDL_MintAudio_Stfa_nofpu1 + fsave sp@- + fmoveml fpcr/fpsr/fpiar,sp@- + fmovemx fp0-fp7,sp@- +SDL_MintAudio_Stfa_nofpu1: + /* Callback */ jsr _SDL_MintAudio_Callback + /* Restore FPU if needed */ + tstw _SDL_MintAudio_hasfpu + beqs SDL_MintAudio_Stfa_nofpu2 + fmovemx sp@+,fp0-fp7 + fmoveml sp@+,fpcr/fpsr/fpiar + frestore sp@+ +SDL_MintAudio_Stfa_nofpu2: + /* Set new buffer */ moveq #0,d0