From 5aa604e49fb14c36449f94111bb38abb3a14ccd7 Mon Sep 17 00:00:00 2001
From: Miro Kropacek <[EMAIL REDACTED]>
Date: Sun, 24 Sep 2023 12:52:17 +0200
Subject: [PATCH] atari: make it compilable with m68k-atari-mintelf
Contributed by Thorsten Otto.
---
include/symbols.h | 54 ++++++++++++++++++
src/audio/mint/SDL_mintaudio_it.S | 60 +++++++++++---------
src/video/ataricommon/SDL_ataric2p.S | 18 +++---
src/video/ataricommon/SDL_atarieddi.S | 6 +-
src/video/ataricommon/SDL_ikbdinterrupt.S | 66 +++++++++++-----------
src/video/ataricommon/SDL_xbiosinterrupt.S | 66 +++++++++++-----------
src/video/xbios/SDL_xbios.h | 3 +
src/video/xbios/SDL_xbios_nova.c | 22 ++++----
8 files changed, 183 insertions(+), 112 deletions(-)
create mode 100644 include/symbols.h
diff --git a/include/symbols.h b/include/symbols.h
new file mode 100644
index 000000000..e407e1471
--- /dev/null
+++ b/include/symbols.h
@@ -0,0 +1,54 @@
+#ifndef __USER_LABEL_PREFIX__
+#define __USER_LABEL_PREFIX__ _
+#endif
+
+#ifndef __REGISTER_PREFIX__
+#define __REGISTER_PREFIX__
+#endif
+
+#ifndef __IMMEDIATE_PREFIX__
+#define __IMMEDIATE_PREFIX__ #
+#endif
+
+#define CONCAT1(a, b) CONCAT2(a, b)
+#define CONCAT2(a, b) a ## b
+
+/* Use the right prefix for global labels. */
+
+#define SYM(x) CONCAT1 (__USER_LABEL_PREFIX__, x)
+
+#ifdef __ELF__
+#define FUNC(x) .type SYM(x),function
+#else
+/* The .proc pseudo-op is accepted, but ignored, by GAS. We could just
+ define this to the empty string for non-ELF systems, but defining it
+ to .proc means that the information is available to the assembler if
+ the need arises. */
+#define FUNC(x) .proc
+#endif
+
+#define REG(x) CONCAT1 (__REGISTER_PREFIX__, x)
+
+#define IMM(x) CONCAT1 (__IMMEDIATE_PREFIX__, x)
+
+#define d0 REG(d0)
+#define d1 REG(d1)
+#define d2 REG(d2)
+#define d3 REG(d3)
+#define d4 REG(d4)
+#define d5 REG(d5)
+#define d6 REG(d6)
+#define d7 REG(d7)
+#define a0 REG(a0)
+#define a1 REG(a1)
+#define a2 REG(a2)
+#define a3 REG(a3)
+#define a4 REG(a4)
+#define a5 REG(a5)
+#define a6 REG(a6)
+#define a7 REG(a7)
+#define fp REG(fp)
+#define sp REG(sp)
+#define pc REG(pc)
+
+#define sr REG(sr)
diff --git a/src/audio/mint/SDL_mintaudio_it.S b/src/audio/mint/SDL_mintaudio_it.S
index cb033e6be..18de7d64d 100644
--- a/src/audio/mint/SDL_mintaudio_it.S
+++ b/src/audio/mint/SDL_mintaudio_it.S
@@ -20,26 +20,32 @@
slouken@libsdl.org
*/
+#include "symbols.h"
+
/*
Audio interrupts
- Patrice Mandin, Didier Mquignon
+ Patrice Mandin, Didier M�quignon
*/
.text
- .globl _SDL_MintAudio_XbiosInterruptMeasureClock
- .globl _SDL_MintAudio_clocktics
+ .globl SYM(SDL_MintAudio_XbiosInterruptMeasureClock)
+ .globl SYM(SDL_MintAudio_clocktics)
+
+ .globl SYM(SDL_MintAudio_XbiosInterrupt)
+ .globl SYM(SDL_MintAudio_Dma8Interrupt)
+ .globl SYM(SDL_MintAudio_StfaInterrupt)
- .globl _SDL_MintAudio_XbiosInterrupt
- .globl _SDL_MintAudio_Dma8Interrupt
- .globl _SDL_MintAudio_StfaInterrupt
+ .globl SYM(SDL_MintAudio_num_its)
- .globl _SDL_MintAudio_num_its
+ .globl SYM(SDL_MintAudio_itbuffer)
+ .globl SYM(SDL_MintAudio_itbuflen)
+ .globl SYM(SDL_MintAudio_itsilence)
/*--- Xbios interrupt vector to measure Falcon external clock ---*/
-_SDL_MintAudio_XbiosInterruptMeasureClock: /* 1 mS */
+SYM(SDL_MintAudio_XbiosInterruptMeasureClock): /* 1 mS */
/* state DMA sound */
#if defined(__mcoldfire__)
@@ -51,7 +57,7 @@ _SDL_MintAudio_XbiosInterruptMeasureClock: /* 1 mS */
btst #0,0xFFFF8901:w
#endif
beqs SDL_MintAudio_EndIntMeasure
- addql #1,_SDL_MintAudio_clocktics
+ addql #1,SYM(SDL_MintAudio_clocktics)
SDL_MintAudio_EndIntMeasure:
/* Clear service bit */
@@ -69,8 +75,8 @@ SDL_MintAudio_EndIntMeasure:
/* Xbios, DMA 8 bits: need to set ISR on MFP */
/* STFA: do not touch MFP */
-_SDL_MintAudio_XbiosInterrupt:
-_SDL_MintAudio_Dma8Interrupt:
+SYM(SDL_MintAudio_XbiosInterrupt):
+SYM(SDL_MintAudio_Dma8Interrupt):
#if defined(__mcoldfire__)
lea sp@(-12),sp
moveml d0-d1/a0,sp@
@@ -86,26 +92,26 @@ _SDL_MintAudio_Dma8Interrupt:
bclr #5,0xfffffa0f:w
#endif
-_SDL_MintAudio_StfaInterrupt:
- move.l _SDL_MintAudio_num_its,d0
+SYM(SDL_MintAudio_StfaInterrupt):
+ move.l SYM(SDL_MintAudio_num_its),d0
addql #1,d0
- move.l d0,_SDL_MintAudio_num_its
+ move.l d0,SYM(SDL_MintAudio_num_its)
cmp.l #5,d0
- bmi.s _SDL_MintAudio_nosilence
+ bmi.s nosilence
- move.l _SDL_MintAudio_itbuffer,d1
- beq.s _SDL_MintAudio_nosilence
+ move.l SYM(SDL_MintAudio_itbuffer),d1
+ beq.s nosilence
move.l d1,a0
- move.l _SDL_MintAudio_itbuflen,d0
- move.l _SDL_MintAudio_itsilence,d1
-_SDL_MintAudio_fillsilence:
+ move.l SYM(SDL_MintAudio_itbuflen),d0
+ move.l SYM(SDL_MintAudio_itsilence),d1
+fillsilence:
move.l d1,a0@+
subq.l #1,d0
- bpl.s _SDL_MintAudio_fillsilence
+ bpl.s fillsilence
-_SDL_MintAudio_nosilence:
+nosilence:
#if defined(__mcoldfire__)
moveml sp@,d0-d1/a0
lea sp@(12),sp
@@ -117,9 +123,9 @@ _SDL_MintAudio_nosilence:
.bss
.even
- .comm _SDL_MintAudio_clocktics,4
- .comm _SDL_MintAudio_num_its,4
+ .comm SYM(SDL_MintAudio_clocktics),4
+ .comm SYM(SDL_MintAudio_num_its),4
- .comm _SDL_MintAudio_itbuffer,4 /* Audio DMA buffer */
- .comm _SDL_MintAudio_itbuflen,4 /* Length in longword */
- .comm _SDL_MintAudio_itsilence,4 /* Silence value */
+ .comm SYM(SDL_MintAudio_itbuffer),4 /* Audio DMA buffer */
+ .comm SYM(SDL_MintAudio_itbuflen),4 /* Length in longword */
+ .comm SYM(SDL_MintAudio_itsilence),4 /* Silence value */
diff --git a/src/video/ataricommon/SDL_ataric2p.S b/src/video/ataricommon/SDL_ataric2p.S
index 450003c53..97f374115 100644
--- a/src/video/ataricommon/SDL_ataric2p.S
+++ b/src/video/ataricommon/SDL_ataric2p.S
@@ -20,6 +20,8 @@
slouken@libsdl.org
*/
+#include "symbols.h"
+
/*
Chunky to planar conversion routine
1 byte/pixel -> 4 or 8 bit planes
@@ -29,15 +31,15 @@
Mikael Kalms
*/
- .globl _SDL_Atari_C2pConvert
- .globl _SDL_Atari_C2pConvert8
- .globl _SDL_Atari_C2pConvert4
- .globl _SDL_Atari_C2pConvert4_pal
+ .globl SYM(SDL_Atari_C2pConvert)
+ .globl SYM(SDL_Atari_C2pConvert8)
+ .globl SYM(SDL_Atari_C2pConvert4)
+ .globl SYM(SDL_Atari_C2pConvert4_pal)
/* ------------ Conversion C2P, 8 bits ------------ */
.text
-_SDL_Atari_C2pConvert8:
+SYM(SDL_Atari_C2pConvert8):
#if !defined(__mcoldfire__)
movel sp@(4),c2p_source
movel sp@(8),c2p_dest
@@ -289,7 +291,7 @@ SDL_Atari_C2p8_nodblline:
/* ------------ Conversion C2P, 4 bits ------------ */
-_SDL_Atari_C2pConvert4:
+SYM(SDL_Atari_C2pConvert4):
#if !defined(__mcoldfire__)
movel sp@(4),c2p_source
movel sp@(8),c2p_dest
@@ -401,7 +403,7 @@ c2p4_nodblligne:
/* ------------ Conversion of a light palette in 4 bits ------------ */
-_SDL_Atari_C2pConvert4_pal:
+SYM(SDL_Atari_C2pConvert4_pal):
#if !defined(__mcoldfire__)
/* a0 is a 256-word light palette */
movel sp@(4),a0
@@ -436,7 +438,7 @@ c2p_pal_initbyte:
.bss
.even
-_SDL_Atari_C2pConvert:
+SYM(SDL_Atari_C2pConvert):
.ds.l 1
c2p_table:
diff --git a/src/video/ataricommon/SDL_atarieddi.S b/src/video/ataricommon/SDL_atarieddi.S
index 8e2cbf8ce..dbc127dcf 100644
--- a/src/video/ataricommon/SDL_atarieddi.S
+++ b/src/video/ataricommon/SDL_atarieddi.S
@@ -20,6 +20,8 @@
slouken@libsdl.org
*/
+#include "symbols.h"
+
/*
* Read EdDI version
*
@@ -28,11 +30,11 @@
.text
- .globl _Atari_get_EdDI_version
+ .globl SYM(Atari_get_EdDI_version)
/*--- Vector installer ---*/
-_Atari_get_EdDI_version:
+SYM(Atari_get_EdDI_version):
#if defined(__mcoldfire__)
movel sp@(4),a0
movel a0,eddi_cookie
diff --git a/src/video/ataricommon/SDL_ikbdinterrupt.S b/src/video/ataricommon/SDL_ikbdinterrupt.S
index 654c16df9..a9ee8c743 100644
--- a/src/video/ataricommon/SDL_ikbdinterrupt.S
+++ b/src/video/ataricommon/SDL_ikbdinterrupt.S
@@ -20,6 +20,8 @@
slouken@libsdl.org
*/
+#include "symbols.h"
+
/*
* IKBD 6301 interrupt routine
*
@@ -28,22 +30,22 @@
.text
- .globl _SDL_AtariIkbd_Install
- .globl _SDL_AtariIkbd_Restore
+ .globl SYM(SDL_AtariIkbd_Install)
+ .globl SYM(SDL_AtariIkbd_Restore)
- .globl _SDL_AtariIkbd_keyboard
- .globl _SDL_AtariIkbd_mouseb
- .globl _SDL_AtariIkbd_mousex
- .globl _SDL_AtariIkbd_mousey
- .globl _SDL_AtariIkbd_joystick
+ .globl SYM(SDL_AtariIkbd_keyboard)
+ .globl SYM(SDL_AtariIkbd_mouseb)
+ .globl SYM(SDL_AtariIkbd_mousex)
+ .globl SYM(SDL_AtariIkbd_mousey)
+ .globl SYM(SDL_AtariIkbd_joystick)
- .globl _SDL_AtariIkbd_enabled
+ .globl SYM(SDL_AtariIkbd_enabled)
- .globl _Atari_UnhookXbra
+ .globl SYM(Atari_UnhookXbra)
/*--- Install our IKBD vector ---*/
-_SDL_AtariIkbd_Install:
+SYM(SDL_AtariIkbd_Install):
| Disable interrupts
movew sr,d1
@@ -101,16 +103,16 @@ _SDL_AtariIkbd_Install:
#if defined(__mcoldfire__)
movel #0xffff,d0
- movew d0,_SDL_AtariIkbd_enabled
+ movew d0,SYM(SDL_AtariIkbd_enabled)
#else
- movew #0xffff,_SDL_AtariIkbd_enabled
+ movew #0xffff,SYM(SDL_AtariIkbd_enabled)
#endif
rts
/*--- Uninstall our IKBD vector ---*/
-_SDL_AtariIkbd_Restore:
- tstw _SDL_AtariIkbd_enabled
+SYM(SDL_AtariIkbd_Restore):
+ tstw SYM(SDL_AtariIkbd_enabled)
bnes ikbd_installed
rts
@@ -141,7 +143,7 @@ ikbd_restoreimrb:
pea ikbd(pc)
movel #0x4c53444c,sp@- /* "LSDL" */
pea 0x118/4:w
- jsr _Atari_UnhookXbra
+ jsr SYM(Atari_UnhookXbra)
lea sp@(12),sp
movew sp@+,d1
@@ -162,7 +164,7 @@ ikbd_finbuffer:
| Interrupts done
- clrw _SDL_AtariIkbd_enabled
+ clrw SYM(SDL_AtariIkbd_enabled)
rts
.bss
@@ -220,7 +222,7 @@ ikbd_yes_mouse:
#else
andw #3,d0
#endif
- movew d0,_SDL_AtariIkbd_mouseb
+ movew d0,SYM(SDL_AtariIkbd_mouseb)
#if defined(__mcoldfire__)
movel #ikbd_mousex,d0
@@ -245,7 +247,7 @@ ikbd_yes_joystick:
ikbd_no_mouse:
moveb d0,d1
- lea _SDL_AtariIkbd_keyboard,a0
+ lea SYM(SDL_AtariIkbd_keyboard),a0
#if defined(__mcoldfire__)
andl #0x7f,d1
btst #7,d0
@@ -308,14 +310,14 @@ ikbd_mousex:
moveb 0xfffffc02:w,d0
extw d0
#if defined(__mcoldfire__)
- movew _SDL_AtariIkbd_mousex,d1
+ movew SYM(SDL_AtariIkbd_mousex),d1
addl d1,d0
- movew d0,_SDL_AtariIkbd_mousex
+ movew d0,SYM(SDL_AtariIkbd_mousex)
movel #ikbd_mousey,d0
movel d0,0x118:w
#else
- addw d0,_SDL_AtariIkbd_mousex
+ addw d0,SYM(SDL_AtariIkbd_mousex)
movel #ikbd_mousey,0x118:w
#endif
@@ -343,14 +345,14 @@ ikbd_mousey:
moveb 0xfffffc02:w,d0
extw d0
#if defined(__mcoldfire__)
- movew _SDL_AtariIkbd_mousey,d1
+ movew SYM(SDL_AtariIkbd_mousey),d1
addl d1,d0
- movew d0,_SDL_AtariIkbd_mousey
+ movew d0,SYM(SDL_AtariIkbd_mousey)
movel #ikbd,d0
movel d0,0x118:w
#else
- addw d0,_SDL_AtariIkbd_mousey
+ addw d0,SYM(SDL_AtariIkbd_mousey)
movel #ikbd,0x118:w
#endif
@@ -377,14 +379,14 @@ ikbd_joystick:
#if defined(__mcoldfire__)
moveb 0xfffffc02:w,d0
- moveb d0,_SDL_AtariIkbd_joystick+1
+ moveb d0,SYM(SDL_AtariIkbd_joystick)+1
movel #ikbd,d0
movel d0,0x118:w
bra ikbd_endit_stack
#else
- moveb 0xfffffc02:w,_SDL_AtariIkbd_joystick+1
+ moveb 0xfffffc02:w,SYM(SDL_AtariIkbd_joystick)+1
movel #ikbd,0x118:w
@@ -394,19 +396,19 @@ ikbd_joystick:
.data
.even
-_SDL_AtariIkbd_enabled:
+SYM(SDL_AtariIkbd_enabled):
.dc.w 0
.bss
.even
-_SDL_AtariIkbd_keyboard:
+SYM(SDL_AtariIkbd_keyboard):
.ds.b 128
-_SDL_AtariIkbd_mousex:
+SYM(SDL_AtariIkbd_mousex):
.ds.w 1
-_SDL_AtariIkbd_mousey:
+SYM(SDL_AtariIkbd_mousey):
.ds.w 1
-_SDL_AtariIkbd_mouseb:
+SYM(SDL_AtariIkbd_mouseb):
.ds.w 1
-_SDL_AtariIkbd_joystick:
+SYM(SDL_AtariIkbd_joystick):
.ds.w 1
diff --git a/src/video/ataricommon/SDL_xbiosinterrupt.S b/src/video/ataricommon/SDL_xbiosinterrupt.S
index 6b0008440..d000194f7 100644
--- a/src/video/ataricommon/SDL_xbiosinterrupt.S
+++ b/src/video/ataricommon/SDL_xbiosinterrupt.S
@@ -20,6 +20,8 @@
slouken@libsdl.org
*/
+#include "symbols.h"
+
/*
* XBIOS mouse & joystick vectors
*
@@ -28,22 +30,22 @@
.text
- .globl _SDL_AtariXbios_Install
- .globl _SDL_AtariXbios_Restore
+ .globl SYM(SDL_AtariXbios_Install)
+ .globl SYM(SDL_AtariXbios_Restore)
- .globl _SDL_AtariXbios_installmousevector
- .globl _SDL_AtariXbios_mouselock
- .globl _SDL_AtariXbios_mouseb
- .globl _SDL_AtariXbios_mousex
- .globl _SDL_AtariXbios_mousey
- .globl _SDL_AtariXbios_installjoystickvector
- .globl _SDL_AtariXbios_joystick
+ .globl SYM(SDL_AtariXbios_installmousevector)
+ .globl SYM(SDL_AtariXbios_mouselock)
+ .globl SYM(SDL_AtariXbios_mouseb)
+ .globl SYM(SDL_AtariXbios_mousex)
+ .globl SYM(SDL_AtariXbios_mousey)
+ .globl SYM(SDL_AtariXbios_installjoystickvector)
+ .globl SYM(SDL_AtariXbios_joystick)
- .globl _Atari_UnhookXbra
+ .globl SYM(Atari_UnhookXbra)
/*--- Vector installer ---*/
-_SDL_AtariXbios_Install:
+SYM(SDL_AtariXbios_Install):
#if defined(__mcoldfire__)
lea sp@(-8),sp
moveml d2/a2,sp@
@@ -69,7 +71,7 @@ _SDL_AtariXbios_Install:
/* Save old mouse vector, set our routine */
- tstw _SDL_AtariXbios_installmousevector
+ tstw SYM(SDL_AtariXbios_installmousevector)
beqs no_new_mouse_vector
#if defined(__mcoldfire__)
movel a0@(16),a1
@@ -84,7 +86,7 @@ no_new_mouse_vector:
/* Save old joystick vector, set our routine */
- tstw _SDL_AtariXbios_installjoystickvector
+ tstw SYM(SDL_AtariXbios_installjoystickvector)
beqs no_new_joystick_vector
#if defined(__mcoldfire__)
movel a0@(24),a1
@@ -105,7 +107,7 @@ no_new_joystick_vector:
/*--- Vector restorer ---*/
-_SDL_AtariXbios_Restore:
+SYM(SDL_AtariXbios_Restore):
#if defined(__mcoldfire__)
lea sp@(-8),sp
moveml d2/a2,sp@
@@ -143,7 +145,7 @@ _SDL_AtariXbios_Restore:
pea newmousevector(pc)
movel #0x4c53444c,sp@- /* "LSDL" */
pea a0@(16)
- jsr _Atari_UnhookXbra
+ jsr SYM(Atari_UnhookXbra)
lea sp@(12),sp
clrl oldmousevector
@@ -166,7 +168,7 @@ no_restore_mouse:
pea newjoystickvector(pc)
movel #0x4c53444c,sp@- /* "LSDL" */
pea a0@(24)
- jsr _Atari_UnhookXbra
+ jsr SYM(Atari_UnhookXbra)
lea sp@(12),sp
clrl oldjoystickvector
@@ -202,32 +204,32 @@ newmousevector:
#else
andw #3,d0
#endif
- movew d0,_SDL_AtariXbios_mouseb
+ movew d0,SYM(SDL_AtariXbios_mouseb)
/* X movement */
moveb a0@(1),d0
extw d0
#if defined(__mcoldfire__)
- movew _SDL_AtariXbios_mousex,d1
+ movew SYM(SDL_AtariXbios_mousex),d1
addl d1,d0
- movew d0,_SDL_AtariXbios_mousex
+ movew d0,SYM(SDL_AtariXbios_mousex)
#else
- addw d0,_SDL_AtariXbios_mousex
+ addw d0,SYM(SDL_AtariXbios_mousex)
#endif
/* Y movement */
moveb a0@(2),d0
extw d0
#if defined(__mcoldfire__)
- movew _SDL_AtariXbios_mousey,d1
+ movew SYM(SDL_AtariXbios_mousey),d1
addl d1,d0
- movew d0,_SDL_AtariXbios_mousey
+ movew d0,SYM(SDL_AtariXbios_mousey)
#else
- addw d0,_SDL_AtariXbios_mousey
+ addw d0,SYM(SDL_AtariXbios_mousey)
#endif
/* Lock mouse position ? */
- tstw _SDL_AtariXbios_mouselock
+ tstw SYM(SDL_AtariXbios_mouselock)
beq.s no_mouse_lock
clrb a0@(1)
clrb a0@(2)
@@ -247,15 +249,15 @@ no_mouse_lock:
.data
.even
-_SDL_AtariXbios_installmousevector:
+SYM(SDL_AtariXbios_installmousevector):
.dc.w 0
-_SDL_AtariXbios_mouselock:
+SYM(SDL_AtariXbios_mouselock):
.dc.w 0
-_SDL_AtariXbios_mousex:
+SYM(SDL_AtariXbios_mousex):
.dc.w 0
-_SDL_AtariXbios_mousey:
+SYM(SDL_AtariXbios_mousey):
.dc.w 0
-_SDL_AtariXbios_mouseb:
+SYM(SDL_AtariXbios_mouseb):
.dc.w 0
/*--- Our joystick vector ---*/
@@ -277,7 +279,7 @@ newjoystickvector:
#else
andw #0x8f,d0
#endif
- movew d0,_SDL_AtariXbios_joystick
+ movew d0,SYM(SDL_AtariXbios_joystick)
/* Jump through old vector */
movel sp@+,d0
@@ -288,7 +290,7 @@ newjoystickvector:
.data
.even
-_SDL_AtariXbios_installjoystickvector:
+SYM(SDL_AtariXbios_installjoystickvector):
.dc.w 0
-_SDL_AtariXbios_joystick:
+SYM(SDL_AtariXbios_joystick):
.dc.w 0
diff --git a/src/video/xbios/SDL_xbios.h b/src/video/xbios/SDL_xbios.h
index de418acde..5d8ab9b7b 100644
--- a/src/video/xbios/SDL_xbios.h
+++ b/src/video/xbios/SDL_xbios.h
@@ -152,4 +152,7 @@ void SDL_XBIOS_VideoInit_Milan(_THIS);
/* SDL_xbios_ctpci.c */
void SDL_XBIOS_VideoInit_Ctpci(_THIS);
+/* SDL_xbios_nova.c */
+void SDL_XBIOS_VideoInit_Nova(_THIS, void *cookie_nova);
+
#endif /* _SDL_xbios_h */
diff --git a/src/video/xbios/SDL_xbios_nova.c b/src/video/xbios/SDL_xbios_nova.c
index 07a898d36..8e91d8b67 100644
--- a/src/video/xbios/SDL_xbios_nova.c
+++ b/src/video/xbios/SDL_xbios_nova.c
@@ -266,10 +266,10 @@ static void NOVA_SetMode(_THIS, int num_mode)
oldstack = (void *)Super(NULL);
__asm__ __volatile__ (
- "moveql #0,d0\n\t"
- "movel %0,a0\n\t"
- "movel %1,a1\n\t"
- "jsr a1@"
+ "moveql #0,%%d0\n\t"
+ "movel %0,%%a0\n\t"
+ "movel %1,%%a1\n\t"
+ "jsr %%a1@"
: /* no return value */
: /* input */
"g"(&NOVA_modes[num_mode]), "g"(NOVA_xcb->p_chres)
@@ -287,9 +287,9 @@ static void NOVA_SetScreen(_THIS, void *screen)
oldstack = (void *)Super(NULL);
__asm__ __volatile__ (
- "movel %0,a0\n\t"
- "movel %1,a1\n\t"
- "jsr a1@"
+ "movel %0,%%a0\n\t"
+ "movel %1,%%a1\n\t"
+ "jsr %%a1@"
: /* no return value */
: /* input */
"g"(screen), "g"(NOVA_xcb->p_setscr)
@@ -312,10 +312,10 @@ static void NOVA_SetColor(_THIS, int index, int r, int g, int b)
oldstack = (void *)Super(NULL);
__asm__ __volatile__ (
- "movel %0,d0\n\t"
- "movel %1,a0\n\t"
- "movel %2,a1\n\t"
- "jsr a1@"
+ "movel %0,%%d0\n\t"
+ "movel %1,%%a0\n\t"
+ "movel %2,%%a1\n\t"
+ "jsr %%a1@"
: /* no return value */
: /* input */
"g"(index), "g"(color), "g"(NOVA_xcb->p_setcol)