1*e5c09b19Sthorpej /* $NetBSD: sun68k.c,v 1.22 2019/05/07 04:35:31 thorpej Exp $ */
2878d42b1Slukem
3878d42b1Slukem /*-
4966b42a3Slukem * Copyright (c) 2002 The NetBSD Foundation, Inc.
5878d42b1Slukem * All rights reserved.
6878d42b1Slukem *
7878d42b1Slukem * This code is derived from software contributed to The NetBSD Foundation
8966b42a3Slukem * by Luke Mewburn.
9878d42b1Slukem *
10878d42b1Slukem * Redistribution and use in source and binary forms, with or without
11878d42b1Slukem * modification, are permitted provided that the following conditions
12878d42b1Slukem * are met:
13878d42b1Slukem * 1. Redistributions of source code must retain the above copyright
14878d42b1Slukem * notice, this list of conditions and the following disclaimer.
15878d42b1Slukem * 2. Redistributions in binary form must reproduce the above copyright
16878d42b1Slukem * notice, this list of conditions and the following disclaimer in the
17878d42b1Slukem * documentation and/or other materials provided with the distribution.
18878d42b1Slukem *
19878d42b1Slukem * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
20878d42b1Slukem * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
21878d42b1Slukem * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22878d42b1Slukem * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
23878d42b1Slukem * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24878d42b1Slukem * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25878d42b1Slukem * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26878d42b1Slukem * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27878d42b1Slukem * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28878d42b1Slukem * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29878d42b1Slukem * POSSIBILITY OF SUCH DAMAGE.
30878d42b1Slukem */
31878d42b1Slukem
32171d6532Slukem #if HAVE_NBTOOL_CONFIG_H
33171d6532Slukem #include "nbtool_config.h"
344887cf34Stv #endif
354887cf34Stv
36171d6532Slukem #include <sys/cdefs.h>
37171d6532Slukem #if !defined(__lint)
38*e5c09b19Sthorpej __RCSID("$NetBSD: sun68k.c,v 1.22 2019/05/07 04:35:31 thorpej Exp $");
39171d6532Slukem #endif /* !__lint */
40171d6532Slukem
41878d42b1Slukem #include <sys/param.h>
42878d42b1Slukem
43878d42b1Slukem #include <assert.h>
44878d42b1Slukem #include <err.h>
45878d42b1Slukem #include <stdio.h>
46878d42b1Slukem
472fddf94bSlukem #include "installboot.h"
48878d42b1Slukem
49cce659e2Sdsl static int sun68k_clearboot(ib_params *);
50cce659e2Sdsl static int sun68k_setboot(ib_params *);
51cce659e2Sdsl
52*e5c09b19Sthorpej struct ib_mach ib_mach_sun2 = {
53*e5c09b19Sthorpej .name = "sun2",
54*e5c09b19Sthorpej .setboot = sun68k_setboot,
55*e5c09b19Sthorpej .clearboot = sun68k_clearboot,
56*e5c09b19Sthorpej .editboot = no_editboot,
57*e5c09b19Sthorpej .valid_flags = IB_STAGE2START,
58*e5c09b19Sthorpej };
59cce659e2Sdsl
60*e5c09b19Sthorpej struct ib_mach ib_mach_sun3 = {
61*e5c09b19Sthorpej .name = "sun3",
62*e5c09b19Sthorpej .setboot = sun68k_setboot,
63*e5c09b19Sthorpej .clearboot = sun68k_clearboot,
64*e5c09b19Sthorpej .editboot = no_editboot,
65*e5c09b19Sthorpej .valid_flags = IB_STAGE2START,
66*e5c09b19Sthorpej };
67cce659e2Sdsl
68966b42a3Slukem static struct bbinfo_params bbparams = {
69966b42a3Slukem SUN68K_BBINFO_MAGIC,
70966b42a3Slukem SUN68K_BOOT_BLOCK_OFFSET,
71966b42a3Slukem SUN68K_BOOT_BLOCK_BLOCKSIZE,
72966b42a3Slukem SUN68K_BOOT_BLOCK_MAX_SIZE,
73966b42a3Slukem 0,
74d22f5cffSlukem BBINFO_BIG_ENDIAN,
75966b42a3Slukem };
76966b42a3Slukem
77cce659e2Sdsl static int
sun68k_clearboot(ib_params * params)78878d42b1Slukem sun68k_clearboot(ib_params *params)
79878d42b1Slukem {
80878d42b1Slukem
81878d42b1Slukem assert(params != NULL);
82878d42b1Slukem
83d22f5cffSlukem return (shared_bbinfo_clearboot(params, &bbparams, NULL));
84878d42b1Slukem }
85878d42b1Slukem
86cce659e2Sdsl static int
sun68k_setboot(ib_params * params)87878d42b1Slukem sun68k_setboot(ib_params *params)
88878d42b1Slukem {
89878d42b1Slukem
90878d42b1Slukem assert(params != NULL);
91878d42b1Slukem
92966b42a3Slukem return (shared_bbinfo_setboot(params, &bbparams, NULL));
93878d42b1Slukem }
94