Changeset View
Changeset View
Standalone View
Standalone View
sys/powerpc/booke/trap_subr.S
Show First 20 Lines • Show All 794 Lines • ▼ Show 20 Lines | |||||
* scratch regs used: r21 | * scratch regs used: r21 | ||||
* | * | ||||
****************************************************************************/ | ****************************************************************************/ | ||||
pte_lookup: | pte_lookup: | ||||
CMPI %r26, 0 | CMPI %r26, 0 | ||||
beq 1f /* fail quickly if pmap is invalid */ | beq 1f /* fail quickly if pmap is invalid */ | ||||
#ifdef __powerpc64__ | #ifdef __powerpc64__ | ||||
rldicl %r21, %r31, (64 - PP2D_L_L), (64 - PP2D_L_NUM) /* pp2d offset */ | rldicl %r21, %r31, (64 - PG_ROOT_L), (64 - PG_ROOT_NUM) /* pp2d offset */ | ||||
rldicl %r25, %r31, (64 - PP2D_H_L), (64 - PP2D_H_NUM) | slwi %r21, %r21, PG_ROOT_ENTRY_SHIFT /* multiply by pp2d entry size */ | ||||
rldimi %r21, %r25, PP2D_L_NUM, (64 - (PP2D_L_NUM + PP2D_H_NUM)) | ld %r25, PM_ROOT(%r26) /* pmap pm_pp2d[] address */ | ||||
slwi %r21, %r21, PP2D_ENTRY_SHIFT /* multiply by pp2d entry size */ | ldx %r25, %r25, %r21 /* get pdir address, i.e. pmap->pm_pp2d[pp2d_idx] * */ | ||||
ld %r25, PM_PP2D(%r26) /* pmap pm_pp2d[] address */ | |||||
cmpdi %r25, 0 | |||||
beq 2f | |||||
rldicl %r21, %r31, (64 - PDIR_L1_L), (64 - PDIR_L1_NUM) /* pp2d offset */ | |||||
slwi %r21, %r21, PDIR_L1_ENTRY_SHIFT /* multiply by pp2d entry size */ | |||||
ldx %r25, %r25, %r21 /* get pdir address, i.e. pmap->pm_pp2d[pp2d_idx] * */ | ldx %r25, %r25, %r21 /* get pdir address, i.e. pmap->pm_pp2d[pp2d_idx] * */ | ||||
cmpdi %r25, 0 | cmpdi %r25, 0 | ||||
beq 2f | beq 2f | ||||
rldicl %r21, %r31, (64 - PDIR_L), (64 - PDIR_NUM) /* pdir offset */ | rldicl %r21, %r31, (64 - PDIR_L), (64 - PDIR_NUM) /* pdir offset */ | ||||
slwi %r21, %r21, PDIR_ENTRY_SHIFT /* multiply by pdir entry size */ | slwi %r21, %r21, PDIR_ENTRY_SHIFT /* multiply by pdir entry size */ | ||||
ldx %r25, %r25, %r21 /* get ptbl address, i.e. pmap->pm_pp2d[pp2d_idx][pdir_idx] */ | ldx %r25, %r25, %r21 /* get ptbl address, i.e. pmap->pm_pp2d[pp2d_idx][pdir_idx] */ | ||||
▲ Show 20 Lines • Show All 314 Lines • Show Last 20 Lines |