1/* $NetBSD: rmheader.S,v 1.1 2002/03/24 15:47:25 bjh21 Exp $ */ 2 3/*- 4 * Copyright (c) 2001 Ben Harris 5 * All rights reserved. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions 9 * are met: 10 * 1. Redistributions of source code must retain the above copyright 11 * notice, this list of conditions and the following disclaimer. 12 * 2. Redistributions in binary form must reproduce the above copyright 13 * notice, this list of conditions and the following disclaimer in the 14 * documentation and/or other materials provided with the distribution. 15 * 3. The name of the author may not be used to endorse or promote products 16 * derived from this software without specific prior written permission. 17 * 18 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 19 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 20 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 22 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 23 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 24 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 27 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 */ 29 30/* 31 * Relocatable module header for boot26. 32 */ 33 34#include <riscoscalls.h> 35 36rmbase: 37 b rmstart /* Start code */ 38 .word 0 /* Initialisation code */ 39 .word 0 /* Finalisation code */ 40 .word 0 /* Service call handler */ 41 .word rmtitle - rmbase /* Title string */ 42 .word rmhelp - rmbase /* Help string */ 43 .word rmcmdtbl - rmbase /* Help and command keyword table */ 44 45rmtitle: 46 .asciz "boot26" 47 .align 48rmstart: 49 /* 50 * This entry point is called when we're started up as an application, 51 * so we're allowed to use application workspace. This is good, 52 * because most of our code is linked to run at 0x8000. 53 */ 54 mov r0, #0x8000 55 adr r1, rmbase 56 ldr r2, Lsize 57Lcopyloop: 58 ldr r3, [r1], #4 59 str r3, [r0], #4 60 subs r2, r2, #4 61 bgt Lcopyloop 62 ldr r0, Lstart 63 mov pc, r0 64 65Lsize: 66 .word end - rmbase 67Lstart: 68 .word _start 69 70rmcmdtbl: 71 .asciz "boot26" /* Command text */ 72 .align 73 .word rmcmd_boot26 - rmbase /* Command code */ 74 .byte 0x00 /* Min 0 parameters */ 75 .byte 0x00 /* No GSTransed parameters */ 76 .byte 0xff /* Max 255 parameters */ 77 .byte 0x00 /* Normal command */ 78 .word 0 /* No syntax message */ 79 .word 0 /* No help message */ 80 81rmcmd_boot26: 82 /* We're called with r0 -> command tail. */ 83 stmfd r13!, {r14} 84 mov r2, r0 85 mov r0, #2 86 adr r1, rmtitle 87 swi XOS_Module 88 ldmfd r13!, {pc} 89