From: arnd@arndb.de
To: paulus@samba.org
Cc: linuxppc-dev@ozlabs.org, Jeremy Kerr <jk@ozlabs.org>
Subject: [POWERPC 15/18] cell: use spu_load_slb for SLB setup
Date: Tue, 18 Dec 2007 18:49:07 +0100 [thread overview]
Message-ID: <20071218175106.596230000@arndb.de> (raw)
In-Reply-To: 20071218174852.112644000@arndb.de
Now that we have a helper function to setup a SPU SLB, use it for
__spu_trap_data_seq.
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
arch/powerpc/platforms/cell/spu_base.c | 23 ++++++++++-------------
1 files changed, 10 insertions(+), 13 deletions(-)
Index: linux-2.6-new/arch/powerpc/platforms/cell/spu_base.c
===================================================================
--- linux-2.6-new.orig/arch/powerpc/platforms/cell/spu_base.c
+++ linux-2.6-new/arch/powerpc/platforms/cell/spu_base.c
@@ -169,9 +169,8 @@ static inline void spu_load_slb(struct s
static int __spu_trap_data_seg(struct spu *spu, unsigned long ea)
{
- struct spu_priv2 __iomem *priv2 = spu->priv2;
struct mm_struct *mm = spu->mm;
- u64 esid, vsid, llp;
+ struct spu_slb slb;
int psize;
pr_debug("%s\n", __FUNCTION__);
@@ -183,7 +182,7 @@ static int __spu_trap_data_seg(struct sp
printk("%s: invalid access during switch!\n", __func__);
return 1;
}
- esid = (ea & ESID_MASK) | SLB_ESID_V;
+ slb.esid = (ea & ESID_MASK) | SLB_ESID_V;
switch(REGION_ID(ea)) {
case USER_REGION_ID:
@@ -192,21 +191,21 @@ static int __spu_trap_data_seg(struct sp
#else
psize = mm->context.user_psize;
#endif
- vsid = (get_vsid(mm->context.id, ea, MMU_SEGSIZE_256M) << SLB_VSID_SHIFT) |
- SLB_VSID_USER;
+ slb.vsid = (get_vsid(mm->context.id, ea, MMU_SEGSIZE_256M)
+ << SLB_VSID_SHIFT) | SLB_VSID_USER;
break;
case VMALLOC_REGION_ID:
if (ea < VMALLOC_END)
psize = mmu_vmalloc_psize;
else
psize = mmu_io_psize;
- vsid = (get_kernel_vsid(ea, MMU_SEGSIZE_256M) << SLB_VSID_SHIFT) |
- SLB_VSID_KERNEL;
+ slb.vsid = (get_kernel_vsid(ea, MMU_SEGSIZE_256M)
+ << SLB_VSID_SHIFT) | SLB_VSID_KERNEL;
break;
case KERNEL_REGION_ID:
psize = mmu_linear_psize;
- vsid = (get_kernel_vsid(ea, MMU_SEGSIZE_256M) << SLB_VSID_SHIFT) |
- SLB_VSID_KERNEL;
+ slb.vsid = (get_kernel_vsid(ea, MMU_SEGSIZE_256M)
+ << SLB_VSID_SHIFT) | SLB_VSID_KERNEL;
break;
default:
/* Future: support kernel segments so that drivers
@@ -215,11 +214,9 @@ static int __spu_trap_data_seg(struct sp
pr_debug("invalid region access at %016lx\n", ea);
return 1;
}
- llp = mmu_psize_defs[psize].sllp;
+ slb.vsid |= mmu_psize_defs[psize].sllp;
- out_be64(&priv2->slb_index_W, spu->slb_replace);
- out_be64(&priv2->slb_vsid_RW, vsid | llp);
- out_be64(&priv2->slb_esid_RW, esid);
+ spu_load_slb(spu, spu->slb_replace, &slb);
spu->slb_replace++;
if (spu->slb_replace >= 8)
--
next prev parent reply other threads:[~2007-12-18 17:49 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-12-18 17:48 [POWERPC 00/18] cell patches for 2.6.25 arnd
2007-12-18 17:48 ` [POWERPC 01/18] perfmon2: make pm_interval register read/write arnd
2007-12-18 17:48 ` [POWERPC 02/18] OProfile: fix cbe pm signal routing problem arnd
2007-12-18 17:48 ` [POWERPC 03/18] cell: add missing \n arnd
2007-12-18 17:48 ` [POWERPC 04/18] Set archdata.dma_data for direct DMA in cell_dma_dev_setup() arnd
2007-12-18 19:48 ` Benjamin Herrenschmidt
2007-12-18 17:48 ` [POWERPC 05/18] Add celleb_dma_dev_setup() arnd
2007-12-18 19:48 ` Benjamin Herrenschmidt
2007-12-18 17:48 ` [POWERPC 06/18] Use archdata.dma_data in dma_direct_ops arnd
2007-12-18 19:49 ` Benjamin Herrenschmidt
2007-12-18 17:48 ` [POWERPC 07/18] Have cell use its own dma_direct_offset variable arnd
2007-12-18 19:50 ` Benjamin Herrenschmidt
2007-12-18 17:49 ` [POWERPC 08/18] Have celleb " arnd
2007-12-18 19:50 ` Benjamin Herrenschmidt
2007-12-18 17:49 ` [POWERPC 09/18] Remove the global dma_direct_offset arnd
2007-12-18 19:52 ` Benjamin Herrenschmidt
2007-12-18 17:49 ` [POWERPC 10/18] Remove bogus comment in dma_direct_alloc_coherent() arnd
2007-12-18 19:52 ` Benjamin Herrenschmidt
2007-12-18 17:49 ` [POWERPC 11/18] cell: Convert #include of asm/of_{platform, device}.h into linux/of_{platform, device}.h arnd
2007-12-18 17:49 ` [POWERPC 12/18] cell: export force_sig_info() arnd
2007-12-18 17:49 ` [POWERPC 13/18] cell: safer of_has_vicinity routine arnd
2007-12-18 17:49 ` [POWERPC 14/18] cell: handle kernel SLB setup in spu_base.c arnd
2007-12-18 17:49 ` arnd [this message]
2007-12-18 17:49 ` [POWERPC 16/18] cell: add spu_64k_pages_available() check arnd
2007-12-18 17:49 ` [POWERPC 17/18] cell: handle SPE kernel mappings that cross segment boundaries arnd
2007-12-18 17:49 ` [POWERPC 18/18] cell: catch errors from sysfs_create_group() arnd
2007-12-18 20:24 ` [POWERPC 00/18] cell patches for 2.6.25 Arnd Bergmann
2007-12-19 0:11 ` Arnd Bergmann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20071218175106.596230000@arndb.de \
--to=arnd@arndb.de \
--cc=jk@ozlabs.org \
--cc=linuxppc-dev@ozlabs.org \
--cc=paulus@samba.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).