Skip to content

Commit

Permalink
Save/restore fpu registers if needed
Browse files Browse the repository at this point in the history
  • Loading branch information
pmandin committed Sep 16, 2006
1 parent 5e538d2 commit b2d9fc9
Showing 1 changed file with 51 additions and 2 deletions.
53 changes: 51 additions & 2 deletions src/audio/mint/SDL_mintaudio_it.S
Expand Up @@ -40,6 +40,7 @@
.globl _SDL_MintAudio_numbuf
.globl _SDL_MintAudio_audiosize
.globl _SDL_MintAudio_clocktics
.globl _SDL_MintAudio_hasfpu

.globl _SDL_MintAudio_stfa

Expand Down Expand Up @@ -77,17 +78,33 @@ _SDL_MintAudio_XbiosInterrupt:

/* 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 */
eorw #1,_SDL_MintAudio_numbuf

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

Expand Down Expand Up @@ -131,17 +148,33 @@ _SDL_MintAudio_Dma8Interrupt:

/* 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 */
eorw #1,_SDL_MintAudio_numbuf

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
Expand Down Expand Up @@ -195,9 +228,25 @@ _SDL_MintAudio_StfaInterrupt:

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
Expand Down

0 comments on commit b2d9fc9

Please sign in to comment.