summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/arch/hppa/dev/apic.c6
-rw-r--r--sys/arch/hppa/dev/astro.c3
-rw-r--r--sys/arch/hppa/dev/elroy.c156
-rw-r--r--sys/arch/hppa/dev/mongoose.c53
-rw-r--r--sys/arch/hppa/hppa/autoconf.c4
-rw-r--r--sys/arch/hppa/hppa/db_disasm.c4
-rw-r--r--sys/arch/hppa/hppa/hpux_machdep.c3
-rw-r--r--sys/arch/hppa/hppa/intr.c4
-rw-r--r--sys/arch/hppa/hppa/machdep.c4
-rw-r--r--sys/arch/hppa/hppa/mainbus.c148
-rw-r--r--sys/arch/hppa/hppa/pmap.c11
-rw-r--r--sys/arch/hppa/hppa/trap.c9
12 files changed, 363 insertions, 42 deletions
diff --git a/sys/arch/hppa/dev/apic.c b/sys/arch/hppa/dev/apic.c
index 5870a29ec88..3cffc4bf40e 100644
--- a/sys/arch/hppa/dev/apic.c
+++ b/sys/arch/hppa/dev/apic.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: apic.c,v 1.9 2010/04/01 22:53:49 kettenis Exp $ */
+/* $OpenBSD: apic.c,v 1.10 2010/05/24 15:04:53 deraadt Exp $ */
/*
* Copyright (c) 2005 Michael Shalayeff
@@ -77,6 +77,10 @@ u_int32_t apic_get_int_ent0(struct elroy_softc *, int);
void apic_dump(struct elroy_softc *);
#endif
+void apic_write(volatile struct elroy_regs *r, u_int32_t reg,
+ u_int32_t val);
+u_int32_t apic_read(volatile struct elroy_regs *r, u_int32_t reg);
+
void
apic_write(volatile struct elroy_regs *r, u_int32_t reg, u_int32_t val)
{
diff --git a/sys/arch/hppa/dev/astro.c b/sys/arch/hppa/dev/astro.c
index 70318e804a4..0e326375297 100644
--- a/sys/arch/hppa/dev/astro.c
+++ b/sys/arch/hppa/dev/astro.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: astro.c,v 1.10 2010/04/29 13:48:29 jsing Exp $ */
+/* $OpenBSD: astro.c,v 1.11 2010/05/24 15:04:53 deraadt Exp $ */
/*
* Copyright (c) 2007 Mark Kettenis
@@ -165,6 +165,7 @@ int iommu_dvmamap_create(void *, bus_size_t, int, bus_size_t, bus_size_t,
void iommu_dvmamap_destroy(void *, bus_dmamap_t);
int iommu_dvmamap_load(void *, bus_dmamap_t, void *, bus_size_t,
struct proc *, int);
+int iommu_iomap_load_map(struct astro_softc *, bus_dmamap_t, int);
int iommu_dvmamap_load_mbuf(void *, bus_dmamap_t, struct mbuf *, int);
int iommu_dvmamap_load_uio(void *, bus_dmamap_t, struct uio *, int);
int iommu_dvmamap_load_raw(void *, bus_dmamap_t, bus_dma_segment_t *,
diff --git a/sys/arch/hppa/dev/elroy.c b/sys/arch/hppa/dev/elroy.c
index 207303f855d..2d72384e6fc 100644
--- a/sys/arch/hppa/dev/elroy.c
+++ b/sys/arch/hppa/dev/elroy.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: elroy.c,v 1.5 2009/03/30 21:24:57 kettenis Exp $ */
+/* $OpenBSD: elroy.c,v 1.6 2010/05/24 15:04:53 deraadt Exp $ */
/*
* Copyright (c) 2005 Michael Shalayeff
@@ -57,6 +57,129 @@ struct cfdriver elroy_cd = {
NULL, "elroy", DV_DULL
};
+void elroy_attach_hook(struct device *parent, struct device *self,
+ struct pcibus_attach_args *pba);
+int elroy_maxdevs(void *v, int bus);
+pcitag_t elroy_make_tag(void *v, int bus, int dev, int func);
+void elroy_decompose_tag(void *v, pcitag_t tag, int *bus,
+ int *dev, int *func);
+pcireg_t elroy_conf_read(void *v, pcitag_t tag, int reg);
+void elroy_conf_write(void *v, pcitag_t tag, int reg,
+ pcireg_t data);
+int elroy_iomap(void *v, bus_addr_t bpa, bus_size_t size,
+ int flags, bus_space_handle_t *bshp);
+int elroy_memmap(void *v, bus_addr_t bpa, bus_size_t size,
+ int flags, bus_space_handle_t *bshp);
+int elroy_subregion(void *v, bus_space_handle_t bsh,
+ bus_size_t offset, bus_size_t size,
+ bus_space_handle_t *nbshp);
+int elroy_ioalloc(void *v, bus_addr_t rstart, bus_addr_t rend,
+ bus_size_t size, bus_size_t align, bus_size_t boundary,
+ int flags, bus_addr_t *addrp, bus_space_handle_t *bshp);
+int elroy_memalloc(void *v, bus_addr_t rstart, bus_addr_t rend,
+ bus_size_t size, bus_size_t align, bus_size_t boundary,
+ int flags, bus_addr_t *addrp, bus_space_handle_t *bshp);
+void elroy_unmap(void *v, bus_space_handle_t bsh,
+ bus_size_t size);
+void elroy_free(void *v, bus_space_handle_t bh, bus_size_t size);
+void elroy_barrier(void *v, bus_space_handle_t h, bus_size_t o,
+ bus_size_t l, int op);
+void * elroy_alloc_parent(struct device *self,
+ struct pci_attach_args *pa, int io);
+void * elroy_vaddr(void *v, bus_space_handle_t h);
+u_int8_t elroy_r1(void *v, bus_space_handle_t h, bus_size_t o);
+u_int16_t elroy_r2(void *v, bus_space_handle_t h, bus_size_t o);
+u_int32_t elroy_r4(void *v, bus_space_handle_t h, bus_size_t o);
+u_int64_t elroy_r8(void *v, bus_space_handle_t h, bus_size_t o);
+void elroy_w1(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int8_t vv);
+void elroy_w2(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int16_t vv);
+void elroy_w4(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int32_t vv);
+void elroy_w8(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int64_t vv);
+void elroy_rm_1(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int8_t *a, bus_size_t c);
+void elroy_rm_2(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int16_t *a, bus_size_t c);
+void elroy_rm_4(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int32_t *a, bus_size_t c);
+void elroy_rm_8(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int64_t *a, bus_size_t c);
+void elroy_wm_1(void *v, bus_space_handle_t h, bus_size_t o,
+ const u_int8_t *a, bus_size_t c);
+void elroy_wm_2(void *v, bus_space_handle_t h, bus_size_t o,
+ const u_int16_t *a, bus_size_t c);
+void elroy_wm_4(void *v, bus_space_handle_t h, bus_size_t o,
+ const u_int32_t *a, bus_size_t c);
+void elroy_wm_8(void *v, bus_space_handle_t h, bus_size_t o,
+ const u_int64_t *a, bus_size_t c);
+void elroy_sm_1(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int8_t vv, bus_size_t c);
+void elroy_sm_2(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int16_t vv, bus_size_t c);
+void elroy_sm_4(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int32_t vv, bus_size_t c);
+void elroy_sm_8(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int64_t vv, bus_size_t c);
+void elroy_rrm_2(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int8_t *a, bus_size_t c);
+void elroy_rrm_4(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int8_t *a, bus_size_t c);
+void elroy_rrm_8(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int8_t *a, bus_size_t c);
+void elroy_wrm_2(void *v, bus_space_handle_t h, bus_size_t o,
+ const u_int8_t *a, bus_size_t c);
+void elroy_wrm_4(void *v, bus_space_handle_t h, bus_size_t o,
+ const u_int8_t *a, bus_size_t c);
+void elroy_wrm_8(void *v, bus_space_handle_t h, bus_size_t o,
+ const u_int8_t *a, bus_size_t c);
+void elroy_rr_1(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int8_t *a, bus_size_t c);
+void elroy_rr_2(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int16_t *a, bus_size_t c);
+void elroy_rr_4(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int32_t *a, bus_size_t c);
+void elroy_rr_8(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int64_t *a, bus_size_t c);
+void elroy_wr_1(void *v, bus_space_handle_t h, bus_size_t o,
+ const u_int8_t *a, bus_size_t c);
+void elroy_wr_2(void *v, bus_space_handle_t h, bus_size_t o,
+ const u_int16_t *a, bus_size_t c);
+void elroy_wr_4(void *v, bus_space_handle_t h, bus_size_t o,
+ const u_int32_t *a, bus_size_t c);
+void elroy_wr_8(void *v, bus_space_handle_t h, bus_size_t o,
+ const u_int64_t *a, bus_size_t c);
+void elroy_rrr_2(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int8_t *a, bus_size_t c);
+void elroy_rrr_4(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int8_t *a, bus_size_t c);
+void elroy_rrr_8(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int8_t *a, bus_size_t c);
+void elroy_wrr_2(void *v, bus_space_handle_t h, bus_size_t o,
+ const u_int8_t *a, bus_size_t c);
+void elroy_wrr_4(void *v, bus_space_handle_t h, bus_size_t o,
+ const u_int8_t *a, bus_size_t c);
+void elroy_wrr_8(void *v, bus_space_handle_t h, bus_size_t o,
+ const u_int8_t *a, bus_size_t c);
+void elroy_sr_1(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int8_t vv, bus_size_t c);
+void elroy_sr_2(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int16_t vv, bus_size_t c);
+void elroy_sr_4(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int32_t vv, bus_size_t c);
+void elroy_sr_8(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int64_t vv, bus_size_t c);
+void elroy_cp_1(void *v, bus_space_handle_t h1, bus_size_t o1,
+ bus_space_handle_t h2, bus_size_t o2, bus_size_t c);
+void elroy_cp_2(void *v, bus_space_handle_t h1, bus_size_t o1,
+ bus_space_handle_t h2, bus_size_t o2, bus_size_t c);
+void elroy_cp_4(void *v, bus_space_handle_t h1, bus_size_t o1,
+ bus_space_handle_t h2, bus_size_t o2, bus_size_t c);
+void elroy_cp_8(void *v, bus_space_handle_t h1, bus_size_t o1,
+ bus_space_handle_t h2, bus_size_t o2, bus_size_t c);
+
int
elroy_match(struct device *parent, void *cfdata, void *aux)
{
@@ -927,6 +1050,35 @@ const struct hppa_bus_space_tag elroy_iomemt = {
elroy_cp_1, elroy_cp_2, elroy_cp_4, elroy_cp_8
};
+int elroy_dmamap_create(void *v, bus_size_t size,
+ int nsegments, bus_size_t maxsegsz,
+ bus_size_t boundary, int flags,
+ bus_dmamap_t *dmamp);
+void elroy_dmamap_destroy(void *v, bus_dmamap_t map);
+int elroy_dmamap_load(void *v, bus_dmamap_t map,
+ void *addr, bus_size_t size,
+ struct proc *p, int flags);
+int elroy_dmamap_load_mbuf(void *v, bus_dmamap_t map,
+ struct mbuf *m, int flags);
+int elroy_dmamap_load_uio(void *v, bus_dmamap_t map,
+ struct uio *uio, int flags);
+int elroy_dmamap_load_raw(void *v, bus_dmamap_t map,
+ bus_dma_segment_t *segs,
+ int nsegs, bus_size_t size, int flags);
+void elroy_dmamap_unload(void *v, bus_dmamap_t map);
+void elroy_dmamap_sync(void *v, bus_dmamap_t map, bus_addr_t off,
+ bus_size_t len, int ops);
+int elroy_dmamem_alloc(void *v, bus_size_t size,
+ bus_size_t alignment, bus_size_t boundary,
+ bus_dma_segment_t *segs, int nsegs, int *rsegs, int flags);
+void elroy_dmamem_free(void *v, bus_dma_segment_t *segs,
+ int nsegs);
+int elroy_dmamem_map(void *v, bus_dma_segment_t *segs, int nsegs,
+ size_t size, caddr_t *kvap, int flags);
+void elroy_dmamem_unmap(void *v, caddr_t kva, size_t size);
+paddr_t elroy_dmamem_mmap(void *v, bus_dma_segment_t *segs,
+ int nsegs, off_t off, int prot, int flags);
+
int
elroy_dmamap_create(void *v, bus_size_t size, int nsegments,
bus_size_t maxsegsz, bus_size_t boundary, int flags, bus_dmamap_t *dmamp)
@@ -1067,6 +1219,8 @@ const struct hppa_pci_chipset_tag elroy_pc = {
#endif
};
+int elroy_print(void *aux, const char *pnp);
+
int
elroy_print(void *aux, const char *pnp)
{
diff --git a/sys/arch/hppa/dev/mongoose.c b/sys/arch/hppa/dev/mongoose.c
index be66db5a73d..d4836daa796 100644
--- a/sys/arch/hppa/dev/mongoose.c
+++ b/sys/arch/hppa/dev/mongoose.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: mongoose.c,v 1.20 2010/04/27 18:29:39 kettenis Exp $ */
+/* $OpenBSD: mongoose.c,v 1.21 2010/05/24 15:04:53 deraadt Exp $ */
/*
* Copyright (c) 1998-2003 Michael Shalayeff
@@ -58,6 +58,57 @@ struct cfdriver mongoose_cd = {
NULL, "mongoose", DV_DULL
};
+void mg_eisa_attach_hook(struct device *parent,
+ struct device *self,
+ struct eisabus_attach_args *mg);
+int mg_intr_map(void *v, u_int irq, eisa_intr_handle_t *ehp);
+const char *mg_intr_string(void *v, int irq);
+void mg_isa_attach_hook(struct device *parent,
+ struct device *self,
+ struct isabus_attach_args *iba);
+void *mg_intr_establish(void *v, int irq, int type, int pri,
+ int (*handler)(void *), void *arg, const char *name);
+void mg_intr_disestablish(void *v, void *cookie);
+int mg_intr_check(void *v, int irq, int type);
+int mg_eisa_iomap(void *v, bus_addr_t addr, bus_size_t size,
+ int flags, bus_space_handle_t *bshp);
+int mg_eisa_memmap(void *v, bus_addr_t addr, bus_size_t size,
+ int flags, bus_space_handle_t *bshp);
+void mg_eisa_memunmap(void *v, bus_space_handle_t bsh,
+ bus_size_t size);
+void mg_isa_barrier(void *v, bus_space_handle_t h, bus_size_t o,
+ bus_size_t l, int op);
+u_int16_t mg_isa_r2(void *v, bus_space_handle_t h, bus_size_t o);
+u_int32_t mg_isa_r4(void *v, bus_space_handle_t h, bus_size_t o);
+void mg_isa_w2(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int16_t vv);
+void mg_isa_w4(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int32_t vv);
+void mg_isa_rm_2(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int16_t *a, bus_size_t c);
+void mg_isa_rm_4(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int32_t *a, bus_size_t c);
+void mg_isa_wm_2(void *v, bus_space_handle_t h, bus_size_t o,
+ const u_int16_t *a, bus_size_t c);
+void mg_isa_wm_4(void *v, bus_space_handle_t h, bus_size_t o,
+ const u_int32_t *a, bus_size_t c);
+void mg_isa_sm_2(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int16_t vv, bus_size_t c);
+void mg_isa_sm_4(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int32_t vv, bus_size_t c);
+void mg_isa_rr_2(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int16_t *a, bus_size_t c);
+void mg_isa_rr_4(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int32_t *a, bus_size_t c);
+void mg_isa_wr_2(void *v, bus_space_handle_t h, bus_size_t o,
+ const u_int16_t *a, bus_size_t c);
+void mg_isa_wr_4(void *v, bus_space_handle_t h, bus_size_t o,
+ const u_int32_t *a, bus_size_t c);
+void mg_isa_sr_2(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int16_t vv, bus_size_t c);
+void mg_isa_sr_4(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int32_t vv, bus_size_t c);
+
/* TODO: DMA guts */
void
diff --git a/sys/arch/hppa/hppa/autoconf.c b/sys/arch/hppa/hppa/autoconf.c
index ae9470906f8..0c3ce4a256f 100644
--- a/sys/arch/hppa/hppa/autoconf.c
+++ b/sys/arch/hppa/hppa/autoconf.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: autoconf.c,v 1.55 2010/05/06 14:39:52 jsing Exp $ */
+/* $OpenBSD: autoconf.c,v 1.56 2010/05/24 15:04:54 deraadt Exp $ */
/*
* Copyright (c) 1998-2003 Michael Shalayeff
@@ -172,6 +172,8 @@ dumpconf(void)
dumpsize = physmem;
}
+void print_devpath(const char *label, struct pz_device *pz);
+
void
print_devpath(const char *label, struct pz_device *pz)
{
diff --git a/sys/arch/hppa/hppa/db_disasm.c b/sys/arch/hppa/hppa/db_disasm.c
index b7e77da8a52..f4ecf0f5c08 100644
--- a/sys/arch/hppa/hppa/db_disasm.c
+++ b/sys/arch/hppa/hppa/db_disasm.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: db_disasm.c,v 1.18 2006/02/06 17:19:30 jmc Exp $ */
+/* $OpenBSD: db_disasm.c,v 1.19 2010/05/24 15:04:54 deraadt Exp $ */
/* TODO parse 64bit insns or rewrite */
@@ -1222,6 +1222,8 @@ static struct majoropcode majopcs[NMAJOPCS] = {
#undef NENTS
#undef ILLEG
+int iExInit(void);
+
/*--------------------------------------------------------------------------
* instruction$ExecutionInitialize - Initialize the instruction execution
* data structures.
diff --git a/sys/arch/hppa/hppa/hpux_machdep.c b/sys/arch/hppa/hppa/hpux_machdep.c
index ffcad83594b..fa22421b955 100644
--- a/sys/arch/hppa/hppa/hpux_machdep.c
+++ b/sys/arch/hppa/hppa/hpux_machdep.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: hpux_machdep.c,v 1.3 2009/07/29 18:31:11 kettenis Exp $ */
+/* $OpenBSD: hpux_machdep.c,v 1.4 2010/05/24 15:04:54 deraadt Exp $ */
/*
* Copyright (c) 2005 Michael Shalayeff
@@ -37,6 +37,7 @@
#include <compat/hpux/hpux_util.h>
#include <compat/hpux/hpux_syscallargs.h>
+#include <machine/hpux_machdep.h>
#include <machine/cpufunc.h>
#include <machine/frame.h>
diff --git a/sys/arch/hppa/hppa/intr.c b/sys/arch/hppa/hppa/intr.c
index 47df804c9ed..dee14c28721 100644
--- a/sys/arch/hppa/hppa/intr.c
+++ b/sys/arch/hppa/hppa/intr.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: intr.c,v 1.32 2010/05/21 15:24:29 jsing Exp $ */
+/* $OpenBSD: intr.c,v 1.33 2010/05/24 15:04:54 deraadt Exp $ */
/*
* Copyright (c) 2002-2004 Michael Shalayeff
@@ -252,6 +252,8 @@ cpu_intr_establish(int pri, int irq, int (*handler)(void *), void *arg,
return (iv);
}
+int fls(u_int mask);
+
int
fls(u_int mask)
{
diff --git a/sys/arch/hppa/hppa/machdep.c b/sys/arch/hppa/hppa/machdep.c
index 1cd969bff6f..2536b8bdc3b 100644
--- a/sys/arch/hppa/hppa/machdep.c
+++ b/sys/arch/hppa/hppa/machdep.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: machdep.c,v 1.184 2010/05/09 17:37:33 kettenis Exp $ */
+/* $OpenBSD: machdep.c,v 1.185 2010/05/24 15:04:55 deraadt Exp $ */
/*
* Copyright (c) 1999-2003 Michael Shalayeff
@@ -273,6 +273,8 @@ const struct hppa_cpu_typed {
{ "", 0 }
};
+int hppa_cpuspeed(int *mhz);
+
int
hppa_cpuspeed(int *mhz)
{
diff --git a/sys/arch/hppa/hppa/mainbus.c b/sys/arch/hppa/hppa/mainbus.c
index 61d29e49526..efed4e01f1c 100644
--- a/sys/arch/hppa/hppa/mainbus.c
+++ b/sys/arch/hppa/hppa/mainbus.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: mainbus.c,v 1.79 2010/05/06 14:39:52 jsing Exp $ */
+/* $OpenBSD: mainbus.c,v 1.80 2010/05/24 15:04:55 deraadt Exp $ */
/*
* Copyright (c) 1998-2004 Michael Shalayeff
@@ -75,6 +75,91 @@ struct pdc_chassis_lcd pdc_chassis_lcd PDC_ALIGNMENT;
extern struct extent *hppa_ex;
extern struct pdc_btlb pdc_btlb;
+int mbus_add_mapping(bus_addr_t bpa, bus_size_t size, int flags,
+ bus_space_handle_t *bshp);
+int mbus_map(void *v, bus_addr_t bpa, bus_size_t size,
+ int flags, bus_space_handle_t *bshp);
+void mbus_unmap(void *v, bus_space_handle_t bsh, bus_size_t size);
+int mbus_alloc(void *v, bus_addr_t rstart, bus_addr_t rend,
+ bus_size_t size, bus_size_t align, bus_size_t boundary,
+ int flags, bus_addr_t *addrp, bus_space_handle_t *bshp);
+void mbus_free(void *v, bus_space_handle_t h, bus_size_t size);
+int mbus_subregion(void *v, bus_space_handle_t bsh,
+ bus_size_t offset, bus_size_t size,
+ bus_space_handle_t *nbshp);
+void mbus_barrier(void *v, bus_space_handle_t h, bus_size_t o,
+ bus_size_t l, int op);
+void *mbus_vaddr(void *v, bus_space_handle_t h);
+u_int8_t mbus_r1(void *v, bus_space_handle_t h, bus_size_t o);
+u_int16_t mbus_r2(void *v, bus_space_handle_t h, bus_size_t o);
+u_int32_t mbus_r4(void *v, bus_space_handle_t h, bus_size_t o);
+u_int64_t mbus_r8(void *v, bus_space_handle_t h, bus_size_t o);
+void mbus_w1(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int8_t vv);
+void mbus_w2(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int16_t vv);
+void mbus_w4(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int32_t vv);
+void mbus_w8(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int64_t vv);
+void mbus_rm_1(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int8_t *a, bus_size_t c);
+void mbus_rm_2(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int16_t *a, bus_size_t c);
+void mbus_rm_4(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int32_t *a, bus_size_t c);
+void mbus_rm_8(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int64_t *a, bus_size_t c);
+void mbus_wm_1(void *v, bus_space_handle_t h, bus_size_t o,
+ const u_int8_t *a, bus_size_t c);
+void mbus_wm_2(void *v, bus_space_handle_t h, bus_size_t o,
+ const u_int16_t *a, bus_size_t c);
+void mbus_wm_4(void *v, bus_space_handle_t h, bus_size_t o,
+ const u_int32_t *a, bus_size_t c);
+void mbus_wm_8(void *v, bus_space_handle_t h, bus_size_t o,
+ const u_int64_t *a, bus_size_t c);
+void mbus_sm_1(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int8_t vv, bus_size_t c);
+void mbus_sm_2(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int16_t vv, bus_size_t c);
+void mbus_sm_4(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int32_t vv, bus_size_t c);
+void mbus_sm_8(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int64_t vv, bus_size_t c);
+
+void mbus_rr_1(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int8_t *a, bus_size_t c);
+void mbus_rr_2(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int16_t *a, bus_size_t c);
+void mbus_rr_4(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int32_t *a, bus_size_t c);
+void mbus_rr_8(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int64_t *a, bus_size_t c);
+void mbus_wr_1(void *v, bus_space_handle_t h, bus_size_t o,
+ const u_int8_t *a, bus_size_t c);
+void mbus_wr_2(void *v, bus_space_handle_t h, bus_size_t o,
+ const u_int16_t *a, bus_size_t c);
+void mbus_wr_4(void *v, bus_space_handle_t h, bus_size_t o,
+ const u_int32_t *a, bus_size_t c);
+void mbus_wr_8(void *v, bus_space_handle_t h, bus_size_t o,
+ const u_int64_t *a, bus_size_t c);
+void mbus_sr_1(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int8_t vv, bus_size_t c);
+void mbus_sr_2(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int16_t vv, bus_size_t c);
+void mbus_sr_4(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int32_t vv, bus_size_t c);
+void mbus_sr_8(void *v, bus_space_handle_t h, bus_size_t o,
+ u_int64_t vv, bus_size_t c);
+void mbus_cp_1(void *v, bus_space_handle_t h1, bus_size_t o1,
+ bus_space_handle_t h2, bus_size_t o2, bus_size_t c);
+void mbus_cp_2(void *v, bus_space_handle_t h1, bus_size_t o1,
+ bus_space_handle_t h2, bus_size_t o2, bus_size_t c);
+void mbus_cp_4(void *v, bus_space_handle_t h1, bus_size_t o1,
+ bus_space_handle_t h2, bus_size_t o2, bus_size_t c);
+void mbus_cp_8(void *v, bus_space_handle_t h1, bus_size_t o1,
+ bus_space_handle_t h2, bus_size_t o2, bus_size_t c);
+
int
mbus_add_mapping(bus_addr_t bpa, bus_size_t size, int flags,
bus_space_handle_t *bshp)
@@ -232,8 +317,8 @@ mbus_unmap(void *v, bus_space_handle_t bsh, bus_size_t size)
int
mbus_alloc(void *v, bus_addr_t rstart, bus_addr_t rend, bus_size_t size,
- bus_size_t align, bus_size_t boundary, int flags,
- bus_addr_t *addrp, bus_space_handle_t *bshp)
+ bus_size_t align, bus_size_t boundary, int flags,
+ bus_addr_t *addrp, bus_space_handle_t *bshp)
{
u_long bpa;
int error;
@@ -429,20 +514,6 @@ mbus_sm_8(void *v, bus_space_handle_t h, bus_size_t o, u_int64_t vv, bus_size_t
*(volatile u_int64_t *)h = vv;
}
-void mbus_rrm_2(void *v, bus_space_handle_t h,
- bus_size_t o, u_int16_t*a, bus_size_t c);
-void mbus_rrm_4(void *v, bus_space_handle_t h,
- bus_size_t o, u_int32_t*a, bus_size_t c);
-void mbus_rrm_8(void *v, bus_space_handle_t h,
- bus_size_t o, u_int64_t*a, bus_size_t c);
-
-void mbus_wrm_2(void *v, bus_space_handle_t h,
- bus_size_t o, const u_int16_t *a, bus_size_t c);
-void mbus_wrm_4(void *v, bus_space_handle_t h,
- bus_size_t o, const u_int32_t *a, bus_size_t c);
-void mbus_wrm_8(void *v, bus_space_handle_t h,
- bus_size_t o, const u_int64_t *a, bus_size_t c);
-
void
mbus_rr_1(void *v, bus_space_handle_t h, bus_size_t o, u_int8_t *a, bus_size_t c)
{
@@ -515,20 +586,6 @@ mbus_wr_8(void *v, bus_space_handle_t h, bus_size_t o, const u_int64_t *a, bus_s
*p++ = *a++;
}
-void mbus_rrr_2(void *v, bus_space_handle_t h,
- bus_size_t o, u_int16_t *a, bus_size_t c);
-void mbus_rrr_4(void *v, bus_space_handle_t h,
- bus_size_t o, u_int32_t *a, bus_size_t c);
-void mbus_rrr_8(void *v, bus_space_handle_t h,
- bus_size_t o, u_int64_t *a, bus_size_t c);
-
-void mbus_wrr_2(void *v, bus_space_handle_t h,
- bus_size_t o, const u_int16_t *a, bus_size_t c);
-void mbus_wrr_4(void *v, bus_space_handle_t h,
- bus_size_t o, const u_int32_t *a, bus_size_t c);
-void mbus_wrr_8(void *v, bus_space_handle_t h,
- bus_size_t o, const u_int64_t *a, bus_size_t c);
-
void
mbus_sr_1(void *v, bus_space_handle_t h, bus_size_t o, u_int8_t vv, bus_size_t c)
{
@@ -636,6 +693,35 @@ const struct hppa_bus_space_tag hppa_bustag = {
mbus_cp_1, mbus_cp_2, mbus_cp_4, mbus_cp_8
};
+int mbus_dmamap_create(void *v, bus_size_t size, int nsegments,
+ bus_size_t maxsegsz, bus_size_t boundary, int flags,
+ bus_dmamap_t *dmamp);
+void mbus_dmamap_unload(void *v, bus_dmamap_t map);
+void mbus_dmamap_destroy(void *v, bus_dmamap_t map);
+int _bus_dmamap_load_buffer(bus_dma_tag_t t, bus_dmamap_t map,
+ void *buf, bus_size_t buflen, struct proc *p, int flags,
+ paddr_t *lastaddrp, int *segp, int first);
+int mbus_dmamap_load(void *v, bus_dmamap_t map, void *addr,
+ bus_size_t size, struct proc *p, int flags);
+int mbus_dmamap_load_mbuf(void *v, bus_dmamap_t map,
+ struct mbuf *m0, int flags);
+int mbus_dmamap_load_uio(void *v, bus_dmamap_t map,
+ struct uio *uio, int flags);
+int mbus_dmamap_load_raw(void *v, bus_dmamap_t map,
+ bus_dma_segment_t *segs, int nsegs, bus_size_t size,
+ int flags);
+void mbus_dmamap_sync(void *v, bus_dmamap_t map, bus_addr_t off,
+ bus_size_t len, int ops);
+int mbus_dmamem_alloc(void *v, bus_size_t size,
+ bus_size_t alignment, bus_size_t boundary,
+ bus_dma_segment_t *segs, int nsegs, int *rsegs, int flags);
+void mbus_dmamem_free(void *v, bus_dma_segment_t *segs, int nsegs);
+int mbus_dmamem_map(void *v, bus_dma_segment_t *segs, int nsegs,
+ size_t size, caddr_t *kvap, int flags);
+void mbus_dmamem_unmap(void *v, caddr_t kva, size_t size);
+paddr_t mbus_dmamem_mmap(void *v, bus_dma_segment_t *segs, int nsegs,
+ off_t off, int prot, int flags);
+
int
mbus_dmamap_create(void *v, bus_size_t size, int nsegments,
bus_size_t maxsegsz, bus_size_t boundary, int flags,
diff --git a/sys/arch/hppa/hppa/pmap.c b/sys/arch/hppa/hppa/pmap.c
index 04b6f9bc2ba..75eae16412f 100644
--- a/sys/arch/hppa/hppa/pmap.c
+++ b/sys/arch/hppa/hppa/pmap.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: pmap.c,v 1.154 2010/05/22 22:12:42 kettenis Exp $ */
+/* $OpenBSD: pmap.c,v 1.155 2010/05/24 15:04:55 deraadt Exp $ */
/*
* Copyright (c) 1998-2004 Michael Shalayeff
@@ -107,6 +107,15 @@ u_int hppa_prot[8];
#define pmap_pvh_attrs(a) \
(((a) & PTE_PROT(TLB_DIRTY)) | ((a) ^ PTE_PROT(TLB_REFTRAP)))
+struct vm_page *pmap_pagealloc(struct uvm_object *obj, voff_t off);
+void pmap_pte_flush(struct pmap *pmap, vaddr_t va, pt_entry_t pte);
+#ifdef DDB
+void pmap_dump_table(pa_space_t space, vaddr_t sva);
+void pmap_dump_pv(paddr_t pa);
+#endif
+int pmap_check_alias(struct pv_entry *pve, vaddr_t va,
+ pt_entry_t pte);
+
struct vm_page *
pmap_pagealloc(struct uvm_object *obj, voff_t off)
{
diff --git a/sys/arch/hppa/hppa/trap.c b/sys/arch/hppa/hppa/trap.c
index 8dd4ae2404b..54b449951ca 100644
--- a/sys/arch/hppa/hppa/trap.c
+++ b/sys/arch/hppa/hppa/trap.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: trap.c,v 1.107 2010/05/09 17:14:20 kettenis Exp $ */
+/* $OpenBSD: trap.c,v 1.108 2010/05/24 15:04:55 deraadt Exp $ */
/*
* Copyright (c) 1998-2004 Michael Shalayeff
@@ -129,6 +129,8 @@ u_char hppa_regmap[32] = {
offsetof(struct trapframe, tf_r31) / 4,
};
+void userret(struct proc *p);
+
void
userret(struct proc *p)
{
@@ -662,6 +664,9 @@ child_return(void *arg)
#include <sys/ptrace.h>
+int ss_get_value(struct proc *p, vaddr_t addr, u_int *value);
+int ss_put_value(struct proc *p, vaddr_t addr, u_int value);
+
int
ss_get_value(struct proc *p, vaddr_t addr, u_int *value)
{
@@ -760,6 +765,8 @@ process_sstep(struct proc *p, int sstep)
#endif /* PTRACE */
+void syscall(struct trapframe *frame);
+
/*
* call actual syscall routine
*/