diff options
author | Masato Noguchi <Masato.Noguchi@jp.sony.com> | 2007-07-20 15:39:41 -0400 |
---|---|---|
committer | Arnd Bergmann <arnd@klappe.arndb.de> | 2007-07-20 15:42:03 -0400 |
commit | ca53da3abb1d49748931ff2acb66d5a6eeeba2a1 (patch) | |
tree | 071c3894b1aea8db2b4e9a0cf10789171bb1ab4c | |
parent | cf17df223c8cd56a92f34162f2a362eec9f4b157 (diff) |
[CELL] spufs: change decrementer restore timing
The SPU decrementer should be restored after the LSCSA DMA has
completed.
Signed-off-by: Masato Noguchi <Masato.Noguchi@jp.sony.com>
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Signed-off-by: Arnd Bergmann <arnd.bergmann@de.ibm.com>
-rw-r--r-- | arch/powerpc/platforms/cell/spufs/spu_restore.c | 4 | ||||
-rw-r--r-- | arch/powerpc/platforms/cell/spufs/spu_restore_dump.h_shipped | 36 |
2 files changed, 20 insertions, 20 deletions
diff --git a/arch/powerpc/platforms/cell/spufs/spu_restore.c b/arch/powerpc/platforms/cell/spufs/spu_restore.c index 7114e033460e..21a9c952d88b 100644 --- a/arch/powerpc/platforms/cell/spufs/spu_restore.c +++ b/arch/powerpc/platforms/cell/spufs/spu_restore.c | |||
@@ -84,7 +84,7 @@ static inline void restore_decr(void) | |||
84 | unsigned int decr_running; | 84 | unsigned int decr_running; |
85 | unsigned int decr; | 85 | unsigned int decr; |
86 | 86 | ||
87 | /* Restore, Step 6: | 87 | /* Restore, Step 6(moved): |
88 | * If the LSCSA "decrementer running" flag is set | 88 | * If the LSCSA "decrementer running" flag is set |
89 | * then write the SPU_WrDec channel with the | 89 | * then write the SPU_WrDec channel with the |
90 | * decrementer value from LSCSA. | 90 | * decrementer value from LSCSA. |
@@ -318,10 +318,10 @@ int main() | |||
318 | build_dma_list(lscsa_ea); /* Step 3. */ | 318 | build_dma_list(lscsa_ea); /* Step 3. */ |
319 | restore_upper_240kb(lscsa_ea); /* Step 4. */ | 319 | restore_upper_240kb(lscsa_ea); /* Step 4. */ |
320 | /* Step 5: done by 'exit'. */ | 320 | /* Step 5: done by 'exit'. */ |
321 | restore_decr(); /* Step 6. */ | ||
322 | enqueue_putllc(lscsa_ea); /* Step 7. */ | 321 | enqueue_putllc(lscsa_ea); /* Step 7. */ |
323 | set_tag_update(); /* Step 8. */ | 322 | set_tag_update(); /* Step 8. */ |
324 | read_tag_status(); /* Step 9. */ | 323 | read_tag_status(); /* Step 9. */ |
324 | restore_decr(); /* moved Step 6. */ | ||
325 | read_llar_status(); /* Step 10. */ | 325 | read_llar_status(); /* Step 10. */ |
326 | write_ppu_mb(); /* Step 11. */ | 326 | write_ppu_mb(); /* Step 11. */ |
327 | write_ppuint_mb(); /* Step 12. */ | 327 | write_ppuint_mb(); /* Step 12. */ |
diff --git a/arch/powerpc/platforms/cell/spufs/spu_restore_dump.h_shipped b/arch/powerpc/platforms/cell/spufs/spu_restore_dump.h_shipped index 799815e22377..f383b027e8bf 100644 --- a/arch/powerpc/platforms/cell/spufs/spu_restore_dump.h_shipped +++ b/arch/powerpc/platforms/cell/spufs/spu_restore_dump.h_shipped | |||
@@ -93,26 +93,21 @@ static unsigned int spu_restore_code[] __attribute__((__aligned__(128))) = { | |||
93 | 0x18020204, | 93 | 0x18020204, |
94 | 0x24000282, | 94 | 0x24000282, |
95 | 0x217ffa09, | 95 | 0x217ffa09, |
96 | 0x04000403, | 96 | 0x04000402, |
97 | 0x21a00803, | 97 | 0x21a00802, |
98 | 0x3fbe0502, | 98 | 0x3fbe0504, |
99 | 0x3fe30102, | 99 | 0x3fe30204, |
100 | 0x04000105, | 100 | 0x21a00884, |
101 | 0x21a00885, | ||
102 | 0x42074002, | 101 | 0x42074002, |
103 | 0x21a00902, | 102 | 0x21a00902, |
104 | 0x40803c03, | 103 | 0x40803c03, |
105 | 0x21a00983, | 104 | 0x21a00983, |
106 | 0x04000484, | 105 | 0x04000485, |
107 | 0x21a00a04, | 106 | 0x21a00a05, |
108 | 0x40802202, | 107 | 0x40802202, |
109 | 0x21a00a82, | 108 | 0x21a00a82, |
110 | 0x30809c03, | 109 | 0x21a00805, |
111 | 0x34000182, | 110 | 0x21a00884, |
112 | 0x14004102, | ||
113 | 0x21002782, | ||
114 | 0x21a00804, | ||
115 | 0x21a00885, | ||
116 | 0x3fbf0582, | 111 | 0x3fbf0582, |
117 | 0x3f200102, | 112 | 0x3f200102, |
118 | 0x3fbe0102, | 113 | 0x3fbe0102, |
@@ -120,13 +115,17 @@ static unsigned int spu_restore_code[] __attribute__((__aligned__(128))) = { | |||
120 | 0x21a00902, | 115 | 0x21a00902, |
121 | 0x40804003, | 116 | 0x40804003, |
122 | 0x21a00983, | 117 | 0x21a00983, |
123 | 0x21a00a04, | 118 | 0x21a00a05, |
124 | 0x40805a02, | 119 | 0x40805a02, |
125 | 0x21a00a82, | 120 | 0x21a00a82, |
126 | 0x40800083, | 121 | 0x40800083, |
127 | 0x21a00b83, | 122 | 0x21a00b83, |
128 | 0x01a00c02, | 123 | 0x01a00c02, |
129 | 0x01a00d84, | 124 | 0x30809c03, |
125 | 0x34000182, | ||
126 | 0x14004102, | ||
127 | 0x21002082, | ||
128 | 0x01a00d82, | ||
130 | 0x3080a003, | 129 | 0x3080a003, |
131 | 0x34000182, | 130 | 0x34000182, |
132 | 0x21a00e02, | 131 | 0x21a00e02, |
@@ -145,9 +144,10 @@ static unsigned int spu_restore_code[] __attribute__((__aligned__(128))) = { | |||
145 | 0x3080aa03, | 144 | 0x3080aa03, |
146 | 0x34000182, | 145 | 0x34000182, |
147 | 0x21a00b02, | 146 | 0x21a00b02, |
147 | 0x4020007f, | ||
148 | 0x3080ae02, | 148 | 0x3080ae02, |
149 | 0x3080ac04, | ||
150 | 0x42004805, | 149 | 0x42004805, |
150 | 0x3080ac04, | ||
151 | 0x34000103, | 151 | 0x34000103, |
152 | 0x34000202, | 152 | 0x34000202, |
153 | 0x1cffc183, | 153 | 0x1cffc183, |
@@ -193,7 +193,7 @@ static unsigned int spu_restore_code[] __attribute__((__aligned__(128))) = { | |||
193 | 0x34000182, | 193 | 0x34000182, |
194 | 0x21a00382, | 194 | 0x21a00382, |
195 | 0x4020007f, | 195 | 0x4020007f, |
196 | 0x327fd700, | 196 | 0x327fde00, |
197 | 0x409ffe02, | 197 | 0x409ffe02, |
198 | 0x30801203, | 198 | 0x30801203, |
199 | 0x40800206, | 199 | 0x40800206, |