Adapt timer code for Coldfire
--HG-- branch : SDL-1.2 extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/branches/SDL-1.2%404159
This commit is contained in:
parent
9c7075fc0b
commit
1ccc6106e8
1 changed files with 83 additions and 14 deletions
|
@ -36,14 +36,61 @@
|
|||
|
||||
.globl _SDL_MintAudio_hasfpu
|
||||
|
||||
/*--- Save/restore FPU context ---*/
|
||||
|
||||
#if defined(__mcoldfire__)
|
||||
|
||||
#define SAVE_FPU_CONTEXT \
|
||||
lea sp@(-216),sp; \
|
||||
fsave sp@; \
|
||||
fmovel fpiar,sp@-; \
|
||||
lea sp@(-64),sp; \
|
||||
fmovemd fp0-fp7,sp@
|
||||
|
||||
#define RESTORE_FPU_CONTEXT \
|
||||
fmovemd sp@,fp0-fp7; \
|
||||
lea sp@(64),sp; \
|
||||
fmovel sp@+,fpiar; \
|
||||
frestore sp@; \
|
||||
lea sp@(216),sp
|
||||
|
||||
#else
|
||||
|
||||
#define SAVE_FPU_CONTEXT \
|
||||
.chip 68k/68881; \
|
||||
fsave sp@-; \
|
||||
fmoveml fpcr/fpsr/fpiar,sp@-; \
|
||||
fmovemx fp0-fp7,sp@-; \
|
||||
.chip 68k
|
||||
|
||||
#define RESTORE_FPU_CONTEXT \
|
||||
.chip 68k/68881; \
|
||||
fmovemx sp@+,fp0-fp7; \
|
||||
fmoveml sp@+,fpcr/fpsr/fpiar; \
|
||||
frestore sp@+; \
|
||||
.chip 68k
|
||||
|
||||
#endif
|
||||
|
||||
/*--- Vector installer ---*/
|
||||
|
||||
_SDL_AtariVblInstall:
|
||||
#if defined(__mcoldfire__)
|
||||
movel sp@(4),d0
|
||||
movel d0,my_vector
|
||||
#else
|
||||
movel sp@(4),my_vector
|
||||
#endif
|
||||
|
||||
lea _my_vbl,a0
|
||||
|
||||
clrw vbl_mutex
|
||||
#if defined(__mcoldfire__)
|
||||
movel _hz_200.w,d0
|
||||
movel d0, _SDL_Atari_hz200
|
||||
#else
|
||||
movel _hz_200.w, _SDL_Atari_hz200
|
||||
#endif
|
||||
|
||||
/* Stop interrupts */
|
||||
|
||||
|
@ -58,7 +105,12 @@ bcl_search_place:
|
|||
movel (a1),d1
|
||||
beqs place_found
|
||||
addql #4,a1
|
||||
#if defined(__mcoldfire__)
|
||||
subql #1,d0
|
||||
bpls bcl_search_place
|
||||
#else
|
||||
dbra d0,bcl_search_place
|
||||
#endif
|
||||
|
||||
/* Not found */
|
||||
moveq #1,d0
|
||||
|
@ -100,7 +152,12 @@ bcl2_search_place:
|
|||
moveq #0,d1
|
||||
next_place:
|
||||
addql #4,a1
|
||||
#if defined(__mcoldfire__)
|
||||
subql #1,d1
|
||||
bpls bcl_search_place
|
||||
#else
|
||||
dbra d1,bcl2_search_place
|
||||
#endif
|
||||
|
||||
/* Restart interrupts */
|
||||
movew #0x2300,sr
|
||||
|
@ -110,25 +167,37 @@ badvector:
|
|||
/*--- Our vbl ---*/
|
||||
|
||||
_my_vbl:
|
||||
#if defined(__mcoldfire__)
|
||||
lea sp@(-60),sp
|
||||
moveml d0-d7/a0-a6,sp@
|
||||
#else
|
||||
moveml d0-d7/a0-a6,sp@-
|
||||
#endif
|
||||
|
||||
/* Update _hz_200 */
|
||||
#if defined(__mcoldfire__)
|
||||
movel _hz_200.w,d0
|
||||
movel d0, _SDL_Atari_hz200
|
||||
#else
|
||||
movel _hz_200.w, _SDL_Atari_hz200
|
||||
#endif
|
||||
|
||||
/* Verify if this is not already running */
|
||||
|
||||
tstw vbl_mutex
|
||||
bnes vbl_end
|
||||
#if defined(__mcoldfire__)
|
||||
movew vbl_mutex,d0
|
||||
notl d0
|
||||
movew d0,vbl_mutex
|
||||
#else
|
||||
notw vbl_mutex
|
||||
|
||||
moveml d0-d7/a0-a6,sp@-
|
||||
#endif
|
||||
|
||||
/* Save FPU if needed */
|
||||
tstw _SDL_MintAudio_hasfpu
|
||||
beqs SDL_AtariVbl_nofpu1
|
||||
.chip 68060
|
||||
fsave sp@-
|
||||
fmoveml fpcr/fpsr/fpiar,sp@-
|
||||
fmovemx fp0-fp7,sp@-
|
||||
.chip 68000
|
||||
SAVE_FPU_CONTEXT
|
||||
SDL_AtariVbl_nofpu1:
|
||||
|
||||
movel my_vector,a0
|
||||
|
@ -137,17 +206,17 @@ SDL_AtariVbl_nofpu1:
|
|||
/* Restore FPU if needed */
|
||||
tstw _SDL_MintAudio_hasfpu
|
||||
beqs SDL_AtariVbl_Xbios_nofpu2
|
||||
.chip 68060
|
||||
fmovemx sp@+,fp0-fp7
|
||||
fmoveml sp@+,fpcr/fpsr/fpiar
|
||||
frestore sp@+
|
||||
.chip 68000
|
||||
RESTORE_FPU_CONTEXT
|
||||
SDL_AtariVbl_Xbios_nofpu2:
|
||||
|
||||
moveml sp@+,d0-d7/a0-a6
|
||||
|
||||
clrw vbl_mutex
|
||||
vbl_end:
|
||||
#if defined(__mcoldfire__)
|
||||
moveml sp@,d0-d7/a0-a6
|
||||
lea sp@(60),sp
|
||||
#else
|
||||
moveml sp@+,d0-d7/a0-a6
|
||||
#endif
|
||||
rts
|
||||
|
||||
.data
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue