From 4b83f8afc5c721fa3bf497363a4348fd6d8ecd4f Mon Sep 17 00:00:00 2001 From: bebbo Date: Mon, 22 Jan 2018 19:52:39 +0100 Subject: [PATCH] add volatile to hardware structs, add __stdargs to alib protos --- .../Include/include_h/clib/alib_protos.h.diff | 137 ++++++++++ .../include_h/clib/alib_stdio_protos.h.diff | 29 +++ .../Include/include_h/hardware/cia.h.diff | 56 +++++ .../Include/include_h/hardware/custom.h.diff | 237 ++++++++++++++++++ 4 files changed, 459 insertions(+) create mode 100755 patches/NDK_3.9/Include/include_h/clib/alib_protos.h.diff create mode 100755 patches/NDK_3.9/Include/include_h/clib/alib_stdio_protos.h.diff create mode 100755 patches/NDK_3.9/Include/include_h/hardware/cia.h.diff create mode 100755 patches/NDK_3.9/Include/include_h/hardware/custom.h.diff diff --git a/patches/NDK_3.9/Include/include_h/clib/alib_protos.h.diff b/patches/NDK_3.9/Include/include_h/clib/alib_protos.h.diff new file mode 100755 index 0000000..1907ada --- /dev/null +++ b/patches/NDK_3.9/Include/include_h/clib/alib_protos.h.diff @@ -0,0 +1,137 @@ +--- NDK_3.9/Include/include_h/clib/alib_protos.h 2001-12-17 15:14:42.000000000 +0100 ++++ NDK_3.9/Include/include_h/clib/alib_protos.h 2018-01-22 19:33:39.671085000 +0100 +@@ -45,54 +45,54 @@ + + /* Exec support functions */ + +-VOID BeginIO( struct IORequest *ioReq ); +-struct IORequest *CreateExtIO( CONST struct MsgPort *port, LONG ioSize ); +-struct MsgPort *CreatePort( CONST_STRPTR name, LONG pri ); +-struct IOStdReq *CreateStdIO( CONST struct MsgPort *port ); +-struct Task *CreateTask( CONST_STRPTR name, LONG pri, CONST APTR initPC, ULONG stackSize ); +-VOID DeleteExtIO( struct IORequest *ioReq ); +-VOID DeletePort( struct MsgPort *ioReq ); +-VOID DeleteStdIO( struct IOStdReq *ioReq ); +-VOID DeleteTask( struct Task *task ); +-VOID NewList( struct List *list ); +-APTR LibAllocPooled( APTR poolHeader, ULONG memSize ); +-APTR LibCreatePool( ULONG memFlags, ULONG puddleSize, ULONG threshSize ); +-VOID LibDeletePool( APTR poolHeader ); +-VOID LibFreePooled( APTR poolHeader, APTR memory, ULONG memSize ); ++__stdargs VOID BeginIO( struct IORequest *ioReq ); ++__stdargs struct IORequest *CreateExtIO( CONST struct MsgPort *port, LONG ioSize ); ++__stdargs struct MsgPort *CreatePort( CONST_STRPTR name, LONG pri ); ++__stdargs struct IOStdReq *CreateStdIO( CONST struct MsgPort *port ); ++__stdargs struct Task *CreateTask( CONST_STRPTR name, LONG pri, CONST APTR initPC, ULONG stackSize ); ++__stdargs VOID DeleteExtIO( struct IORequest *ioReq ); ++__stdargs VOID DeletePort( struct MsgPort *ioReq ); ++__stdargs VOID DeleteStdIO( struct IOStdReq *ioReq ); ++__stdargs VOID DeleteTask( struct Task *task ); ++__stdargs VOID NewList( struct List *list ); ++__stdargs APTR LibAllocPooled( APTR poolHeader, ULONG memSize ); ++__stdargs APTR LibCreatePool( ULONG memFlags, ULONG puddleSize, ULONG threshSize ); ++__stdargs VOID LibDeletePool( APTR poolHeader ); ++__stdargs VOID LibFreePooled( APTR poolHeader, APTR memory, ULONG memSize ); + + /* Assorted functions in amiga.lib */ + +-ULONG FastRand( ULONG seed ); +-UWORD RangeRand( ULONG maxValue ); ++__stdargs ULONG FastRand( ULONG seed ); ++__stdargs UWORD RangeRand( ULONG maxValue ); + + /* Graphics support functions in amiga.lib */ + +-VOID AddTOF( struct Isrvstr *i, LONG (*p)(APTR args), APTR a ); +-VOID RemTOF( struct Isrvstr *i ); +-VOID waitbeam( LONG b ); ++__stdargs VOID AddTOF( struct Isrvstr *i, LONG (*p)(APTR args), APTR a ); ++__stdargs VOID RemTOF( struct Isrvstr *i ); ++__stdargs VOID waitbeam( LONG b ); + + /* math support functions in amiga.lib */ + +-FLOAT afp( CONST_STRPTR string ); +-VOID arnd( LONG place, LONG exp, STRPTR string ); +-FLOAT dbf( ULONG exp, ULONG mant ); +-LONG fpa( FLOAT fnum, BYTE *string ); +-VOID fpbcd( FLOAT fnum, BYTE *string ); ++__stdargs FLOAT afp( CONST_STRPTR string ); ++__stdargs VOID arnd( LONG place, LONG exp, STRPTR string ); ++__stdargs FLOAT dbf( ULONG exp, ULONG mant ); ++__stdargs LONG fpa( FLOAT fnum, BYTE *string ); ++__stdargs VOID fpbcd( FLOAT fnum, BYTE *string ); + + /* Timer support functions in amiga.lib (V36 and higher only) */ + +-LONG TimeDelay( LONG unit, ULONG secs, ULONG microsecs ); +-LONG DoTimer( struct timeval *, LONG unit, LONG command ); ++__stdargs LONG TimeDelay( LONG unit, ULONG secs, ULONG microsecs ); ++__stdargs LONG DoTimer( struct timeval *, LONG unit, LONG command ); + + /* Commodities functions in amiga.lib (V36 and higher only) */ + +-VOID ArgArrayDone( VOID ); +-STRPTR *ArgArrayInit( LONG argc, CONST_STRPTR *argv ); +-LONG ArgInt( CONST_STRPTR *tt, CONST_STRPTR entry, LONG defaultval ); +-STRPTR ArgString( CONST_STRPTR *tt, CONST_STRPTR entry, CONST_STRPTR defaultstring ); +-CxObj *HotKey( CONST_STRPTR description, struct MsgPort *port, LONG id ); +-struct InputEvent *InvertString( CONST_STRPTR str, CONST struct KeyMap *km ); +-VOID FreeIEvents( struct InputEvent *events ); ++__stdargs VOID ArgArrayDone( VOID ); ++__stdargs STRPTR *ArgArrayInit( LONG argc, CONST_STRPTR *argv ); ++__stdargs LONG ArgInt( CONST_STRPTR *tt, CONST_STRPTR entry, LONG defaultval ); ++__stdargs STRPTR ArgString( CONST_STRPTR *tt, CONST_STRPTR entry, CONST_STRPTR defaultstring ); ++__stdargs CxObj *HotKey( CONST_STRPTR description, struct MsgPort *port, LONG id ); ++__stdargs struct InputEvent *InvertString( CONST_STRPTR str, CONST struct KeyMap *km ); ++__stdargs VOID FreeIEvents( struct InputEvent *events ); + + /* Commodities Macros */ + +@@ -105,9 +105,9 @@ + + /* ARexx support functions in amiga.lib */ + +-BOOL CheckRexxMsg( CONST struct RexxMsg *rexxmsg ); +-LONG GetRexxVar( CONST struct RexxMsg *rexxmsg, CONST_STRPTR name, STRPTR *result ); +-LONG SetRexxVar( struct RexxMsg *rexxmsg, CONST_STRPTR name, CONST_STRPTR value, LONG length ); ++__stdargs BOOL CheckRexxMsg( CONST struct RexxMsg *rexxmsg ); ++__stdargs LONG GetRexxVar( CONST struct RexxMsg *rexxmsg, CONST_STRPTR name, STRPTR *result ); ++__stdargs LONG SetRexxVar( struct RexxMsg *rexxmsg, CONST_STRPTR name, CONST_STRPTR value, LONG length ); + + /* Intuition hook and boopsi support functions in amiga.lib. */ + /* These functions do not require any particular ROM revision */ +@@ -115,22 +115,22 @@ + /* in V36. These functions would work with compatibly-implemented */ + /* hooks or objects under V34. */ + +-ULONG CallHookA( struct Hook *hookPtr, Object *obj, APTR message ); +-ULONG CallHook( struct Hook *hookPtr, Object *obj, ... ); +-ULONG DoMethodA( Object *obj, Msg message ); +-ULONG DoMethod( Object *obj, ULONG methodID, ... ); +-ULONG DoSuperMethodA( struct IClass *cl, Object *obj, Msg message ); +-ULONG DoSuperMethod( struct IClass *cl, Object *obj, ULONG methodID, ... ); +-ULONG CoerceMethodA( struct IClass *cl, Object *obj, Msg message ); +-ULONG CoerceMethod( struct IClass *cl, Object *obj, ULONG methodID, ... ); +-ULONG HookEntry( struct Hook *hookPtr, Object *obj, APTR message ); +-ULONG SetSuperAttrs( struct IClass *cl, Object *obj, ULONG tag1, ... ); ++__stdargs ULONG CallHookA( struct Hook *hookPtr, Object *obj, APTR message ); ++__stdargs ULONG CallHook( struct Hook *hookPtr, Object *obj, ... ); ++__stdargs ULONG DoMethodA( Object *obj, Msg message ); ++__stdargs ULONG DoMethod( Object *obj, ULONG methodID, ... ); ++__stdargs ULONG DoSuperMethodA( struct IClass *cl, Object *obj, Msg message ); ++__stdargs ULONG DoSuperMethod( struct IClass *cl, Object *obj, ULONG methodID, ... ); ++__stdargs ULONG CoerceMethodA( struct IClass *cl, Object *obj, Msg message ); ++__stdargs ULONG CoerceMethod( struct IClass *cl, Object *obj, ULONG methodID, ... ); ++__stdargs ULONG HookEntry( struct Hook *hookPtr, Object *obj, APTR message ); ++__stdargs ULONG SetSuperAttrs( struct IClass *cl, Object *obj, ULONG tag1, ... ); + + /* Network-support functions in amiga.lib. */ + /* ACrypt() first appeared in later V39 versions of amiga.lib, but */ + /* operates correctly under V37 and up. */ + +-STRPTR ACrypt( STRPTR buffer, CONST_STRPTR password, CONST_STRPTR username ); ++__stdargs STRPTR ACrypt( STRPTR buffer, CONST_STRPTR password, CONST_STRPTR username ); + + #ifdef __cplusplus + } diff --git a/patches/NDK_3.9/Include/include_h/clib/alib_stdio_protos.h.diff b/patches/NDK_3.9/Include/include_h/clib/alib_stdio_protos.h.diff new file mode 100755 index 0000000..b590f4f --- /dev/null +++ b/patches/NDK_3.9/Include/include_h/clib/alib_stdio_protos.h.diff @@ -0,0 +1,29 @@ +--- NDK_3.9/Include/include_h/clib/alib_stdio_protos.h 2001-12-17 15:14:44.000000000 +0100 ++++ NDK_3.9/Include/include_h/clib/alib_stdio_protos.h 2018-01-22 19:33:55.310761400 +0100 +@@ -21,16 +21,16 @@ + + /* stdio functions that duplicate those in a typical C library */ + +-LONG printf( CONST_STRPTR fmt, ... ); +-LONG sprintf( CONST_STRPTR buffer, CONST_STRPTR fmt, ... ); +-LONG fclose( LONG stream ); +-LONG fgetc( LONG stream ); +-LONG fprintf( LONG stream, CONST_STRPTR fmt, ... ); +-LONG fputc( LONG c, LONG stream ); +-LONG fputs( CONST_STRPTR s, LONG stream ); +-LONG getchar( VOID ); +-LONG putchar( ULONG c ); +-LONG puts( CONST_STRPTR s ); ++__stdargs LONG printf( CONST_STRPTR fmt, ... ); ++__stdargs LONG sprintf( CONST_STRPTR buffer, CONST_STRPTR fmt, ... ); ++__stdargs LONG fclose( LONG stream ); ++__stdargs LONG fgetc( LONG stream ); ++__stdargs LONG fprintf( LONG stream, CONST_STRPTR fmt, ... ); ++__stdargs LONG fputc( LONG c, LONG stream ); ++__stdargs LONG fputs( CONST_STRPTR s, LONG stream ); ++__stdargs LONG getchar( VOID ); ++__stdargs LONG putchar( ULONG c ); ++__stdargs LONG puts( CONST_STRPTR s ); + + #ifdef __cplusplus + } diff --git a/patches/NDK_3.9/Include/include_h/hardware/cia.h.diff b/patches/NDK_3.9/Include/include_h/hardware/cia.h.diff new file mode 100755 index 0000000..757d89c --- /dev/null +++ b/patches/NDK_3.9/Include/include_h/hardware/cia.h.diff @@ -0,0 +1,56 @@ +--- NDK_3.9/Include/include_h/hardware/cia.h 2001-12-17 14:15:20.000000000 +0100 ++++ NDK_3.9/Include/include_h/hardware/cia.h 2018-01-22 19:24:59.855698700 +0100 +@@ -27,37 +27,37 @@ + + + struct CIA { +- UBYTE ciapra; ++ volatile UBYTE ciapra; + UBYTE pad0[0xff]; +- UBYTE ciaprb; ++ volatile UBYTE ciaprb; + UBYTE pad1[0xff]; +- UBYTE ciaddra; ++ volatile UBYTE ciaddra; + UBYTE pad2[0xff]; +- UBYTE ciaddrb; ++ volatile UBYTE ciaddrb; + UBYTE pad3[0xff]; +- UBYTE ciatalo; ++ volatile UBYTE ciatalo; + UBYTE pad4[0xff]; +- UBYTE ciatahi; ++ volatile UBYTE ciatahi; + UBYTE pad5[0xff]; +- UBYTE ciatblo; ++ volatile UBYTE ciatblo; + UBYTE pad6[0xff]; +- UBYTE ciatbhi; ++ volatile UBYTE ciatbhi; + UBYTE pad7[0xff]; +- UBYTE ciatodlow; ++ volatile UBYTE ciatodlow; + UBYTE pad8[0xff]; +- UBYTE ciatodmid; ++ volatile UBYTE ciatodmid; + UBYTE pad9[0xff]; +- UBYTE ciatodhi; ++ volatile UBYTE ciatodhi; + UBYTE pad10[0xff]; +- UBYTE unusedreg; ++ volatile UBYTE unusedreg; + UBYTE pad11[0xff]; +- UBYTE ciasdr; ++ volatile UBYTE ciasdr; + UBYTE pad12[0xff]; +- UBYTE ciaicr; ++ volatile UBYTE ciaicr; + UBYTE pad13[0xff]; +- UBYTE ciacra; ++ volatile UBYTE ciacra; + UBYTE pad14[0xff]; +- UBYTE ciacrb; ++ volatile UBYTE ciacrb; + }; + + diff --git a/patches/NDK_3.9/Include/include_h/hardware/custom.h.diff b/patches/NDK_3.9/Include/include_h/hardware/custom.h.diff new file mode 100755 index 0000000..b3527f4 --- /dev/null +++ b/patches/NDK_3.9/Include/include_h/hardware/custom.h.diff @@ -0,0 +1,237 @@ +--- NDK_3.9/Include/include_h/hardware/custom.h 2001-12-17 14:15:22.000000000 +0100 ++++ NDK_3.9/Include/include_h/hardware/custom.h 2018-01-22 18:49:45.382919800 +0100 +@@ -23,122 +23,122 @@ + + + struct Custom { +- UWORD bltddat; +- UWORD dmaconr; +- UWORD vposr; +- UWORD vhposr; +- UWORD dskdatr; +- UWORD joy0dat; +- UWORD joy1dat; +- UWORD clxdat; +- UWORD adkconr; +- UWORD pot0dat; +- UWORD pot1dat; +- UWORD potinp; +- UWORD serdatr; +- UWORD dskbytr; +- UWORD intenar; +- UWORD intreqr; +- APTR dskpt; +- UWORD dsklen; +- UWORD dskdat; +- UWORD refptr; +- UWORD vposw; +- UWORD vhposw; +- UWORD copcon; +- UWORD serdat; +- UWORD serper; +- UWORD potgo; +- UWORD joytest; +- UWORD strequ; +- UWORD strvbl; +- UWORD strhor; +- UWORD strlong; +- UWORD bltcon0; +- UWORD bltcon1; +- UWORD bltafwm; +- UWORD bltalwm; +- APTR bltcpt; +- APTR bltbpt; +- APTR bltapt; +- APTR bltdpt; +- UWORD bltsize; +- UBYTE pad2d; +- UBYTE bltcon0l; /* low 8 bits of bltcon0, write only */ +- UWORD bltsizv; +- UWORD bltsizh; /* 5e */ +- UWORD bltcmod; +- UWORD bltbmod; +- UWORD bltamod; +- UWORD bltdmod; +- UWORD pad34[4]; +- UWORD bltcdat; +- UWORD bltbdat; +- UWORD bltadat; +- UWORD pad3b[3]; +- UWORD deniseid; /* 7c */ +- UWORD dsksync; +- ULONG cop1lc; +- ULONG cop2lc; +- UWORD copjmp1; +- UWORD copjmp2; +- UWORD copins; +- UWORD diwstrt; +- UWORD diwstop; +- UWORD ddfstrt; +- UWORD ddfstop; +- UWORD dmacon; +- UWORD clxcon; +- UWORD intena; +- UWORD intreq; +- UWORD adkcon; ++ volatile UWORD bltddat; ++ volatile UWORD dmaconr; ++ volatile UWORD vposr; ++ volatile UWORD vhposr; ++ volatile UWORD dskdatr; ++ volatile UWORD joy0dat; ++ volatile UWORD joy1dat; ++ volatile UWORD clxdat; ++ volatile UWORD adkconr; ++ volatile UWORD pot0dat; ++ volatile UWORD pot1dat; ++ volatile UWORD potinp; ++ volatile UWORD serdatr; ++ volatile UWORD dskbytr; ++ volatile UWORD intenar; ++ volatile UWORD intreqr; ++ volatile APTR dskpt; ++ volatile UWORD dsklen; ++ volatile UWORD dskdat; ++ volatile UWORD refptr; ++ volatile UWORD vposw; ++ volatile UWORD vhposw; ++ volatile UWORD copcon; ++ volatile UWORD serdat; ++ volatile UWORD serper; ++ volatile UWORD potgo; ++ volatile UWORD joytest; ++ volatile UWORD strequ; ++ volatile UWORD strvbl; ++ volatile UWORD strhor; ++ volatile UWORD strlong; ++ volatile UWORD bltcon0; ++ volatile UWORD bltcon1; ++ volatile UWORD bltafwm; ++ volatile UWORD bltalwm; ++ volatile APTR bltcpt; ++ volatile APTR bltbpt; ++ volatile APTR bltapt; ++ volatile APTR bltdpt; ++ volatile UWORD bltsize; ++ volatile UBYTE pad2d; ++ volatile UBYTE bltcon0l; /* low 8 bits of bltcon0, write only */ ++ volatile UWORD bltsizv; ++ volatile UWORD bltsizh; /* 5e */ ++ volatile UWORD bltcmod; ++ volatile UWORD bltbmod; ++ volatile UWORD bltamod; ++ volatile UWORD bltdmod; ++ volatile UWORD pad34[4]; ++ volatile UWORD bltcdat; ++ volatile UWORD bltbdat; ++ volatile UWORD bltadat; ++ volatile UWORD pad3b[3]; ++ volatile UWORD deniseid; /* 7c */ ++ volatile UWORD dsksync; ++ volatile ULONG cop1lc; ++ volatile ULONG cop2lc; ++ volatile UWORD copjmp1; ++ volatile UWORD copjmp2; ++ volatile UWORD copins; ++ volatile UWORD diwstrt; ++ volatile UWORD diwstop; ++ volatile UWORD ddfstrt; ++ volatile UWORD ddfstop; ++ volatile UWORD dmacon; ++ volatile UWORD clxcon; ++ volatile UWORD intena; ++ volatile UWORD intreq; ++ volatile UWORD adkcon; + struct AudChannel { +- UWORD *ac_ptr; /* ptr to start of waveform data */ +- UWORD ac_len; /* length of waveform in words */ +- UWORD ac_per; /* sample period */ +- UWORD ac_vol; /* volume */ +- UWORD ac_dat; /* sample pair */ +- UWORD ac_pad[2]; /* unused */ ++ volatile UWORD *ac_ptr; /* ptr to start of waveform data */ ++ volatile UWORD ac_len; /* length of waveform in words */ ++ volatile UWORD ac_per; /* sample period */ ++ volatile UWORD ac_vol; /* volume */ ++ volatile UWORD ac_dat; /* sample pair */ ++ volatile UWORD ac_pad[2]; /* unused */ + } aud[4]; +- APTR bplpt[8]; +- UWORD bplcon0; +- UWORD bplcon1; +- UWORD bplcon2; +- UWORD bplcon3; +- UWORD bpl1mod; +- UWORD bpl2mod; +- UWORD bplcon4; +- UWORD clxcon2; +- UWORD bpldat[8]; +- APTR sprpt[8]; ++ volatile APTR bplpt[8]; ++ volatile UWORD bplcon0; ++ volatile UWORD bplcon1; ++ volatile UWORD bplcon2; ++ volatile UWORD bplcon3; ++ volatile UWORD bpl1mod; ++ volatile UWORD bpl2mod; ++ volatile UWORD bplcon4; ++ volatile UWORD clxcon2; ++ volatile UWORD bpldat[8]; ++ volatile APTR sprpt[8]; + struct SpriteDef { +- UWORD pos; +- UWORD ctl; +- UWORD dataa; +- UWORD datab; ++ volatile UWORD pos; ++ volatile UWORD ctl; ++ volatile UWORD dataa; ++ volatile UWORD datab; + } spr[8]; +- UWORD color[32]; +- UWORD htotal; +- UWORD hsstop; +- UWORD hbstrt; +- UWORD hbstop; +- UWORD vtotal; +- UWORD vsstop; +- UWORD vbstrt; +- UWORD vbstop; +- UWORD sprhstrt; +- UWORD sprhstop; +- UWORD bplhstrt; +- UWORD bplhstop; +- UWORD hhposw; +- UWORD hhposr; +- UWORD beamcon0; +- UWORD hsstrt; +- UWORD vsstrt; +- UWORD hcenter; +- UWORD diwhigh; /* 1e4 */ +- UWORD padf3[11]; +- UWORD fmode; ++ volatile UWORD color[32]; ++ volatile UWORD htotal; ++ volatile UWORD hsstop; ++ volatile UWORD hbstrt; ++ volatile UWORD hbstop; ++ volatile UWORD vtotal; ++ volatile UWORD vsstop; ++ volatile UWORD vbstrt; ++ volatile UWORD vbstop; ++ volatile UWORD sprhstrt; ++ volatile UWORD sprhstop; ++ volatile UWORD bplhstrt; ++ volatile UWORD bplhstop; ++ volatile UWORD hhposw; ++ volatile UWORD hhposr; ++ volatile UWORD beamcon0; ++ volatile UWORD hsstrt; ++ volatile UWORD vsstrt; ++ volatile UWORD hcenter; ++ volatile UWORD diwhigh; /* 1e4 */ ++ volatile UWORD padf3[11]; ++ volatile UWORD fmode; + }; + + #ifdef ECS_SPECIFIC