patch-2.1.48 linux/arch/m68k/boot/amiga/linuxboot.h
Next file: linux/arch/m68k/boot/atari/bootp.c
Previous file: linux/arch/m68k/boot/amiga/linuxboot.c
Back to the patch index
Back to the overall index
- Lines: 456
- Date:
Wed Dec 31 16:00:00 1969
- Orig file:
v2.1.47/linux/arch/m68k/boot/amiga/linuxboot.h
- Orig date:
Tue May 13 22:41:02 1997
diff -u --recursive --new-file v2.1.47/linux/arch/m68k/boot/amiga/linuxboot.h linux/arch/m68k/boot/amiga/linuxboot.h
@@ -1,455 +0,0 @@
-/*
- * linux/arch/m68k/boot/amiga/linuxboot.h -- Generic routine to boot Linux/m68k
- * on Amiga, used by both Amiboot and
- * Amiga-Lilo.
- *
- * Created 1996 by Geert Uytterhoeven
- *
- *
- * This file is based on the original bootstrap code (bootstrap.c):
- *
- * Copyright (C) 1993, 1994 Hamish Macdonald
- * Greg Harp
- *
- * with work by Michael Rausch
- * Geert Uytterhoeven
- * Frank Neumann
- * Andreas Schwab
- *
- *
- * This file is subject to the terms and conditions of the GNU General Public
- * License. See the file COPYING in the main directory of this archive
- * for more details.
- */
-
-
-#include <asm/setup.h>
-#include <linux/zorro.h>
-
-
- /*
- * Amiboot Version
- */
-
-#define AMIBOOT_VERSION "5.5"
-
-
- /*
- * Amiga Bootinfo Definitions
- *
- * All limits herein are `soft' limits, i.e. they don't put constraints
- * on the actual parameters in the kernel.
- */
-
-struct amiga_bootinfo {
- u_long machtype; /* machine type = MACH_AMIGA */
- u_long cputype; /* system CPU */
- u_long fputype; /* system FPU */
- u_long mmutype; /* system MMU */
- int num_memory; /* # of memory blocks found */
- struct mem_info memory[NUM_MEMINFO];/* memory description */
- struct mem_info ramdisk; /* ramdisk description */
- char command_line[CL_SIZE]; /* kernel command line parameters */
- u_long model; /* Amiga Model */
- int num_autocon; /* # of autoconfig devices found */
- struct ConfigDev autocon[ZORRO_NUM_AUTO]; /* autoconfig devices */
- u_long chip_size; /* size of chip memory (bytes) */
- u_char vblank; /* VBLANK frequency */
- u_char psfreq; /* power supply frequency */
- u_long eclock; /* EClock frequency */
- u_long chipset; /* native chipset present */
- u_short serper; /* serial port period */
-};
-
-
- /*
- * Parameters passed to linuxboot()
- */
-
-struct linuxboot_args {
- struct amiga_bootinfo bi; /* Initial values override detected values */
- const char *kernelname;
- const char *ramdiskname;
- int debugflag;
- int keep_video;
- int reset_boards;
- u_int baud;
- void (*puts)(const char *str);
- long (*getchar)(void);
- void (*putchar)(char c);
- void (*printf)(const char *fmt, ...);
- int (*open)(const char *path);
- int (*seek)(int fd, int offset);
- int (*read)(int fd, char *buf, int count);
- void (*close)(int fd);
- int (*filesize)(const char *path);
- void (*sleep)(u_long micros);
-};
-
-
- /*
- * Boot the Linux/m68k Operating System
- */
-
-extern u_long linuxboot(const struct linuxboot_args *args);
-
-
- /*
- * Amiga Models
- */
-
-extern const char *amiga_models[];
-extern const u_long first_amiga_model;
-extern const u_long last_amiga_model;
-
-
- /*
- * Exec Library Definitions
- */
-
-#define TRUE (1)
-#define FALSE (0)
-
-
-struct List {
- struct Node *lh_Head;
- struct Node *lh_Tail;
- struct Node *lh_TailPred;
- u_char lh_Type;
- u_char l_pad;
-};
-
-struct MemChunk {
- struct MemChunk *mc_Next; /* pointer to next chunk */
- u_long mc_Bytes; /* chunk byte size */
-};
-
-#define MEMF_PUBLIC (1<<0)
-#define MEMF_CHIP (1<<1)
-#define MEMF_FAST (1<<2)
-#define MEMF_LOCAL (1<<8)
-#define MEMF_CLEAR (1<<16)
-
-struct MemHeader {
- struct Node mh_Node;
- u_short mh_Attributes; /* characteristics of this region */
- struct MemChunk *mh_First; /* first free region */
- void *mh_Lower; /* lower memory bound */
- void *mh_Upper; /* upper memory bound+1 */
- u_long mh_Free; /* total number of free bytes */
-};
-
-struct ExecBase {
- u_char fill1[20];
- u_short Version;
- u_char fill2[274];
- u_short AttnFlags;
- u_char fill3[24];
- struct List MemList;
- u_char fill4[194];
- u_char VBlankFrequency;
- u_char PowerSupplyFrequency;
- u_char fill5[36];
- u_long ex_EClockFrequency;
- u_char fill6[60];
-};
-
-#define AFB_68020 (1)
-#define AFF_68020 (1<<AFB_68020)
-#define AFB_68030 (2)
-#define AFF_68030 (1<<AFB_68030)
-#define AFB_68040 (3)
-#define AFF_68040 (1<<AFB_68040)
-#define AFB_68881 (4)
-#define AFF_68881 (1<<AFB_68881)
-#define AFB_68882 (5)
-#define AFF_68882 (1<<AFB_68882)
-#define AFB_FPU40 (6) /* ONLY valid if AFB_68040 or AFB_68060 */
-#define AFF_FPU40 (1<<AFB_FPU40) /* is set; also set for 68060 FPU */
-#define AFB_68060 (7)
-#define AFF_68060 (1<<AFB_68060)
-
-struct Resident;
-
-
- /*
- * Graphics Library Definitions
- */
-
-struct GfxBase {
- u_char fill1[20];
- u_short Version;
- u_char fill2[194];
- u_short NormalDisplayRows;
- u_short NormalDisplayColumns;
- u_char fill3[16];
- u_char ChipRevBits0;
- u_char fill4[307];
-};
-
-#define GFXB_HR_AGNUS (0)
-#define GFXF_HR_AGNUS (1<<GFXB_HR_AGNUS)
-#define GFXB_HR_DENISE (1)
-#define GFXF_HR_DENISE (1<<GFXB_HR_DENISE)
-#define GFXB_AA_ALICE (2)
-#define GFXF_AA_ALICE (1<<GFXB_AA_ALICE)
-#define GFXB_AA_LISA (3)
-#define GFXF_AA_LISA (1<<GFXB_AA_LISA)
-
- /*
- * HiRes(=Big) Agnus present; i.e.
- * 1MB chipmem, big blits (none of interest so far) and programmable sync
- */
-#define GFXG_OCS (GFXF_HR_AGNUS)
- /*
- * HiRes Agnus/Denise present; we are running on ECS
- */
-#define GFXG_ECS (GFXF_HR_AGNUS|GFXF_HR_DENISE)
- /*
- * Alice and Lisa present; we are running on AGA
- */
-#define GFXG_AGA (GFXF_AA_ALICE|GFXF_AA_LISA)
-
-#define SETCHIPREV_BEST (0xffffffff)
-#define HIRES (0x8000)
-
-struct View;
-
-
- /*
- * Amiga Shared Library/Device Functions
- */
-
-extern const struct ExecBase *SysBase;
-
-#define LVOAllocMem (-0xc6)
-#define LVOAllocVec (-0x2ac)
-#define LVOCacheControl (-0x288)
-#define LVODisable (-0x78)
-#define LVOEnable (-0x7e)
-#define LVOFindResident (-0x60)
-#define LVOFreeMem (-0xd2)
-#define LVOFreeVec (-0x2b2)
-#define LVOOpenresource (-0x1f2)
-#define LVOSuperState (-0x96)
-#define LVOSupervisor (-0x1e)
-
-static __inline void *AllocMem(u_long byteSize, u_long requirements)
-{
- register void *_res __asm("d0");
- register const struct ExecBase *_base __asm("a6") = SysBase;
- register u_long d0 __asm("d0") = byteSize;
- register u_long d1 __asm("d1") = requirements;
-
- __asm __volatile ("jsr a6@(-0xc6)"
- : "=r" (_res)
- : "r" (_base), "r" (d0), "r" (d1)
- : "a0", "a1", "d0", "d1", "memory");
- return(_res);
-}
-
-static __inline void *AllocVec(u_long byteSize, u_long requirements)
-{
- register void *_res __asm("d0");
- register const struct ExecBase *_base __asm("a6") = SysBase;
- register u_long d0 __asm("d0") = byteSize;
- register u_long d1 __asm("d1") = requirements;
-
- __asm __volatile ("jsr a6@(-0x2ac)"
- : "=r" (_res)
- : "r" (_base), "r" (d0), "r" (d1)
- : "a0", "a1", "d0", "d1", "memory");
- return(_res);
-}
-
-static __inline u_long CacheControl(u_long cacheBits, u_long cacheMask)
-{
- register u_long _res __asm("d0");
- register const struct ExecBase *_base __asm("a6") = SysBase;
- register u_long d0 __asm("d0") = cacheBits;
- register u_long d1 __asm("d1") = cacheMask;
-
- __asm __volatile ("jsr a6@(-0x288)"
- : "=r" (_res)
- : "r" (_base), "r" (d0), "r" (d1)
- : "a0", "a1", "d0", "d1", "memory");
- return(_res);
-}
-
-static __inline void Disable(void)
-{
- register const struct ExecBase *_base __asm("a6") = SysBase;
-
- __asm __volatile ("jsr a6@(-0x78)"
- : /* no output */
- : "r" (_base)
- : "a0", "a1", "d0", "d1", "memory");
-}
-
-static __inline void Enable(void)
-{
- register const struct ExecBase *_base __asm("a6") = SysBase;
-
- __asm __volatile ("jsr a6@(-0x7e)"
- : /* no output */
- : "r" (_base)
- : "a0", "a1", "d0", "d1", "memory");
-}
-
-static __inline struct Resident *FindResident(const u_char *name)
-{
- register struct Resident *_res __asm("d0");
- register const struct ExecBase *_base __asm("a6") = SysBase;
- register const u_char *a1 __asm("a1") = name;
-
- __asm __volatile ("jsr a6@(-0x60)"
- : "=r" (_res)
- : "r" (_base), "r" (a1)
- : "a0", "a1", "d0", "d1", "memory");
- return _res;
-}
-
-static __inline void FreeMem(void *memoryBlock, u_long byteSize)
-{
- register const struct ExecBase *_base __asm("a6") = SysBase;
- register void *a1 __asm("a1") = memoryBlock;
- register u_long d0 __asm("d0") = byteSize;
-
- __asm __volatile ("jsr a6@(-0xd2)"
- : /* no output */
- : "r" (_base), "r" (a1), "r" (d0)
- : "a0", "a1", "d0", "d1", "memory");
-}
-
-static __inline void FreeVec(void *memoryBlock)
-{
- register const struct ExecBase *_base __asm("a6") = SysBase;
- register void *a1 __asm("a1") = memoryBlock;
-
- __asm __volatile ("jsr a6@(-0x2b2)"
- : /* no output */
- : "r" (_base), "r" (a1)
- : "a0", "a1", "d0", "d1", "memory");
-}
-
-static __inline void *OpenResource(const u_char *resName)
-{
- register void *_res __asm("d0");
- register const struct ExecBase *_base __asm("a6") = SysBase;
- register const u_char *a1 __asm("a1") = resName;
-
- __asm __volatile ("jsr a6@(-0x1f2)"
- : "=r" (_res)
- : "r" (_base), "r" (a1)
- : "a0", "a1", "d0", "d1", "memory");
- return _res;
-}
-
-static __inline void *SuperState(void)
-{
- register void *_res __asm("d0");
- register const struct ExecBase *_base __asm("a6") = SysBase;
-
- __asm __volatile ("jsr a6@(-0x96)"
- : "=r" (_res)
- : "r" (_base)
- : "a0", "a1", "d0", "d1", "memory");
- return(_res);
-}
-
-static __inline u_long Supervisor(u_long (*userfunc)(void))
-{
- register u_long _res __asm("d0");
- register const struct ExecBase *_base __asm("a6") = SysBase;
- register u_long (*d7)() __asm("d7") = userfunc;
-
- __asm __volatile ("exg d7,a5;"
- "jsr a6@(-0x1e);"
- "exg d7,a5"
- : "=r" (_res)
- : "r" (_base), "r" (d7)
- : "a0", "a1", "d0", "d1", "memory");
- return(_res);
-}
-
-
-extern const struct ExpansionBase *ExpansionBase;
-
-#define LVOFindConfigDev (-0x48)
-
-static __inline struct ConfigDev *FindConfigDev(struct ConfigDev *oldConfigDev,
- long manufacturer, long product)
-{
- register struct ConfigDev *_res __asm("d0");
- register const struct ExpansionBase *_base __asm("a6") = ExpansionBase;
- register struct ConfigDev *a0 __asm("a0") = oldConfigDev;
- register long d0 __asm("d0") = manufacturer;
- register long d1 __asm("d1") = product;
-
- __asm __volatile ("jsr a6@(-0x48)"
- : "=r" (_res)
- : "r" (_base), "r" (a0), "r" (d0), "r" (d1)
- : "a0", "a1", "d0", "d1", "memory");
- return(_res);
-}
-
-
-extern const struct GfxBase *GfxBase;
-
-#define LVOLoadView (-0xde)
-#define LVOSetChipRev (-0x378)
-
-static __inline void LoadView(struct View *view)
-{
- register const struct GfxBase *_base __asm("a6") = GfxBase;
- register struct View *a1 __asm("a1") = view;
-
- __asm __volatile ("jsr a6@(-0xde)"
- : /* no output */
- : "r" (_base), "r" (a1)
- : "a0", "a1", "d0", "d1", "memory");
-}
-
-static __inline u_long SetChipRev(u_long want)
-{
- register u_long _res __asm("d0");
- register const struct GfxBase *_base __asm("a6") = GfxBase;
- register u_long d0 __asm("d0") = want;
-
- __asm __volatile ("jsr a6@(-0x378)"
- : "=r" (_res)
- : "r" (_base), "r" (d0)
- : "a0", "a1", "d0", "d1", "memory");
- return(_res);
-}
-
-
- /*
- * Bootstrap Support Functions
- */
-
-static __inline void disable_mmu(void)
-{
- if (SysBase->AttnFlags & AFF_68040)
- __asm __volatile ("moveq #0,d0;"
- ".long 0x4e7b0003;" /* movec d0,tc */
- ".long 0x4e7b0004;" /* movec d0,itt0 */
- ".long 0x4e7b0005;" /* movec d0,itt1 */
- ".long 0x4e7b0006;" /* movec d0,dtt0 */
- ".long 0x4e7b0007" /* movec d0,dtt1 */
- : /* no outputs */
- : /* no inputs */
- : "d0");
- else {
- __asm __volatile ("subl #4,sp;"
- "pmove tc,sp@;"
- "bclr #7,sp@;"
- "pmove sp@,tc;"
- "addl #4,sp");
- if (SysBase->AttnFlags & AFF_68030)
- __asm __volatile ("clrl sp@-;"
- ".long 0xf0170800;" /* pmove sp@,tt0 */
- ".long 0xf0170c00;" /* pmove sp@,tt1 */
- "addql #4,sp");
- }
-}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov