diff options
author | marcel <marcel@FreeBSD.org> | 2010-02-14 16:56:24 +0000 |
---|---|---|
committer | marcel <marcel@FreeBSD.org> | 2010-02-14 16:56:24 +0000 |
commit | d64c132e246c63213bfdfdc38c07d59eb413b25b (patch) | |
tree | e8e5b400fb18761bbe3cd75bd951531f2fe23aa2 /sys/ia64/include/md_var.h | |
parent | 8a3759078068fdea04520bae2eeda9cc36dee98e (diff) | |
download | FreeBSD-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.h | 16 |
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); |