xref: /netbsd/sys/arch/alpha/include/autoconf.h (revision 6550d01e)
1 /* $NetBSD: autoconf.h,v 1.22 2005/12/11 12:16:16 christos Exp $ */
2 
3 /*
4  * Copyright (c) 1994, 1995, 1996 Carnegie-Mellon University.
5  * All rights reserved.
6  *
7  * Author: Chris G. Demetriou
8  *
9  * Permission to use, copy, modify and distribute this software and
10  * its documentation is hereby granted, provided that both the copyright
11  * notice and this permission notice appear in all copies of the
12  * software, derivative works or modified versions, and any portions
13  * thereof, and that both notices appear in supporting documentation.
14  *
15  * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
16  * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND
17  * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
18  *
19  * Carnegie Mellon requests users of this software to return to
20  *
21  *  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
22  *  School of Computer Science
23  *  Carnegie Mellon University
24  *  Pittsburgh PA 15213-3890
25  *
26  * any improvements or extensions that they make and grant Carnegie the
27  * rights to redistribute these changes.
28  */
29 
30 /*
31  * Machine-dependent structures for autoconfiguration
32  */
33 
34 struct mainbus_attach_args {
35 	const char *ma_name;		/* device name */
36 	int	    ma_slot;		/* CPU "slot" number; only meaningful
37 					   when attaching CPUs */
38 };
39 
40 struct bootdev_data {
41 	char	*protocol;
42 	int	bus;
43 	int	slot;
44 	int	channel;
45 	char	*remote_address;
46 	int	unit;
47 	int	boot_dev_type;
48 	char	*ctrl_dev_type;
49 };
50 
51 /*
52  * The boot program passes a pointer (in the boot environment virtual
53  * address address space; "BEVA") to a bootinfo to the kernel using
54  * the following convention:
55  *
56  *	a0 contains first free page frame number
57  *	a1 contains page number of current level 1 page table
58  *	if a2 contains BOOTINFO_MAGIC and a4 is nonzero:
59  *		a3 contains pointer (BEVA) to bootinfo
60  *		a4 contains bootinfo version number
61  *	if a2 contains BOOTINFO_MAGIC and a4 contains 0 (backward compat):
62  *		a3 contains pointer (BEVA) to bootinfo version
63  *		    (u_long), then the bootinfo
64  */
65 
66 #define	BOOTINFO_MAGIC			0xdeadbeeffeedface
67 
68 struct bootinfo_v1 {
69 	u_long	ssym;			/* 0: start of kernel sym table	*/
70 	u_long	esym;			/* 8: end of kernel sym table	*/
71 	char	boot_flags[64];		/* 16: boot flags		*/
72 	char	booted_kernel[64];	/* 80: name of booted kernel	*/
73 	void	*hwrpb;			/* 144: hwrpb pointer (BEVA)	*/
74 	u_long	hwrpbsize;		/* 152: size of hwrpb data	*/
75 	int	(*cngetc)(void);	/* 160: console getc pointer	*/
76 	void	(*cnputc)(int);		/* 168: console putc pointer	*/
77 	void	(*cnpollc)(int);	/* 176: console pollc pointer	*/
78 	u_long	pad[9];			/* 184: rsvd for future use	*/
79 					/* 256: total size		*/
80 };
81 
82 /*
83  * Kernel-internal structure used to hold important bits of boot
84  * information.  NOT to be used by boot blocks.
85  *
86  * Note that not all of the fields from the bootinfo struct(s)
87  * passed by the boot blocks aren't here (because they're not currently
88  * used by the kernel!).  Fields here which aren't supplied by the
89  * bootinfo structure passed by the boot blocks are supposed to be
90  * filled in at startup with sane contents.
91  */
92 struct bootinfo_kernel {
93 	u_long	ssym;			/* start of syms */
94 	u_long	esym;			/* end of syms */
95 	u_long	hwrpb_phys;		/* hwrpb physical address */
96 	u_long	hwrpb_size;		/* size of hwrpb data */
97 	char	boot_flags[64];		/* boot flags */
98 	char	booted_kernel[64];	/* name of booted kernel */
99 	char	booted_dev[64];		/* name of booted device */
100 };
101 
102 /*
103  * Lookup table entry for Alpha system variations.
104  */
105 struct alpha_variation_table {
106 	u_int64_t	avt_variation;	/* variation, from HWRPB */
107 	const char	*avt_model;	/* model string */
108 };
109 
110 #ifdef _KERNEL
111 extern struct bootdev_data *bootdev_data;
112 extern struct bootinfo_kernel bootinfo;
113 
114 const char *alpha_variation_name(u_int64_t,
115     const struct alpha_variation_table *);
116 const char *alpha_unknown_sysname(void);
117 #endif /* _KERNEL */
118