summaryrefslogtreecommitdiffstats
path: root/sys/ia64/include/md_var.h
diff options
context:
space:
mode:
authormarcel <marcel@FreeBSD.org>2010-02-14 16:56:24 +0000
committermarcel <marcel@FreeBSD.org>2010-02-14 16:56:24 +0000
commitd64c132e246c63213bfdfdc38c07d59eb413b25b (patch)
treee8e5b400fb18761bbe3cd75bd951531f2fe23aa2 /sys/ia64/include/md_var.h
parent8a3759078068fdea04520bae2eeda9cc36dee98e (diff)
downloadFreeBSD-src-d64c132e246c63213bfdfdc38c07d59eb413b25b.zip
FreeBSD-src-d64c132e246c63213bfdfdc38c07d59eb413b25b.tar.gz
Some code churn:
o Eliminate IA64_PHYS_TO_RR6 and change all places where the macro is used by calling either bus_space_map() or pmap_mapdev(). o Implement bus_space_map() in terms of pmap_mapdev() and implement bus_space_unmap() in terms of pmap_unmapdev(). o Have ia64_pib hold the uncached virtual address of the processor interrupt block throughout the kernel's life and access the elements of the PIB through this structure pointer. This is a non-functional change with the exception of using ia64_ld1() and ia64_st8() to write to the PIB. We were still using assignments, for which the compiler generates semaphore reads -- which cause undefined behaviour for uncacheable memory. Note also that the memory barriers in ipi_send() are critical for proper functioning. With all the mapping of uncached memory done by pmap_mapdev(), we can keep track of the translations and wire them in the CPU. This then eliminates the need to reserve a whole region for uncached I/O and it eliminates translation traps for device I/O accesses.
Diffstat (limited to 'sys/ia64/include/md_var.h')
-rw-r--r--sys/ia64/include/md_var.h16
1 files changed, 8 insertions, 8 deletions
diff --git a/sys/ia64/include/md_var.h b/sys/ia64/include/md_var.h
index 7fdcb2d..9a2f92a 100644
--- a/sys/ia64/include/md_var.h
+++ b/sys/ia64/include/md_var.h
@@ -49,7 +49,7 @@ struct ia64_fdesc {
#define IA64_CFM_RRB_FR(x) (((x) >> 25) & 0x7f)
#define IA64_CFM_RRB_PR(x) (((x) >> 32) & 0x3f)
-/* Concenience function (inline) to adjust backingstore pointers. */
+/* Convenience function (inline) to adjust backingstore pointers. */
static __inline uint64_t
ia64_bsp_adjust(uint64_t bsp, int nslots)
{
@@ -60,22 +60,22 @@ ia64_bsp_adjust(uint64_t bsp, int nslots)
#ifdef _KERNEL
-extern char sigcode[];
-extern char esigcode[];
-extern int szsigcode;
-extern long Maxmem;
-
struct _special;
-struct fpreg;
-struct reg;
struct thread;
struct trapframe;
+/*
+ * Return value from ia64_init. Describes stack to switch to.
+ */
struct ia64_init_return {
uint64_t bspstore;
uint64_t sp;
};
+extern uint64_t ia64_lapic_addr;
+
+extern long Maxmem;
+
void busdma_swi(void);
int copyout_regstack(struct thread *, uint64_t *, uint64_t *);
void cpu_mp_add(u_int, u_int, u_int);
OpenPOWER on IntegriCloud