1/* $NetBSD: prom.S,v 1.3 2008/04/28 20:23:29 martin Exp $ */ 2 3/* 4 * Copyright (c) 2000 The NetBSD Foundation, Inc. 5 * All rights reserved. 6 * 7 * This code is derived from software contributed to The NetBSD Foundation 8 * by Wayne Knowles 9 * 10 * Redistribution and use in source and binary forms, with or without 11 * modification, are permitted provided that the following conditions 12 * are met: 13 * 1. Redistributions of source code must retain the above copyright 14 * notice, this list of conditions and the following disclaimer. 15 * 2. Redistributions in binary form must reproduce the above copyright 16 * notice, this list of conditions and the following disclaimer in the 17 * documentation and/or other materials provided with the distribution. 18 * 19 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 20 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 21 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 22 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 23 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 24 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 25 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 26 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 27 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 28 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 29 * POSSIBILITY OF SUCH DAMAGE. 30 */ 31 32#include <mips/asm.h> 33#include <mips/cpuregs.h> 34#include <machine/prom.h> 35 36 37LEAF(prom_restart) 38 li v0, MIPS_PROM_RESTART 39 j v0 40 move a0, zero 41END(prom_restart) 42 43NESTED(prom_open, CALLFRAME_SIZ, ra) 44 .mask 0x80000000, -4 45 subu sp, sp, CALLFRAME_SIZ 46 sw ra, CALLFRAME_RA(sp) 47 li v0, MIPS_PROM_OPEN 48 jal v0 49 nop 50 /* 51 * On return t0 contains our _iob structure 52 * v0 contains the file descriptor number 53 */ 54 la t4, saiob 55 sll t5, v0, 2 56 add t4, t4, t5 57 lw ra, CALLFRAME_RA(sp) 58 addu sp, sp, CALLFRAME_SIZ 59 sw t0, 0(t4) 60 j ra 61 nop 62END(prom_open) 63 64#ifndef LIBSA_NO_DEV_CLOSE 65LEAF(prom_close) 66 li v0, MIPS_PROM_CLOSE 67 j v0 68 nop 69END(prom_close) 70#endif 71 72LEAF(prom_read) 73 li v0, MIPS_PROM_READ 74 j v0 75 nop 76END(prom_read) 77 78#ifndef LIBSA_NO_FS_WRITE 79LEAF(prom_write) 80 li v0, MIPS_PROM_WRITE 81 j v0 82 nop 83END(prom_write) 84#endif 85 86LEAF(printf) 87 li v0, MIPS_PROM_PRINTF 88 j v0 89 nop 90END(printf) 91 92#ifndef NO_GETCHAR 93LEAF(getchar) 94 li v0, MIPS_PROM_GETCHAR 95 j v0 96 nop 97END(getchar) 98 99LEAF(putchar) 100 li v0, MIPS_PROM_PUTCHAR 101 j v0 102 nop 103END(putchar) 104#endif 105 106 .sdata 107 108 .global saiob 109saiob: .space 8*4 110 111