http://rt.perl.org/rt3/Ticket/Display.html?id=89502

--- perl-5.12.3/Configure	2011-02-21 09:18:09.000000000 +0000
+++ perl-5.12.3/Configure	2011-02-21 09:38:49.000000000 +0000
@@ -1275,6 +1275,9 @@ 
 elif test -n "$DJGPP"; then
 : DOS DJGPP
     _exe=".exe"
+elif test -f "/kern/cookiejar"; then
+: MiNT
+    _exe=""
 elif test -d c:/. -o -n "$is_os2" ; then
 : OS/2 or cygwin
     _exe=".exe"
@@ -1402,7 +1405,7 @@ 
 	xcat=/bin/cat
 	test -f $xcat$_exe || xcat=/usr/bin/cat
 	if test ! -f $xcat$_exe; then
-		for p in `echo $PATH | sed -e "s/$p_/ /g"` $paths; do
+		for p in `echo $PATH | sed -e 's/$p_/ /g'` $paths; do
 			if test -f $p/cat$_exe; then
 				xcat=$p/cat
 				break
--- perl-5.12.3/ext/DynaLoader/dl_dld.xs	2010-11-21 21:40:55.000000000 +0000
+++ perl-5.12.3/ext/DynaLoader/dl_dld.xs	2011-02-21 09:38:51.000000000 +0000
@@ -116,6 +116,18 @@ 
 	goto haverror;
     }
 
+    DLDEBUG(1,PerlIO_printf(Perl_debug_log, "dld_link(libm.a)\n"));
+    if (dlderr = dld_link("/usr/lib/libm.a")) {
+	SaveError(aTHX_ "dld_link(libm.a): %s", dld_strerror(dlderr));
+	goto haverror;
+    }
+
+    DLDEBUG(1,PerlIO_printf(Perl_debug_log, "dld_link(libc.a)\n"));
+    if (dlderr = dld_link("/usr/lib/libc.a")) {
+	SaveError(aTHX_ "dld_link(libc.a): %s", dld_strerror(dlderr));
+	goto haverror;
+    }
+
     max = AvFILL(dl_resolve_using);
     for (x = 0; x <= max; x++) {
 	char *sym = SvPVX(*av_fetch(dl_resolve_using, x, 0));
--- perl-5.12.3/malloc.c	2011-01-09 20:20:57.000000000 +0000
+++ perl-5.12.3/malloc.c	2011-02-21 09:38:51.000000000 +0000
@@ -264,7 +264,7 @@ 
 #define MIN_BUC_POW2 (sizeof(void*) > 4 ? 3 : 2) /* Allow for 4-byte arena. */
 #define MIN_BUCKET (MIN_BUC_POW2 * BUCKETS_PER_POW2)
 
-#if !(defined(I286) || defined(atarist))
+#if !defined(I286)
 	/* take 2k unless the block is bigger than that */
 #  define LOG_OF_MIN_ARENA 11
 #else
@@ -551,8 +551,8 @@ 
  */
 #define u_short unsigned short
 
-/* 286 and atarist like big chunks, which gives too much overhead. */
-#if (defined(RCHECK) || defined(I286) || defined(atarist)) && defined(PACK_MALLOC)
+/* 286 like big chunks, which gives too much overhead. */
+#if (defined(RCHECK) || defined(I286)) && defined(PACK_MALLOC)
 #  undef PACK_MALLOC
 #endif 
 
@@ -1734,16 +1734,14 @@ 
 	/* Second, check alignment. */
 	slack = 0;
 
-#if !defined(atarist) /* on the atari we dont have to worry about this */
-#  ifndef I286 	/* The sbrk(0) call on the I286 always returns the next segment */
+#ifndef I286 	/* The sbrk(0) call on the I286 always returns the next segment */
 	/* WANTED_ALIGNMENT may be more than NEEDED_ALIGNMENT, but this may
 	   improve performance of memory access. */
 	if (PTR2UV(cp) & (WANTED_ALIGNMENT - 1)) { /* Not aligned. */
 	    slack = WANTED_ALIGNMENT - (PTR2UV(cp) & (WANTED_ALIGNMENT - 1));
 	    add += slack;
 	}
-#  endif
-#endif /* !atarist */
+#endif
 		
 	if (add) {
 	    DEBUG_m(PerlIO_printf(Perl_debug_log, 
--- perl-5.12.3/miniperlmain.c	2011-01-09 20:20:57.000000000 +0000
+++ perl-5.12.3/miniperlmain.c	2011-02-21 09:38:49.000000000 +0000
@@ -45,7 +45,7 @@ 
 #if defined (atarist)
 /* The Atari operating system doesn't have a dynamic stack.  The
    stack size is determined from this value.  */
-long _stksize = 64 * 1024;
+long _stksize = 256 * 1024;
 #endif
 
 #if defined(PERL_GLOBAL_STRUCT_PRIVATE)
--- perl-5.12.3/os2/perlrexx.c	2010-11-21 21:40:56.000000000 +0000
+++ perl-5.12.3/os2/perlrexx.c	2011-02-21 09:42:49.000000000 +0000
@@ -38,7 +38,7 @@ 
 #if defined (atarist)
 /* The Atari operating system doesn't have a dynamic stack.  The
    stack size is determined from this value.  */
-long _stksize = 64 * 1024;
+long _stksize = 256 * 1024;
 #endif
 
 /* Register any extra external extensions */
--- perl-5.12.3/perl.c	2011-02-21 09:17:19.000000000 +0000
+++ perl-5.12.3/perl.c	2011-02-21 09:38:50.000000000 +0000
@@ -3272,10 +3272,6 @@ 
 		      "\n\nOS/2 port Copyright (c) 1990, 1991, Raymond Chen, Kai Uwe Rommel\n"
 		      "Version 5 port Copyright (c) 1994-2002, Andreas Kaiser, Ilya Zakharevich\n");
 #endif
-#ifdef atarist
-	PerlIO_printf(PerlIO_stdout(),
-		      "atariST series port, ++jrb  bammi@cadence.com\n");
-#endif
 #ifdef __BEOS__
 	PerlIO_printf(PerlIO_stdout(),
 		      "BeOS port Copyright Tom Spindler, 1997-1999\n");
--- perl-5.12.3/perl.h	2011-01-09 20:20:57.000000000 +0000
+++ perl-5.12.3/perl.h	2011-02-21 09:38:50.000000000 +0000
@@ -497,7 +497,7 @@ 
  */
 
 /* define this once if either system, instead of cluttering up the src */
-#if defined(MSDOS) || defined(atarist) || defined(WIN32) || defined(NETWARE)
+#if defined(MSDOS) || defined(WIN32) || defined(NETWARE)
 #define DOSISH 1
 #endif
 
--- perl-5.12.3/perlio.c	2009-04-14 23:47:25.000000000 +0000
+++ perl-5.12.3/perlio.c	2010-03-23 18:36:15.000000000 +0000
@@ -135,17 +135,6 @@ 
      * This used to be contents of do_binmode in doio.c
      */
 #ifdef DOSISH
-#  if defined(atarist)
-    PERL_UNUSED_ARG(iotype);
-    if (!fflush(fp)) {
-        if (mode & O_BINARY)
-            ((FILE *) fp)->_flag |= _IOBIN;
-        else
-            ((FILE *) fp)->_flag &= ~_IOBIN;
-        return 1;
-    }
-    return 0;
-#  else
     dTHX;
     PERL_UNUSED_ARG(iotype);
 #ifdef NETWARE
@@ -153,7 +142,7 @@ 
 #else
     if (PerlLIO_setmode(fileno(fp), mode) != -1) {
 #endif
-#    if defined(WIN32) && defined(__BORLANDC__)
+#  if defined(WIN32) && defined(__BORLANDC__)
         /*
          * The translation mode of the stream is maintained independent 
 of
@@ -169,12 +158,11 @@ 
             fp->flags |= _F_BIN;
         else
             fp->flags &= ~_F_BIN;
-#    endif
+#  endif
         return 1;
     }
     else
         return 0;
-#  endif
 #else
 #  if defined(USEMYBINMODE)
     dTHX;
--- perl-5.12.3/pp_sys.c	2011-01-09 20:20:58.000000000 +0000
+++ perl-5.12.3/pp_sys.c	2011-02-21 09:38:50.000000000 +0000
@@ -3308,14 +3308,6 @@ 
     RETPUSHNO;
 }
 
-#if defined(atarist) /* this will work with atariST. Configure will
-			make guesses for other systems. */
-# define FILE_base(f) ((f)->_base)
-# define FILE_ptr(f) ((f)->_ptr)
-# define FILE_cnt(f) ((f)->_cnt)
-# define FILE_bufsiz(f) ((f)->_cnt + ((f)->_ptr - (f)->_base))
-#endif
-
 PP(pp_fttext)
 {
     dVAR;
@@ -5567,30 +5559,6 @@ 
     case 8:
 	retval = syscall(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7]);
 	break;
-#ifdef atarist
-    case 9:
-	retval = syscall(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8]);
-	break;
-    case 10:
-	retval = syscall(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9]);
-	break;
-    case 11:
-	retval = syscall(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],
-	  a[10]);
-	break;
-    case 12:
-	retval = syscall(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],
-	  a[10],a[11]);
-	break;
-    case 13:
-	retval = syscall(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],
-	  a[10],a[11],a[12]);
-	break;
-    case 14:
-	retval = syscall(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],
-	  a[10],a[11],a[12],a[13]);
-	break;
-#endif /* atarist */
     }
     SP = ORIGMARK;
     PUSHi(retval);
--- perl-5.12.3/util.c	2011-01-09 20:20:58.000000000 +0000
+++ perl-5.12.3/util.c	2011-02-21 09:38:51.000000000 +0000
@@ -2545,7 +2545,7 @@ 
     return PerlIO_fdopen(p[This], mode);
 }
 #else
-#if defined(atarist) || defined(EPOC)
+#if defined(EPOC)
 FILE *popen();
 PerlIO *
 Perl_my_popen(pTHX_ const char *cmd, const char *mode)
@@ -2994,7 +2994,7 @@ 
 }
 #endif
 
-#if defined(atarist) || defined(OS2) || defined(EPOC)
+#if defined(OS2) || defined(EPOC)
 int pclose();
 #ifdef HAS_FORK
 int					/* Cannot prototype with I32
@@ -3111,7 +3111,7 @@ 
     I32 len = 0;
     int retval;
     char *bufend;
-#if defined(DOSISH) && !defined(OS2) && !defined(atarist)
+#if defined(DOSISH) && !defined(OS2)
 #  define SEARCH_EXTS ".bat", ".cmd", NULL
 #  define MAX_EXT_LEN 4
 #endif
@@ -3234,28 +3234,25 @@ 
 
 	bufend = s + strlen(s);
 	while (s < bufend) {
-#if defined(atarist) || defined(DOSISH)
+#if defined(DOSISH)
 	    for (len = 0; *s
-#  ifdef atarist
-		    && *s != ','
-#  endif
 		    && *s != ';'; len++, s++) {
 		if (len < sizeof tmpbuf)
 		    tmpbuf[len] = *s;
 	    }
 	    if (len < sizeof tmpbuf)
 		tmpbuf[len] = '\0';
-#else  /* ! (atarist || DOSISH) */
+#else  /* ! (DOSISH) */
 	    s = delimcpy(tmpbuf, tmpbuf + sizeof tmpbuf, s, bufend,
 			':',
 			&len);
-#endif /* ! (atarist || DOSISH) */
+#endif /* ! (DOSISH) */
 	    if (s < bufend)
 		s++;
 	    if (len + 1 + strlen(scriptname) + MAX_EXT_LEN >= sizeof tmpbuf)
 		continue;	/* don't search dir with too-long name */
 	    if (len
-#  if defined(atarist) || defined(DOSISH)
+#  if defined(DOSISH)
 		&& tmpbuf[len - 1] != '/'
 		&& tmpbuf[len - 1] != '\\'
 #  endif
--- perl-5.12.3/hints/freemint.sh	2011-01-09 20:20:58.000000000 +0000
+++ perl-5.12.3/hints/freemint.sh	2011-02-21 09:38:51.000000000 +0000
@@ -0,0 +1,34 @@ 
+# hints/freemint.sh
+#
+# talk to guido@freemint.de if you want to change this file.
+# Please read the README.mint file.
+#
+# misc stuff
+
+archname="m68k-freemint"
+
+cccdlflags=' '; # avoid -fPIC
+ccdlflags="-Wl,-whole-archive -lgcc -lpthread -Wl,-no-whole-archive"
+
+# libs
+libpth="$prefix/lib /usr/local/lib /usr/lib"
+glibpth="$libpth"
+xlibpth="$libpth"
+
+ccflags="$ccflags -D_GNU_SOURCE"
+libswanted='m dld'
+dl_src='dl_dld.xs'
+dlext='o'
+lddlflags='-r'
+ldflags='-static'
+so='none'
+useshrplib='false'
+
+#sbrk() returns -1 (failure) somewhere in lib/unicore/mktables at
+#around 14M, so we need to use system malloc() as our sbrk()
+malloc_cflags='ccflags="-DUSE_PERL_SBRK -DPERL_SBRK_VIA_MALLOC $ccflags"'
+
+# Locales aren't feeling well. We crash if -Ox used.
+locale_cflags='optimize="-O0"'
+LC_ALL=C; export LC_ALL;
+LANG=C; export LANG;
