summaryrefslogtreecommitdiff
path: root/sys/arch/alpha/include/autoconf.h
diff options
context:
space:
mode:
authorArtur Grabowski <art@cvs.openbsd.org>2000-11-08 16:01:27 +0000
committerArtur Grabowski <art@cvs.openbsd.org>2000-11-08 16:01:27 +0000
commitfd438f5ca0b94ed3d88d133b522e0103dee486b8 (patch)
tree6d0a5d2c22adef30dd9a9bb3ce9d92ff9ebc024a /sys/arch/alpha/include/autoconf.h
parent979a51167c72e38f0c094528a264a7fccca6d1c5 (diff)
Merge in big portions of the improvements NetBSD did to their alpha port.
Highlights: UVM, PMAP_NEW, bus_dma (only on some buses for now), new hardware support, possiblity for ELF, etc, etc. Too much to mention. This is still work in progress. video consoles might be broken, otherwise we have basically the same functionality as before plus more.
Diffstat (limited to 'sys/arch/alpha/include/autoconf.h')
-rw-r--r--sys/arch/alpha/include/autoconf.h117
1 files changed, 72 insertions, 45 deletions
diff --git a/sys/arch/alpha/include/autoconf.h b/sys/arch/alpha/include/autoconf.h
index 47566f2798f..9919fe117c2 100644
--- a/sys/arch/alpha/include/autoconf.h
+++ b/sys/arch/alpha/include/autoconf.h
@@ -1,5 +1,4 @@
-/* $OpenBSD: autoconf.h,v 1.7 1997/01/24 19:57:08 niklas Exp $ */
-/* $NetBSD: autoconf.h,v 1.6 1996/11/13 21:13:17 cgd Exp $ */
+/* $NetBSD: autoconf.h,v 1.19 2000/06/08 03:10:06 thorpej Exp $ */
/*
* Copyright (c) 1994, 1995, 1996 Carnegie-Mellon University.
@@ -32,42 +31,10 @@
* Machine-dependent structures of autoconfiguration
*/
-struct confargs;
-
-typedef int (*intr_handler_t) __P((void *));
-
-struct abus {
- struct device *ab_dv; /* back-pointer to device */
- int ab_type; /* bus type (see below) */
- void (*ab_intr_establish) /* bus's set-handler function */
- __P((struct confargs *, intr_handler_t, void *));
- void (*ab_intr_disestablish) /* bus's unset-handler function */
- __P((struct confargs *));
- caddr_t (*ab_cvtaddr) /* convert slot/offset to address */
- __P((struct confargs *));
- int (*ab_matchname) /* see if name matches driver */
- __P((struct confargs *, char *));
-};
-
-#define BUS_MAIN 1 /* mainbus */
-#define BUS_TC 2 /* TurboChannel */
-#define BUS_ASIC 3 /* IOCTL ASIC; under TurboChannel */
-#define BUS_TCDS 4 /* TCDS ASIC; under TurboChannel */
-
-#define BUS_INTR_ESTABLISH(ca, handler, val) \
- (*(ca)->ca_bus->ab_intr_establish)((ca), (handler), (val))
-#define BUS_INTR_DISESTABLISH(ca) \
- (*(ca)->ca_bus->ab_intr_establish)(ca)
-#define BUS_CVTADDR(ca) \
- (*(ca)->ca_bus->ab_cvtaddr)(ca)
-#define BUS_MATCHNAME(ca, name) \
- (*(ca)->ca_bus->ab_matchname)((ca), (name))
-
-struct confargs {
- char *ca_name; /* Device name. */
- int ca_slot; /* Device slot. */
- int ca_offset; /* Offset into slot. */
- struct abus *ca_bus; /* bus device resides on. */
+struct mainbus_attach_args {
+ const char *ma_name; /* device name */
+ int ma_slot; /* CPU "slot" number; only meaningful
+ when attaching CPUs */
};
struct bootdev_data {
@@ -81,14 +48,74 @@ struct bootdev_data {
char *ctrl_dev_type;
};
-void configure __P((void));
-void device_register __P((struct device *, void *));
-void dumpconf __P((void));
+/*
+ * The boot program passes a pointer (in the boot environment virtual
+ * address address space; "BEVA") to a bootinfo to the kernel using
+ * the following convention:
+ *
+ * a0 contains first free page frame number
+ * a1 contains page number of current level 1 page table
+ * if a2 contains BOOTINFO_MAGIC and a4 is nonzero:
+ * a3 contains pointer (BEVA) to bootinfo
+ * a4 contains bootinfo version number
+ * if a2 contains BOOTINFO_MAGIC and a4 contains 0 (backward compat):
+ * a3 contains pointer (BEVA) to bootinfo version
+ * (u_long), then the bootinfo
+ */
+
+#define BOOTINFO_MAGIC 0xdeadbeeffeedface
+
+struct bootinfo_v1 {
+ u_long ssym; /* 0: start of kernel sym table */
+ u_long esym; /* 8: end of kernel sym table */
+ char boot_flags[64]; /* 16: boot flags */
+ char booted_kernel[64]; /* 80: name of booted kernel */
+ void *hwrpb; /* 144: hwrpb pointer (BEVA) */
+ u_long hwrpbsize; /* 152: size of hwrpb data */
+ int (*cngetc)(void); /* 160: console getc pointer */
+ void (*cnputc)(int); /* 168: console putc pointer */
+ void (*cnpollc)(int); /* 176: console pollc pointer */
+ u_long pad[9]; /* 184: rsvd for future use */
+ /* 256: total size */
+};
+
+/*
+ * Kernel-internal structure used to hold important bits of boot
+ * information. NOT to be used by boot blocks.
+ *
+ * Note that not all of the fields from the bootinfo struct(s)
+ * passed by the boot blocks aren't here (because they're not currently
+ * used by the kernel!). Fields here which aren't supplied by the
+ * bootinfo structure passed by the boot blocks are supposed to be
+ * filled in at startup with sane contents.
+ */
+struct bootinfo_kernel {
+ u_long ssym; /* start of syms */
+ u_long esym; /* end of syms */
+ u_long hwrpb_phys; /* hwrpb physical address */
+ u_long hwrpb_size; /* size of hwrpb data */
+ char boot_flags[64]; /* boot flags */
+ char booted_kernel[64]; /* name of booted kernel */
+ char booted_dev[64]; /* name of booted device */
+};
-#ifdef EVCNT_COUNTERS
-extern struct evcnt clock_intr_evcnt;
-#endif
+/*
+ * Lookup table entry for Alpha system variations.
+ */
+struct alpha_variation_table {
+ u_int64_t avt_variation; /* variation, from HWRPB */
+ const char *avt_model; /* model string */
+};
-extern struct device *booted_device;
+#ifdef _KERNEL
extern int booted_partition;
extern struct bootdev_data *bootdev_data;
+extern struct bootinfo_kernel bootinfo;
+
+const char *alpha_variation_name(u_int64_t,
+ const struct alpha_variation_table *);
+const char *alpha_unknown_sysname(void);
+
+void configure __P((void));
+void device_register __P((struct device *, void *));
+#endif /* _KERNEL */