Add register prefixes.

This commit is contained in:
is 2001-03-01 21:32:53 +00:00
parent 8770ff2900
commit db27e55251
9 changed files with 358 additions and 358 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: alloc.s,v 1.5 2001/02/26 14:58:36 is Exp $ */
/* $NetBSD: alloc.s,v 1.6 2001/03/01 21:32:53 is Exp $ */
/*-
* Copyright (c) 1996 The NetBSD Foundation, Inc.
@ -43,19 +43,19 @@
#include <machine/asm.h>
ENTRY_NOPROFILE(alloc)
movl a6,sp@-
movl pc@(_C_LABEL(SysBase):w),a6
movl sp@(8),d0
movl #0x50001,d1 | MEMF_CLEAR|MEMF_REVERSE|MEMF_PUBLIC for now.
jsr a6@(-0x2ac) | AllocVec
movl sp@+,a6
movl %a6,sp@-
movl %pc@(_C_LABEL(SysBase):w),%a6
movl %sp@(8),%d0
movl #0x50001,%d1 | MEMF_CLEAR|MEMF_REVERSE|MEMF_PUBLIC for now.
jsr %a6@(-0x2ac) | AllocVec
movl %sp@+,%a6
rts
ENTRY_NOPROFILE(free)
movl a6,sp@-
movl pc@(_C_LABEL(SysBase):w),a6
movl sp@(8),a1
jsr a6@(-0x2b2) | FreeVec
movl sp@+,a6
movl %a6,sp@-
movl %pc@(_C_LABEL(SysBase):w),%a6
movl %sp@(8),%a1
jsr %a6@(-0x2b2) | FreeVec
movl %sp@+,%a6
rts

View File

@ -1,4 +1,4 @@
/* $NetBSD: ashrdi3.s,v 1.4 2001/02/26 14:58:36 is Exp $ */
/* $NetBSD: ashrdi3.s,v 1.5 2001/03/01 21:32:53 is Exp $ */
/*-
* Copyright (c) 1996 The NetBSD Foundation, Inc.
@ -39,14 +39,14 @@
#include <machine/asm.h>
ENTRY_NOPROFILE(__ashrdi3)
movl d2,sp@- | 0 reg, 1 pc, 2..4 parameters
movml sp@(8),d0-d2
movl %d2,sp@- | 0 reg, 1 %pc, 2..4 parameters
movml %sp@(8),%d0-d2
jra L2
L1:
asrl #1,d0
roxrl #1,d1
asrl #1,%d0
roxrl #1,%d1
L2:
dbra d2,L1
dbra %d2,L1
movl sp@+,d2
movl %sp@+,%d2
rts

View File

@ -1,4 +1,4 @@
/* $NetBSD: bbstart.s,v 1.6 2001/02/26 14:58:36 is Exp $ */
/* $NetBSD: bbstart.s,v 1.7 2001/03/01 21:32:53 is Exp $ */
/*-
* Copyright (c) 1996 The NetBSD Foundation, Inc.
@ -80,46 +80,46 @@ Lreltab:
* autoload
*/
Lautoload:
movl a6,sp@- |SysBase
movl a1,sp@- |IORequest
movl %a6,sp@- |SysBase
movl %a1,sp@- |IORequest
movl #AUTOLOAD,d0 |Howmuch
movl d0,a1@(IOlen) | for the actual read...
movl #0x10001,d1 |MEMF_CLEAR|MEMF_PUBLIC
jsr a6@(LVOAllocMem)
movl sp@+,a1 |IORequest
movl sp@+,a6 |SysBase
orl d0,d0
movl #AUTOLOAD,%d0 |Howmuch
movl %d0,a1@(IOlen) | for the actual read...
movl #0x10001,%d1 |MEMF_CLEAR|MEMF_PUBLIC
jsr %a6@(LVOAllocMem)
movl %sp@+,%a1 |IORequest
movl %sp@+,%a6 |SysBase
orl %d0,d0
jne Lgotmem
movql #1,d0
movql #1,%d0
rts
Lgotmem:
movl d0,sp@- |Address
movl a1@(IOoff),sp@- |Old offset
movl a1,sp@-
movl a6,sp@-
movl %d0,sp@- |Address
movl %a1@(IOoff),%sp@- |Old offset
movl %a1,sp@-
movl %a6,sp@-
/* we've set IOlen above */
movl d0,a1@(IObuf)
movw #Cmd_Rd,a1@(IOcmd)
jsr a6@(LVODoIO)
movl %d0,a1@(IObuf)
movw #Cmd_Rd,%a1@(IOcmd)
jsr %a6@(LVODoIO)
movl sp@+,a6
movl sp@+,a1
movl sp@+,a1@(IOoff)
movl %sp@+,%a6
movl %sp@+,%a1
movl %sp@+,%a1@(IOoff)
tstb a1@(IOerr)
tstb %a1@(IOerr)
jne Lioerr
addl #Lrelocate-Lzero,sp@
addl #Lrelocate-Lzero,%sp@
movl a6,sp@-
jsr a6@(LVOCacheClearU)
movl sp@+,a6
movl %a6,sp@-
jsr %a6@(LVOCacheClearU)
movl %sp@+,%a6
rts
Lioerr:
movql #1,d0
addql #4,sp
movql #1,%d0
addql #4,%sp
rts
#endif
@ -139,42 +139,42 @@ Lioerr:
*/
Lrelocate:
lea pc@(Lzero),a0
movl a0,d1
movw pc@(Lreltab),a2
addl d1,a2
lea %pc@(Lzero),%a0
movl %a0,d1
movw %pc@(Lreltab),%a2
addl %d1,a2
jra Loopend
Loopw:
clrw a2@+
movl d1,a0 | for a variant with relative words, erase this line
clrw %a2@+
movl %d1,a0 | for a variant with relative words, erase this line
Loopb:
addl d0,a0
addl d1,a0@
addl %d0,a0
addl %d1,a0@
Loopend:
movq #0,d0
movb a2@,d0
clrb a2@+ | bfclr a2@+{0:8} is still two shorts
tstb d0 | we could save one short by using casb d0,d0,a2@+
movq #0,%d0
movb %a2@,%d0
clrb %a2@+ | bfclr %a2@+{0:8} is still two shorts
tstb %d0 | we could save one short by using casb %d0,d0,%a2@+
jne Loopb
movw a2@,d0
movw %a2@,%d0
jne Loopw
Lendtab:
movl a6,sp@-
jsr a6@(LVOCacheClearU)
movl sp@+,a6
movl %a6,sp@-
jsr %a6@(LVOCacheClearU)
movl %sp@+,%a6
/* We are relocated. Now it is safe to initialize _SysBase: */
movl a6,_SysBase
movl %a6,_SysBase
movl a1,sp@-
movl %a1,sp@-
bsr _C_LABEL(pain)
Lerr:
movq #1,d0
movq #1,%d0
rts
.comm _C_LABEL(SysBase),4

View File

@ -1,4 +1,4 @@
/* $NetBSD: bcopy.s,v 1.5 2001/02/26 14:58:37 is Exp $ */
/* $NetBSD: bcopy.s,v 1.6 2001/03/01 21:32:53 is Exp $ */
/*-
* Copyright (c) 1996 The NetBSD Foundation, Inc.
@ -46,29 +46,29 @@
.even
ENTRY_NOPROFILE(memcpy)
movel sp@(4),a0
movel sp@(8),a1
movel %sp@(4),%a0
movel %sp@(8),%a1
jra Lcpy
ENTRY_NOPROFILE(bcopy)
movel sp@(4),a1
movel sp@(8),a0
movel %sp@(4),%a1
movel %sp@(8),%a0
Lcpy:
movel sp@(12),d0
movel %sp@(12),%d0
jeq L1
cmpl a1,a0
cmpl %a1,a0
jcc L3
L4:
moveb a1@+,a0@+
subql #1,d0
moveb %a1@+,%a0@+
subql #1,%d0
jne L4
rts
L3:
addl d0,a1
addl d0,a0
addl %d0,a1
addl %d0,a0
L9:
moveb a1@-,a0@-
subql #1,d0
moveb %a1@-,%a0@-
subql #1,%d0
jne L9
L1:
rts

View File

@ -1,4 +1,4 @@
/* $NetBSD: bzero.s,v 1.4 2001/02/26 14:58:37 is Exp $ */
/* $NetBSD: bzero.s,v 1.5 2001/03/01 21:32:53 is Exp $ */
/*-
* Copyright (c) 1997 The NetBSD Foundation, Inc.
@ -42,12 +42,12 @@
#include <machine/asm.h>
ENTRY_NOPROFILE(bzero)
movel sp@(4),a0
movel sp@(8),d0
movel %sp@(4),%a0
movel %sp@(8),%d0
jeq L3
L4:
clrb a0@+
subql #1,d0
clrb %a0@+
subql #1,%d0
jne L4
L3:
rts

View File

@ -1,4 +1,4 @@
/* $NetBSD: libstubs.s,v 1.4 2001/02/26 14:58:37 is Exp $ */
/* $NetBSD: libstubs.s,v 1.5 2001/03/01 21:32:53 is Exp $ */
/*-
* Copyright (c) 1996 The NetBSD Foundation, Inc.
@ -43,161 +43,161 @@
.comm _C_LABEL(SysBase),4
ENTRY_NOPROFILE(OpenLibrary)
movl a6,sp@-
movl pc@(_SysBase:w),a6
movl sp@(8),a1
movl sp@(12),d0
jsr a6@(-0x228)
movl sp@+,a6
movl %a6,sp@-
movl %pc@(_SysBase:w),%a6
movl %sp@(8),%a1
movl %sp@(12),%d0
jsr %a6@(-0x228)
movl %sp@+,%a6
rts
#ifdef notyet
ENTRY_NOPROFILE(CloseLibrary)
movl a6,sp@-
movl pc@(_SysBase:w),a6
movl sp@(8),a1
jsr a6@(-0x19e)
movl sp@+,a6
movl %a6,sp@-
movl %pc@(_SysBase:w),%a6
movl %sp@(8),%a1
jsr %a6@(-0x19e)
movl %sp@+,%a6
rts
#endif
ENTRY_NOPROFILE(CreateIORequest)
movl a6,sp@-
movl pc@(_SysBase:w),a6
movl sp@(8),a0
movl sp@(12),d0
jsr a6@(-0x28e)
movl sp@+,a6
movl %a6,sp@-
movl %pc@(_SysBase:w),%a6
movl %sp@(8),%a0
movl %sp@(12),%d0
jsr %a6@(-0x28e)
movl %sp@+,%a6
rts
ENTRY_NOPROFILE(CreateMsgPort)
movl a6,sp@-
movl pc@(_SysBase:w),a6
jsr a6@(-0x29a)
movl sp@+,a6
movl %a6,sp@-
movl %pc@(_SysBase:w),%a6
jsr %a6@(-0x29a)
movl %sp@+,%a6
rts
#ifdef notyet
ENTRY_NOPROFILE(DeleteMsgPort)
movl a6,sp@-
movl pc@(_SysBase:w),a6
movl sp@(8),a0
jsr a6@(-0x2a0)
movl sp@+,a6
movl %a6,sp@-
movl %pc@(_SysBase:w),%a6
movl %sp@(8),%a0
jsr %a6@(-0x2%a0)
movl %sp@+,%a6
rts
ENTRY_NOPROFILE(DeleteIORequest)
movl a6,sp@-
movl pc@(_SysBase:w),a6
movl sp@(8),a0
jsr a6@(-0x294)
movl sp@+,a6
movl %a6,sp@-
movl %pc@(_SysBase:w),%a6
movl %sp@(8),%a0
jsr %a6@(-0x294)
movl %sp@+,%a6
rts
#endif
ENTRY_NOPROFILE(OpenDevice)
movl a6,sp@-
movl pc@(_SysBase:w),a6
movl sp@(8),a0
movl sp@(12),d0
movl sp@(16),a1
movl sp@(20),d1
jsr a6@(-0x1bc)
movl sp@+,a6
movl %a6,sp@-
movl %pc@(_SysBase:w),%a6
movl %sp@(8),%a0
movl %sp@(12),%d0
movl %sp@(16),%a1
movl %sp@(20),%d1
jsr %a6@(-0x1bc)
movl %sp@+,%a6
rts
ENTRY_NOPROFILE(DoIO)
movl a6,sp@-
movl pc@(_SysBase:w),a6
movl sp@(8),a1
jsr a6@(-0x1c8)
movl sp@+,a6
movl %a6,sp@-
movl %pc@(_SysBase:w),%a6
movl %sp@(8),%a1
jsr %a6@(-0x1c8)
movl %sp@+,%a6
rts
#ifdef nomore
ENTRY_NOPROFILE(CheckIO)
movl a6,sp@-
movl pc@(_SysBase:w),a6
movl sp@(8),a1
jsr a6@(-0x1d4)
movl sp@+,a6
movl %a6,sp@-
movl %pc@(_SysBase:w),%a6
movl %sp@(8),%a1
jsr %a6@(-0x1%d4)
movl %sp@+,%a6
rts
#endif
ENTRY_NOPROFILE(WaitIO)
movl a6,sp@-
movl pc@(_SysBase:w),a6
movl sp@(8),a1
jsr a6@(-0x1da)
movl sp@+,a6
movl %a6,sp@-
movl %pc@(_SysBase:w),%a6
movl %sp@(8),%a1
jsr %a6@(-0x1da)
movl %sp@+,%a6
rts
ENTRY_NOPROFILE(SendIO)
movl a6,sp@-
movl pc@(_SysBase:w),a6
movl sp@(8),a1
jsr a6@(-0x1ce)
movl sp@+,a6
movl %a6,sp@-
movl %pc@(_SysBase:w),%a6
movl %sp@(8),%a1
jsr %a6@(-0x1ce)
movl %sp@+,%a6
rts
ENTRY_NOPROFILE(AbortIO)
movl a6,sp@-
movl pc@(_SysBase:w),a6
movl sp@(8),a1
jsr a6@(-0x1e0)
movl sp@+,a6
movl %a6,sp@-
movl %pc@(_SysBase:w),%a6
movl %sp@(8),%a1
jsr %a6@(-0x1e0)
movl %sp@+,%a6
rts
ENTRY_NOPROFILE(WaitPort)
movl a6,sp@-
movl pc@(_SysBase:w),a6
movl sp@(8),a0
jsr a6@(-0x180)
movl sp@+,a6
movl %a6,sp@-
movl %pc@(_SysBase:w),%a6
movl %sp@(8),%a0
jsr %a6@(-0x180)
movl %sp@+,%a6
rts
#ifndef DOINLINES
ENTRY_NOPROFILE(CacheClearU)
movl a6,sp@-
movl pc@(_SysBase:w),a6
jsr a6@(-0x27c)
movl sp@+,a6
movl %a6,sp@-
movl %pc@(_SysBase:w),%a6
jsr %a6@(-0x27c)
movl %sp@+,%a6
rts
#endif
ENTRY_NOPROFILE(CachePreDMA)
movl a6,sp@-
movl pc@(_SysBase:w),a6
movl sp@(8),a0
movl sp@(12),a1
movl sp@(16),d0
jsr a6@(-0x2fa)
movl sp@+,a6
movl %a6,sp@-
movl %pc@(_SysBase:w),%a6
movl %sp@(8),%a0
movl %sp@(12),%a1
movl %sp@(16),%d0
jsr %a6@(-0x2fa)
movl %sp@+,%a6
rts
ENTRY_NOPROFILE(FindResident)
movl a6,sp@-
movl pc@(_SysBase:w),a6
movl sp@(8),a1
jsr a6@(-0x60)
movl sp@+,a6
movl %a6,sp@-
movl %pc@(_SysBase:w),%a6
movl %sp@(8),%a1
jsr %a6@(-0x60)
movl %sp@+,%a6
rts
ENTRY_NOPROFILE(OpenResource)
movl a6,sp@-
movl pc@(_SysBase:w),a6
movl sp@(8),a1
jsr a6@(-0x1f2)
movl sp@+,a6
movl %a6,sp@-
movl %pc@(_SysBase:w),%a6
movl %sp@(8),%a1
jsr %a6@(-0x1f2)
movl %sp@+,%a6
rts
#ifdef notyet
ENTRY_NOPROFILE(Forbid)
movl a6,sp@-
movl pc@(_SysBase:W),a6
jsr a6@(-0x84)
movl sp@+,a6
movl %a6,sp@-
movl %pc@(_SysBase:W),%a6
jsr %a6@(-0x84)
movl %sp@+,%a6
rts
ENTRY_NOPROFILE(Permit)
movl a6,sp@-
movl pc@(_SysBase:W),a6
jsr a6@(-0x8a)
movl sp@+,a6
movl %a6,sp@-
movl %pc@(_SysBase:W),%a6
jsr %a6@(-0x8a)
movl %sp@+,%a6
rts
#endif
@ -208,42 +208,42 @@ ENTRY_NOPROFILE(Permit)
.comm _IntuitionBase,4
ENTRY_NOPROFILE(OpenScreenTagList)
movl a6,sp@-
movl pc@(_IntuitionBase:w),a6
movl sp@(8),a0
movl sp@(12),a1
jsr a6@(-0x264)
movl sp@+,a6
movl %a6,sp@-
movl %pc@(_IntuitionBase:w),%a6
movl %sp@(8),%a0
movl %sp@(12),%a1
jsr %a6@(-0x264)
movl %sp@+,%a6
rts
ENTRY_NOPROFILE(OpenWindowTagList)
movl a6,sp@-
movl pc@(_IntuitionBase:w),a6
movl sp@(8),a0
movl sp@(12),a1
jsr a6@(-0x25e)
movl sp@+,a6
movl %a6,sp@-
movl %pc@(_IntuitionBase:w),%a6
movl %sp@(8),%a0
movl %sp@(12),%a1
jsr %a6@(-0x25e)
movl %sp@+,%a6
rts
#ifdef nomore
ENTRY_NOPROFILE(mytime)
movl a6,sp@-
movl pc@(_IntuitionBase:w),a6
subql #8,sp
movl sp,a0
lea sp@(4),a1
jsr a6@(-0x54)
movl sp@+,d0
addql #4,sp
movl sp@+,a6
movl %a6,sp@-
movl %pc@(_IntuitionBase:w),%a6
subql #8,%sp
movl %sp,a0
lea %sp@(4),%a1
jsr %a6@(-0x54)
movl %sp@+,%d0
addql #4,%sp
movl %sp@+,%a6
rts
#endif
.comm _ExpansionBase,4
ENTRY_NOPROFILE(FindConfigDev)
movl a6,sp@-
movl _ExpansionBase,a6
movl sp@(8),a0
movl sp@(12),d0
movl sp@(16),d1
jsr a6@(-0x48)
movl sp@+,a6
movl %a6,sp@-
movl _ExpansionBase,%a6
movl %sp@(8),%a0
movl %sp@(12),%d0
movl %sp@(16),%d1
jsr %a6@(-0x48)
movl %sp@+,%a6
rts

View File

@ -1,4 +1,4 @@
/* $NetBSD: muldi3.s,v 1.4 2001/02/26 14:58:37 is Exp $ */
/* $NetBSD: muldi3.s,v 1.5 2001/03/01 21:32:53 is Exp $ */
/*-
* Copyright (c) 1996 The NetBSD Foundation, Inc.
@ -38,25 +38,25 @@
#include <machine/asm.h>
ENTRY_NOPROFILE(__muldi3)
movml d2/d3/d4/d5/d6,sp@- | 0..4 regs, 5 pc, 6..9 parameters
movml sp@(24),d2-d5
| movl sp@(24),d2
| movl sp@(28),d3
| movl sp@(32),d4
| movl sp@(36),d5
movq #0,d0
movq #0,d1
movq #63,d6
movml %d2/d3/%d4/d5/%d6,sp@- | 0..4 regs, 5 %pc, 6..9 parameters
movml %sp@(24),%d2-d5
| movl %sp@(24),%d2
| movl %sp@(28),%d3
| movl %sp@(32),%d4
| movl %sp@(36),%d5
movq #0,%d0
movq #0,%d1
movq #63,%d6
L4:
asrl #1,d2
roxrl #1,d3
asrl #1,%d2
roxrl #1,%d3
jcc L5
addl d5,d1
addxl d4,d0
addl %d5,d1
addxl %d4,d0
L5:
addl d5,d5
addxl d4,d4
addl %d5,d5
addxl %d4,d4
L7:
dbra d6,L4
movml sp@+,d2/d3/d4/d5/d6
dbra %d6,L4
movml %sp@+,%d2/d3/%d4/d5/%d6
rts

View File

@ -1,4 +1,4 @@
/* $NetBSD: printf.s,v 1.4 2001/02/26 14:58:37 is Exp $ */
/* $NetBSD: printf.s,v 1.5 2001/03/01 21:32:53 is Exp $ */
/*-
* Copyright (c) 1996 The NetBSD Foundation, Inc.
@ -44,34 +44,34 @@
.text
.even
Lputch:
movl d0,sp@-
movl %d0,sp@-
bsr _C_LABEL(putchar)
addql #4,sp
addql #4,%sp
rts
ENTRY_NOPROFILE(printf)
movml #0x0032,sp@-
lea pc@(Lputch:w),a2
lea sp@(20),a1
movl sp@(16),a0
movl pc@(_C_LABEL(SysBase):w),a6
jsr a6@(-0x20a)
movml sp@+, #0x4c00
movml #0x0032,%sp@-
lea %pc@(Lputch:w),%a2
lea %sp@(20),%a1
movl %sp@(16),%a0
movl %pc@(_C_LABEL(SysBase):w),%a6
jsr %a6@(-0x20a)
movml %sp@+, #0x4c00
rts
#if 0
Lstorech:
movb d0, a3@+
movb %d0, %a3@+
rts
.globl _sprintf
ENTRY_NOPROFILE(sprintf)
movml #0x0032,sp@-
movl sp@(16),a3
lea pc@(Lstorech:w),a2
lea sp@(24),a1
movl sp@(20),a0
movl pc@(_C_LABEL(SysBase):w),a6
jsr a6@(-0x20a)
movml sp@+, #0x4c00
movml #0x0032,%sp@-
movl %sp@(16),%a3
lea %pc@(Lstorech:w),%a2
lea %sp@(24),%a1
movl %sp@(20),%a0
movl %pc@(_C_LABEL(SysBase):w),%a6
jsr %a6@(-0x20a)
movml %sp@+, #0x4c00
rts
#endif

View File

@ -1,4 +1,4 @@
/* $NetBSD: startit.s,v 1.6 2001/02/26 14:58:37 is Exp $ */
/* $NetBSD: startit.s,v 1.7 2001/03/01 21:32:53 is Exp $ */
/*
* Copyright (c) 1996 Ignatios Souvatzis
@ -31,7 +31,7 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*
* From: $NetBSD: startit.s,v 1.6 2001/02/26 14:58:37 is Exp $
* From: $NetBSD: startit.s,v 1.7 2001/03/01 21:32:53 is Exp $
*/
#include <machine/asm.h>
@ -49,10 +49,10 @@ ENTRY_NOPROFILE(startit)
moveb #31,0x200003c9
moveb #31,0x200003c9
#endif
movel sp,a3
movel 4:w,a6
lea pc@(start_super:w),a5
jmp a6@(-0x1e) | supervisor-call
movel %sp,a3
movel 4:w,%a6
lea %pc@(start_super:w),%a5
jmp %a6@(-0x1e) | supervisor-call
start_super:
#if TESTONAMIGA
@ -61,37 +61,37 @@ start_super:
movew #0x2700,sr
| the BSD kernel wants values into the following registers:
| a0: fastmem-start
| d0: fastmem-size
| d1: chipmem-size
| d3: Amiga specific flags
| d4: E clock frequency
| d5: AttnFlags (cpuid)
| d6: boot partition offset
| d7: boothowto
| a4: esym location
| a2: Inhibit sync flags
| %a0: fastmem-start
| %d0: fastmem-size
| %d1: chipmem-size
| %d3: Amiga specific flags
| %d4: E clock frequency
| %d5: AttnFlags (cpuid)
| %d6: boot partition offset
| %d7: boothowto
| %a4: esym location
| %a2: Inhibit sync flags
| All other registers zeroed for possible future requirements.
lea pc@(_startit:w),sp | make sure we have a good stack ***
lea %pc@(_startit:w),%sp | make sure we have a good stack ***
movel a3@(4),a1 | loaded kernel
movel a3@(8),d2 | length of loaded kernel
| movel a3@(12),sp | entry point in stack pointer
movel a3@(12),a6 | entry point ***
movel a3@(16),a0 | fastmem-start
movel a3@(20),d0 | fastmem-size
movel a3@(24),d1 | chipmem-size
movel a3@(28),d7 | boothowto
movel a3@(32),a4 | esym
movel a3@(36),d5 | cpuid
movel a3@(40),d4 | E clock frequency
movel a3@(44),d3 | Amiga flags
movel a3@(48),a2 | Inhibit sync flags
movel a3@(52),d6 | boot partition offset
movel %a3@(4),%a1 | loaded kernel
movel %a3@(8),%d2 | length of loaded kernel
| movel %a3@(12),%sp | entry point in stack pointer
movel %a3@(12),%a6 | entry point ***
movel %a3@(16),%a0 | fastmem-start
movel %a3@(20),%d0 | fastmem-size
movel %a3@(24),%d1 | chipmem-size
movel %a3@(28),%d7 | boothowto
movel %a3@(32),%a4 | esym
movel %a3@(36),%d5 | cpuid
movel %a3@(40),%d4 | E clock frequency
movel %a3@(44),%d3 | Amiga flags
movel %a3@(48),%a2 | Inhibit sync flags
movel %a3@(52),%d6 | boot partition offset
cmpb #0x7D,a3@(36) | is it DraCo?
movel a3@(56),a3 | Load to fastmem flag
cmpb #0x7D,%a3@(36) | is it DraCo?
movel %a3@(56),%a3 | Load to fastmem flag
jeq nott | yes, switch off MMU later
| no, it is an Amiga:
@ -110,35 +110,35 @@ start_super:
| ------ mmu off start -----
btst #3,d5 | AFB_68040,SysBase->AttnFlags
btst #3,%d5 | AFB_68040,SysBase->AttnFlags
jeq not040
| Turn off 68040/060 MMU
subl a5,a5
.word 0x4e7b,0xd003 | movec a5,tc
.word 0x4e7b,0xd806 | movec a5,urp
.word 0x4e7b,0xd807 | movec a5,srp
.word 0x4e7b,0xd004 | movec a5,itt0
.word 0x4e7b,0xd005 | movec a5,itt1
.word 0x4e7b,0xd006 | movec a5,dtt0
.word 0x4e7b,0xd007 | movec a5,dtt1
subl %a5,a5
.word 0x4e7b,0xd003 | movec %a5,tc
.word 0x4e7b,0xd806 | movec %a5,urp
.word 0x4e7b,0xd807 | movec %a5,srp
.word 0x4e7b,0xd004 | movec %a5,itt0
.word 0x4e7b,0xd005 | movec %a5,itt1
.word 0x4e7b,0xd006 | movec %a5,dtt0
.word 0x4e7b,0xd007 | movec %a5,dtt1
jra nott
not040:
lea pc@(zero:w),a5
pmove a5@,tc | Turn off MMU
lea pc@(nullrp:w),a5
pmove a5@,crp | Turn off MMU some more
pmove a5@,srp | Really, really, turn off MMU
lea %pc@(zero:w),%a5
pmove %a5@,tc | Turn off MMU
lea %pc@(nullrp:w),%a5
pmove %a5@,crp | Turn off MMU some more
pmove %a5@,srp | Really, really, turn off MMU
| Turn off 68030 TT registers
btst #2,d5 | AFB_68030,SysBase->AttnFlags
btst #2,%d5 | AFB_68030,SysBase->AttnFlags
jeq nott | Skip TT registers if not 68030
lea pc@(zero:w),a5
.word 0xf015,0x0800 | pmove a5@,tt0 (gas only knows about 68851 ops..)
.word 0xf015,0x0c00 | pmove a5@,tt1 (gas only knows about 68851 ops..)
lea %pc@(zero:w),%a5
.word 0xf015,0x0800 | pmove %a5@,tt0 (gas only knows about 68851 ops..)
.word 0xf015,0x0c00 | pmove %a5@,tt1 (gas only knows about 68851 ops..)
nott:
| ---- mmu off end ----
@ -156,73 +156,73 @@ nott:
| ---- copy kernel start ----
| removed Z flag
| tstl a3 | Can we load to fastmem?
| tstl %a3 | Can we load to fastmem?
| jeq L0 | No, leave destination at 0
movl a0,a3 | Move to start of fastmem chunk
addl a0,a6 | relocate kernel entry point
movl %a0,a3 | Move to start of fastmem chunk
addl %a0,a6 | relocate kernel entry point
addl #3,d2
andl #0xfffffffc,d2 | round up.
addl #3,%d2
andl #0xfffffffc,%d2 | round up.
| determine if the kernel need be copied upwards or downwards
cmpl a1,a3 | a3-a1
cmpl %a1,a3 | %a3-a1
bcs above | source is above
movl a0,sp
addl d0,sp | move the stack to the end of segment
movl %a0,sp
addl %d0,sp | move the stack to the end of segment
| copy from below upwards requires copying from end to start.
addl d2,a3 | one long word past
addl d2,a1 | one long word past
addl %d2,a3 | one long word past
addl %d2,a1 | one long word past
subl #4,sp | alloc space
movl a1,sp@- | save source
movl a3,sp@- | save destination
subl #4,%sp | alloc space
movl %a1,sp@- | save source
movl %a3,sp@- | save destination
| copy copier to end of segment
movl sp,a3
subl #256,a3 | end of segment save our stack
movl %sp,a3
subl #256,%a3 | end of segment save our stack
lea pc@(_startit_end:w),a1
movl a0,sp@- | save segment start
lea pc@(below:w),a0
lea %pc@(_startit_end:w),%a1
movl %a0,sp@- | save segment start
lea %pc@(below:w),%a0
L0: movw a1@-,a3@-
cmpl a0,a1
L0: movw %a1@-,%a3@-
cmpl %a0,a1
bne L0
movl sp@,a0 | restore segment start
movl a3,sp@ | address of relocated below
addl #(ckend - below),a3
movl a3,sp@(12) | address of ckend for later
movl %sp@,%a0 | restore segment start
movl %a3,sp@ | address of relocated below
addl #(ckend - below),%a3
movl %a3,sp@(12) | address of ckend for later
| ---- switch off cache ----
bra Lchoff | and to relocated below
below: movl sp@+,a3 | recover destination
movl sp@+,a1 | recover source
below: movl %sp@+,%a3 | recover destination
movl %sp@+,%a1 | recover source
L1: movl a1@-,a3@- | copy kernel
subl #4,d2
L1: movl %a1@-,%a3@- | copy kernel
subl #4,%d2
bne L1
| ---- switch off cache ----
bra Lchoff | and to relocated ckend
above: movl a1@+,a3@+
subl #4,d2
above: movl %a1@+,%a3@+
subl #4,%d2
bne above
lea pc@(ckend:w),a1
movl a3,sp@-
pea pc@(_startit_end:w)
lea %pc@(ckend:w),%a1
movl %a3,sp@-
pea %pc@(_startit_end:w)
L2:
movl a1@+,a3@+
cmpl sp@,a1
movl %a1@+,%a3@+
cmpl %sp@,%a1
bcs L2
addql #4,sp
addql #4,%sp
#if TESTONAMIGA
movew #0xFF0,0xdff180 | yellow
@ -235,13 +235,13 @@ L2:
#endif
| ---- switch off cache ----
Lchoff: btst #3,d5
Lchoff: btst #3,%d5
jeq L3c
.word 0xf4f8
L3c: movl d2,sp@- | save d2
movql #0,d2 | switch off cache to ensure we use
movec d2,cacr | valid kernel data
movl sp@+,d2 | restore d2
L3c: movl %d2,sp@- | save %d2
movql #0,%d2 | switch off cache to ensure we use
movec %d2,cacr | valid kernel data
movl %sp@+,%d2 | restore %d2
rts
| ---- copy kernel end ----
@ -257,29 +257,29 @@ ckend:
moveb #63,0x200003c9
#endif
movl d5,d2
roll #8,d2
cmpb #0x7D,d2
movl %d5,d2
roll #8,%d2
cmpb #0x7D,%d2
jne noDraCo
| DraCo: switch off MMU now:
subl a5,a5
.word 0x4e7b,0xd003 | movec a5,tc
.word 0x4e7b,0xd806 | movec a5,urp
.word 0x4e7b,0xd807 | movec a5,srp
.word 0x4e7b,0xd004 | movec a5,itt0
.word 0x4e7b,0xd005 | movec a5,itt1
.word 0x4e7b,0xd006 | movec a5,dtt0
.word 0x4e7b,0xd007 | movec a5,dtt1
subl %a5,a5
.word 0x4e7b,0xd003 | movec %a5,tc
.word 0x4e7b,0xd806 | movec %a5,urp
.word 0x4e7b,0xd807 | movec %a5,srp
.word 0x4e7b,0xd004 | movec %a5,itt0
.word 0x4e7b,0xd005 | movec %a5,itt1
.word 0x4e7b,0xd006 | movec %a5,dtt0
.word 0x4e7b,0xd007 | movec %a5,dtt1
noDraCo:
moveq #0,d2 | zero out unused registers
movel d2,a1 | (might make future compatibility
movel d2,a3 | would have known contents)
movel d2,a5
movel a6,sp | entry point into stack pointer
movel d2,a6
moveq #0,%d2 | zero out unused registers
movel %d2,a1 | (might make future compatibility
movel %d2,a3 | would have known contents)
movel %d2,a5
movel %a6,sp | entry point into stack pointer
movel %d2,a6
#if TESTONAMIGA
movew #0x0F0,0xdff180 | green
@ -291,7 +291,7 @@ noDraCo:
moveb #0,0x200003c9
#endif
jmp sp@ | jump to kernel entry point
jmp %sp@ | jump to kernel entry point
| A do-nothing MMU root pointer (includes the following long as well)