Update the StrongArm port to match the current code.

- Implement arm_mask_irqs and arm_unmask_irqs
- Provide the available physical address range after pmap_bootstrap allocated
things, instead or before, or bad things happen.
This commit is contained in:
Olivier Houchard 2004-12-18 17:58:49 +00:00
parent 31e3e209b1
commit 885dabe5f7
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=139022
3 changed files with 15 additions and 6 deletions

View File

@ -40,7 +40,6 @@ options SOFTUPDATES #Enable FFS soft updates support
options UFS_ACL #Support for access control lists
options UFS_DIRHASH #Improve performance on big directories
options MD_ROOT #MD is a potential root device
options MD_ROOT_SIZE=65535
options ROOTDEVNAME=\"ufs:md0\"
options NFSCLIENT #Network Filesystem Client
options NFSSERVER #Network Filesystem Server

View File

@ -134,7 +134,7 @@ struct pcpu __pcpu;
struct pcpu *pcpup = &__pcpu;
#ifndef MD_ROOT_SIZE
#error SIMICS needs MD_ROOT and MD_ROOT_SIZE
#define MD_ROOT_SIZE 65535
#endif
/* Physical and virtual addresses for some global pages */
@ -400,14 +400,14 @@ initarm(void *arg, void *arg2)
pmap_curmaxkvaddr = freemempos + KERNEL_PT_VMDATA_NUM * 0x400000;
pmap_bootstrap(KERNEL_VM_BASE,
pmap_bootstrap(freemempos,
0xd0000000, &kernel_l1pt);
mutex_init();
phys_avail[0] = round_page(freemempos);
phys_avail[0] = round_page(virtual_avail);
phys_avail[1] = 0xc0000000 + 0x02000000 - 1;
phys_avail[2] = 0;
phys_avail[3] = 0;

View File

@ -115,16 +115,26 @@ arm_get_irqnb(void *frame)
return(bus_space_read_4(sc->sc_iot, sc->sc_ioh, SAIPIC_IP));
}
static uint32_t sa11x0_irq_mask = 0xfffffff;
extern vm_offset_t saipic_base;
void
arm_mask_irqs(int irq)
{
/* XXX */
sa11x0_irq_mask &= ~irq;
__asm __volatile("str %0, [%1, #0x04]" /* SAIPIC_MR */
: : "r" (sa11x0_irq_mask), "r" (saipic_base));
}
void
arm_unmask_irqs(int irq)
{
/* XXX */
sa11x0_irq_mask |= irq;
__asm __volatile("str %0, [%1, #0x04]" /* SAIPIC_MR */
: : "r" (sa11x0_irq_mask), "r" (saipic_base));
}
void stray_irqhandler(void *);