1
0
mirror of https://github.com/Interlisp/maiko.git synced 2026-01-17 00:22:59 +00:00

Replace Addr68k related macros with NativeAligned inline functions

This commit is contained in:
Nick Briggs 2022-09-01 14:15:36 -07:00
parent 05f49a3556
commit d266f4d987

View File

@ -23,7 +23,7 @@
*/
/********************************************************************/
#include <stdio.h> // for printf
#include "adr68k.h" // for Addr68k_from_StkOffset, StkOffset_from_68K
#include "adr68k.h" // for NativeAligned2FromStackOffset, StackOffsetFromNative
#include "commondefs.h" // for error
#include "emlglob.h"
#include "hardrtndefs.h" // for incusecount68k, slowreturn
@ -70,14 +70,14 @@ static FX *make_FXcopy(FX *fx68k) {
#else
n = fx68k->lonametable;
#endif /* BIGVM */
if ((n <= StkOffset_from_68K(fx68k)) && (n >= fx68k->nextblock))
if ((n <= StackOffsetFromNative(fx68k)) && (n >= fx68k->nextblock))
error("hardreturn:nametable check");
}
#endif
nametbl_on_stk = T;
/* Find a free stack block */
new68k = freestackblock(size, (StackWord *)CURRENTFX,
(StkOffset_from_68K(fx68k) - DLWORDSPER_CELL) % DLWORDSPER_QUAD);
(StackOffsetFromNative(fx68k) - DLWORDSPER_CELL) % DLWORDSPER_QUAD);
} /*if end */
else
new68k = freestackblock(size, (StackWord *)CURRENTFX, -1); /* No align */
@ -89,8 +89,8 @@ static FX *make_FXcopy(FX *fx68k) {
((Bframe *)new68k)->residual = T;
new68k = new68k + DLWORDSPER_CELL; /* now NEW points to the FX */
((FX *)new68k)->nextblock = (StkOffset_from_68K(new68k) + size) - DLWORDSPER_CELL;
retbf68k = (Bframe *)Addr68k_from_StkOffset(GETBLINK(fx68k));
((FX *)new68k)->nextblock = (StackOffsetFromNative(new68k) + size) - DLWORDSPER_CELL;
retbf68k = (Bframe *)NativeAligned4FromStackOffset(GETBLINK(fx68k));
/* Set true BFptr,not the residual */
SETBLINK(new68k, GETBLINK(fx68k));
((FX *)new68k)->usecount = 0;
@ -107,14 +107,14 @@ static FX *make_FXcopy(FX *fx68k) {
SET_FASTP_NIL(fx68k);
/* increment use count of CLINK of returnee
because we made a copy of returnee */
incusecount68k((FX *)Addr68k_from_StkOffset(GETCLINK(fx68k)));
incusecount68k((FX *)NativeAligned4FromStackOffset(GETCLINK(fx68k)));
if (GETCLINK(fx68k) != GETALINK(fx68k)) {
incusecount68k((FX *)Addr68k_from_StkOffset(GETALINK(fx68k)));
incusecount68k((FX *)NativeAligned4FromStackOffset(GETALINK(fx68k)));
}
decusecount68k(fx68k); /* if usecon==0 -> FSB */
SETACLINK(CURRENTFX, StkOffset_from_68K(new68k));
SETACLINK(CURRENTFX, StackOffsetFromNative(new68k));
CHECK_FX((FX *)new68k);
CHECK_FX(CURRENTFX);
#ifdef STACKCHECK
@ -149,7 +149,7 @@ int slowreturn(void) {
S_CHECK(SLOWP(CURRENTFX), "CURRENTFX not SLOWP");
/* Get returnee's FX from CURRENTFX->alink , It's SLOWP case */
returnFX = (FX *)Addr68k_from_StkOffset(CURRENTFX->alink - 11);
returnFX = (FX *)NativeAligned4FromStackOffset(CURRENTFX->alink - 11);
if ((CURRENTFX->alink & 0xFFFE) != CURRENTFX->clink) { /* ALINK != CLINK */
#ifdef STACKCHECK
@ -158,7 +158,7 @@ int slowreturn(void) {
/* return to CLINK fx */
SETALINK(CURRENTFX, CURRENTFX->clink);
decusecount68k(returnFX);
returnFX = (FX *)Addr68k_from_StkOffset(CURRENTFX->clink - FRAMESIZE);
returnFX = (FX *)NativeAligned4FromStackOffset(CURRENTFX->clink - FRAMESIZE);
}
if (returnFX->usecount != 0) { /* COPY returnee's FX */
@ -170,8 +170,8 @@ int slowreturn(void) {
retry: /* this is retry entry after MAKE_FXCOPY etc */
next68k = Addr68k_from_StkOffset(returnFX->nextblock);
currentBF = (Bframe *)Addr68k_from_StkOffset(CURRENTFX->blink);
next68k = NativeAligned2FromStackOffset(returnFX->nextblock);
currentBF = (Bframe *)NativeAligned4FromStackOffset(CURRENTFX->blink);
if (GETWORD(next68k) == STK_FSB_WORD) {
another:
@ -263,7 +263,7 @@ void incusecount68k(FX *fx68k) {
if ((++(fx68k->usecount)) > MAXSAFEUSECOUNT)
error("MP9324:Stack frame use count maximum exceeded");
scanptr68k = (StackWord *)Addr68k_from_StkOffset(fx68k->nextblock);
scanptr68k = (StackWord *)NativeAligned2FromStackOffset(fx68k->nextblock);
switch (STKWORD(scanptr68k)->flags) {
case STK_NOTFLG:
while (STKWORD(scanptr68k)->flags != STK_BF)