svn commit: r195948 - in projects/ppc64/sys: conf powerpc/aim
powerpc/aim64 powerpc/include powerpc/mambo powerpc/powerpc
Nathan Whitehorn
nwhitehorn at FreeBSD.org
Wed Jul 29 19:19:13 UTC 2009
Author: nwhitehorn
Date: Wed Jul 29 19:19:13 2009
New Revision: 195948
URL: http://svn.freebsd.org/changeset/base/195948
Log:
Virtual memory now really works, and the kernel boots to the point of
running through device detection and complaining about not being able
to find a PIC. Trap handling (especially for user-space) still has a
ways to go.
Added:
projects/ppc64/sys/powerpc/mambo/
projects/ppc64/sys/powerpc/mambo/mambo_console.c
projects/ppc64/sys/powerpc/mambo/mambocall.S
projects/ppc64/sys/powerpc/mambo/mambocall.h
Modified:
projects/ppc64/sys/conf/files.powerpc64
projects/ppc64/sys/conf/options.powerpc64
projects/ppc64/sys/powerpc/aim/ofw_machdep.c
projects/ppc64/sys/powerpc/aim/platform_chrp.c
projects/ppc64/sys/powerpc/aim64/locore.S
projects/ppc64/sys/powerpc/aim64/machdep.c
projects/ppc64/sys/powerpc/aim64/trap_subr.S
projects/ppc64/sys/powerpc/include/param.h
projects/ppc64/sys/powerpc/include/pcpu.h
projects/ppc64/sys/powerpc/include/pmap.h
projects/ppc64/sys/powerpc/include/spr.h
projects/ppc64/sys/powerpc/include/sr.h
projects/ppc64/sys/powerpc/include/trap_aim.h
projects/ppc64/sys/powerpc/include/vmparam.h
projects/ppc64/sys/powerpc/powerpc/cpu.c
projects/ppc64/sys/powerpc/powerpc/genassym.c
Modified: projects/ppc64/sys/conf/files.powerpc64
==============================================================================
--- projects/ppc64/sys/conf/files.powerpc64 Wed Jul 29 19:07:24 2009 (r195947)
+++ projects/ppc64/sys/conf/files.powerpc64 Wed Jul 29 19:19:13 2009 (r195948)
@@ -34,7 +34,6 @@ dev/ofw/ofw_bus_subr.c optional aim
dev/ofw/ofw_console.c optional aim
dev/ofw/ofw_disk.c optional ofwd aim
dev/ofw/ofw_iicbus.c optional iicbus aim
-dev/ofw/ofw_standard.c optional aim
dev/powermac_nvram/powermac_nvram.c optional powermac_nvram powermac
dev/scc/scc_bfe_macio.c optional scc powermac
dev/sound/macio/aoa.c optional snd_davbus | snd_ai2s powermac
@@ -71,6 +70,8 @@ powerpc/aim64/mmu_oea64.c optional aim
powerpc/aim64/swtch.S optional aim
powerpc/cpufreq/dfs.c optional cpufreq
powerpc/cpufreq/pcr.c optional cpufreq aim
+powerpc/mambo/mambocall.S optional mambo
+powerpc/mambo/mambo_console.c optional mambo
powerpc/ofw/ofw_cpu.c optional aim
powerpc/ofw/ofw_pcibus.c optional pci aim
powerpc/ofw/ofw_pcib_pci.c optional pci aim
Modified: projects/ppc64/sys/conf/options.powerpc64
==============================================================================
--- projects/ppc64/sys/conf/options.powerpc64 Wed Jul 29 19:07:24 2009 (r195947)
+++ projects/ppc64/sys/conf/options.powerpc64 Wed Jul 29 19:19:13 2009 (r195948)
@@ -3,6 +3,7 @@
AIM opt_global.h
E500 opt_global.h
+MAMBO
GFB_DEBUG opt_gfb.h
GFB_NO_FONT_LOADING opt_gfb.h
Modified: projects/ppc64/sys/powerpc/aim/ofw_machdep.c
==============================================================================
--- projects/ppc64/sys/powerpc/aim/ofw_machdep.c Wed Jul 29 19:07:24 2009 (r195947)
+++ projects/ppc64/sys/powerpc/aim/ofw_machdep.c Wed Jul 29 19:19:13 2009 (r195948)
@@ -83,7 +83,7 @@ struct {
} ofwcall_funcdesc;
#endif
-
+int ofw_real_mode_entry(void *);
static int openfirmware(void *args);
/*
@@ -286,10 +286,14 @@ OF_initial_setup(void *fdt_ptr, void *ju
* For PPC64, we need to hack up a function descriptor object
* to be able to call a memory address.
*/
- ofwcall_funcdesc.funcptr = openfirm;
- ofwcall_funcdesc.toc = 0;
- ofwcall_funcdesc.env = 0;
- ofwcall = (int (*)(void *))(&ofwcall_funcdesc);
+ if (ofw_real_mode) {
+ ofwcall = ofw_real_mode_entry;
+ } else {
+ ofwcall_funcdesc.funcptr = openfirm;
+ ofwcall_funcdesc.toc = 0;
+ ofwcall_funcdesc.env = 0;
+ ofwcall = (int (*)(void *))&ofwcall_funcdesc;
+ }
#else
ofwcall = openfirm;
#endif
@@ -334,15 +338,6 @@ openfirmware(void *args)
if (pmap_bootstrapped && ofw_real_mode)
args = (void *)pmap_kextract((vm_offset_t)args);
- __asm __volatile( "\t"
- "sync\n\t"
- "mfmsr %0\n\t"
- "mtmsr %1\n\t"
- "isync\n"
- : "=r" (oldmsr)
- : "r" (ofmsr[0])
- );
-
ofw_sprg_prepare();
if (pmap_bootstrapped && !ofw_real_mode) {
@@ -364,8 +359,23 @@ openfirmware(void *args)
isync();
}
+ __asm __volatile( "\t"
+ "sync\n\t"
+ "mfmsr %0\n\t"
+ "mtmsr %1\n\t"
+ "isync\n"
+ : "=r" (oldmsr)
+ : "r" (ofmsr[0])
+ );
+
result = ofwcall(args);
+ __asm( "\t"
+ "mtmsr %0\n\t"
+ "isync\n"
+ : : "r" (oldmsr)
+ );
+
if (pmap_bootstrapped && !ofw_real_mode) {
/*
* Restore the kernel's addr space. The isync() doesn;t
@@ -380,12 +390,6 @@ openfirmware(void *args)
ofw_sprg_restore();
- __asm( "\t"
- "mtmsr %0\n\t"
- "isync\n"
- : : "r" (oldmsr)
- );
-
return (result);
}
Modified: projects/ppc64/sys/powerpc/aim/platform_chrp.c
==============================================================================
--- projects/ppc64/sys/powerpc/aim/platform_chrp.c Wed Jul 29 19:07:24 2009 (r195947)
+++ projects/ppc64/sys/powerpc/aim/platform_chrp.c Wed Jul 29 19:19:13 2009 (r195948)
@@ -85,7 +85,7 @@ PLATFORM_DEF(chrp_platform);
static int
chrp_probe(platform_t plat)
{
- if (OF_finddevice("/memory") != -1)
+ if (OF_finddevice("/memory") != -1 || OF_finddevice("/memory at 0") != -1)
return (BUS_PROBE_GENERIC);
return (ENXIO);
Modified: projects/ppc64/sys/powerpc/aim64/locore.S
==============================================================================
--- projects/ppc64/sys/powerpc/aim64/locore.S Wed Jul 29 19:07:24 2009 (r195947)
+++ projects/ppc64/sys/powerpc/aim64/locore.S Wed Jul 29 19:19:13 2009 (r195948)
@@ -180,13 +180,43 @@ ASENTRY(__start)
nop
mr %r1, %r3
li %r3, 0
- stw %r3, 0(%r1)
+ std %r3, 0(%r1)
bl .mi_startup
nop
b .OF_exit
nop
/*
+ * PPC64 ABI TOC base
+ */
+
+ .align 3
+tocbase:
+ .llong .TOC. at tocbase
+
+/*
+ * Open Firmware Real-mode Entry Point. This is a huge pain.
+ */
+
+ASENTRY(ofw_real_mode_entry)
+ mflr 0
+ lis 31,openfirmware_entry at ha
+ ld 31,openfirmware_entry at l(31) /* read client interface handler */
+
+ mfmsr 30
+ mtsprg3 30
+ andi. 30, 30, ~(PSL_DR | PSL_IR | PSL_EE)@l
+ mtmsrd 30
+
+ mtctr 31
+ bctrl
+
+ mfsprg3 30
+ mtmsrd 30
+ mtlr 0
+ blr
+
+/*
* int setfault()
*
* Similar to setjmp to setup for handling faults on accesses to user memory.
Modified: projects/ppc64/sys/powerpc/aim64/machdep.c
==============================================================================
--- projects/ppc64/sys/powerpc/aim64/machdep.c Wed Jul 29 19:07:24 2009 (r195947)
+++ projects/ppc64/sys/powerpc/aim64/machdep.c Wed Jul 29 19:19:13 2009 (r195948)
@@ -451,7 +451,7 @@ powerpc_init(u_int startkernel, u_int en
*/
thread0.td_pcb = (struct pcb *)
((thread0.td_kstack + thread0.td_kstack_pages * PAGE_SIZE -
- sizeof(struct pcb)) & ~15);
+ sizeof(struct pcb)) & ~15UL);
bzero((void *)thread0.td_pcb, sizeof(struct pcb));
pc->pc_curpcb = thread0.td_pcb;
@@ -464,7 +464,7 @@ powerpc_init(u_int startkernel, u_int en
"Boot flags requested debugger");
#endif
- return (((uintptr_t)thread0.td_pcb - 16) & ~15);
+ return (((uintptr_t)thread0.td_pcb - 16) & ~15UL);
}
void
Modified: projects/ppc64/sys/powerpc/aim64/trap_subr.S
==============================================================================
--- projects/ppc64/sys/powerpc/aim64/trap_subr.S Wed Jul 29 19:07:24 2009 (r195947)
+++ projects/ppc64/sys/powerpc/aim64/trap_subr.S Wed Jul 29 19:19:13 2009 (r195948)
@@ -43,31 +43,62 @@
* Save/restore segment registers
*/
-#define RESTORE_SRS(pmap, sr) \
- slbia;
+/*
+ * Restore SRs for a pmap
+ *
+ * Requires that r27-r31 be scratch, with r27 initialized to the pmap
+ */
+
+restoresrs:
+ slbia;
+ li %r29, 0;
+ mr %r28, %r27
+ lwz %r27, PM_CONTEXT(%r27);
+instslb:
+ li %r30, 31;
+ sld %r30, %r27, %r30;
+ ld %r31, PM_SR(%r28);
+
+ cmpli 0, %r31, 0;
+ beq nslb;
+
+ srdi %r31, %r31, 1;
+ or %r30, %r30, %r31;
+ sldi %r30, %r30, 12;
+ ld %r31, PM_SR(%r28);
+ sldi %r31, %r31, 27;
+ or %r31, %r31, %r29;
+ slbmte %r30, %r31;
+
+nslb:
+ addi %r28, %r28, 8;
+ addi %r29, %r29, 1;
+ cmpli 0, %r29, 63;
+ blt instslb;
+
+ blr;
/*
* User SRs are loaded through a pointer to the current pmap.
*/
-#define RESTORE_USER_SRS(pmap,sr) \
- GET_CPUINFO(pmap); \
- lwz pmap,PC_CURPMAP(pmap); \
- lwzu sr,PM_SR(pmap); \
- RESTORE_SRS(pmap,sr)
+#define RESTORE_USER_SRS() \
+ GET_CPUINFO(%r27); \
+ ld %r27,PC_CURPMAP(%r27); \
+ bl restoresrs;
/*
* Kernel SRs are loaded directly from kernel_pmap_
*/
-#define RESTORE_KERN_SRS(pmap,sr) \
- lis pmap,CNAME(kernel_pmap_store)@ha; \
- lwzu sr,CNAME(kernel_pmap_store)+PM_SR at l(pmap); \
- RESTORE_SRS(pmap,sr)
+#define RESTORE_KERN_SRS() \
+ lis %r27,CNAME(kernel_pmap_store)@ha; \
+ addi %r27,%r27,CNAME(kernel_pmap_store)@l; \
+ bl restoresrs;
/*
* FRAME_SETUP assumes:
* SPRG1 SP (1)
* SPRG3 trap type
- * savearea r28-r31,DAR,DSISR (DAR & DSISR only for DSI traps)
+ * savearea r27-r31,DAR,DSISR (DAR & DSISR only for DSI traps)
* r28 LR
* r29 CR
* r30 scratch
@@ -88,45 +119,46 @@
isync; \
mfsprg1 %r31; /* get saved SP */ \
stdu %r31,-FRAMELEN(%r1); /* save it in the callframe */ \
- std %r0, FRAME_0+8(%r1); /* save r0 in the trapframe */ \
- std %r31,FRAME_1+8(%r1); /* save SP " " */ \
- std %r2, FRAME_2+8(%r1); /* save r2 " " */ \
- std %r28,FRAME_LR+8(%r1); /* save LR " " */ \
- stw %r29,FRAME_CR+8(%r1); /* save CR " " */ \
+ std %r0, FRAME_0+16(%r1); /* save r0 in the trapframe */ \
+ std %r31,FRAME_1+16(%r1); /* save SP " " */ \
+ std %r2, FRAME_2+16(%r1); /* save r2 " " */ \
+ std %r28,FRAME_LR+16(%r1); /* save LR " " */ \
+ stw %r29,FRAME_CR+16(%r1); /* save CR " " */ \
GET_CPUINFO(%r2); \
+ ld %r27,(savearea+CPUSAVE_R27)(%r2); /* get saved r27 */ \
ld %r28,(savearea+CPUSAVE_R28)(%r2); /* get saved r28 */ \
ld %r29,(savearea+CPUSAVE_R29)(%r2); /* get saved r29 */ \
ld %r30,(savearea+CPUSAVE_R30)(%r2); /* get saved r30 */ \
ld %r31,(savearea+CPUSAVE_R31)(%r2); /* get saved r31 */ \
- std %r3, FRAME_3+8(%r1); /* save r3-r31 */ \
- std %r4, FRAME_4+8(%r1); \
- std %r5, FRAME_5+8(%r1); \
- std %r6, FRAME_6+8(%r1); \
- std %r7, FRAME_7+8(%r1); \
- std %r8, FRAME_8+8(%r1); \
- std %r9, FRAME_9+8(%r1); \
- std %r10, FRAME_10+8(%r1); \
- std %r11, FRAME_11+8(%r1); \
- std %r12, FRAME_12+8(%r1); \
- std %r13, FRAME_13+8(%r1); \
- std %r14, FRAME_14+8(%r1); \
- std %r15, FRAME_15+8(%r1); \
- std %r16, FRAME_16+8(%r1); \
- std %r17, FRAME_17+8(%r1); \
- std %r18, FRAME_18+8(%r1); \
- std %r19, FRAME_19+8(%r1); \
- std %r20, FRAME_20+8(%r1); \
- std %r21, FRAME_21+8(%r1); \
- std %r22, FRAME_22+8(%r1); \
- std %r23, FRAME_23+8(%r1); \
- std %r24, FRAME_24+8(%r1); \
- std %r25, FRAME_25+8(%r1); \
- std %r26, FRAME_26+8(%r1); \
- std %r27, FRAME_27+8(%r1); \
- std %r28, FRAME_28+8(%r1); \
- std %r29, FRAME_29+8(%r1); \
- std %r30, FRAME_30+8(%r1); \
- std %r31, FRAME_31+8(%r1); \
+ std %r3, FRAME_3+16(%r1); /* save r3-r31 */ \
+ std %r4, FRAME_4+16(%r1); \
+ std %r5, FRAME_5+16(%r1); \
+ std %r6, FRAME_6+16(%r1); \
+ std %r7, FRAME_7+16(%r1); \
+ std %r8, FRAME_8+16(%r1); \
+ std %r9, FRAME_9+16(%r1); \
+ std %r10, FRAME_10+16(%r1); \
+ std %r11, FRAME_11+16(%r1); \
+ std %r12, FRAME_12+16(%r1); \
+ std %r13, FRAME_13+16(%r1); \
+ std %r14, FRAME_14+16(%r1); \
+ std %r15, FRAME_15+16(%r1); \
+ std %r16, FRAME_16+16(%r1); \
+ std %r17, FRAME_17+16(%r1); \
+ std %r18, FRAME_18+16(%r1); \
+ std %r19, FRAME_19+16(%r1); \
+ std %r20, FRAME_20+16(%r1); \
+ std %r21, FRAME_21+16(%r1); \
+ std %r22, FRAME_22+16(%r1); \
+ std %r23, FRAME_23+16(%r1); \
+ std %r24, FRAME_24+16(%r1); \
+ std %r25, FRAME_25+16(%r1); \
+ std %r26, FRAME_26+16(%r1); \
+ std %r27, FRAME_27+16(%r1); \
+ std %r28, FRAME_28+16(%r1); \
+ std %r29, FRAME_29+16(%r1); \
+ std %r30, FRAME_30+16(%r1); \
+ std %r31, FRAME_31+16(%r1); \
ld %r28,(savearea+CPUSAVE_AIM_DAR)(%r2); /* saved DAR */ \
lwz %r29,(savearea+CPUSAVE_AIM_DSISR)(%r2);/* saved DSISR */\
ld %r30,(savearea+CPUSAVE_SRR0)(%r2); /* saved SRR0 */ \
@@ -134,61 +166,61 @@
mfxer %r3; \
mfctr %r4; \
mfsprg3 %r5; \
- std %r3, FRAME_XER+8(1); /* save xer/ctr/exc */ \
- std %r4, FRAME_CTR+8(1); \
- std %r5, FRAME_EXC+8(1); \
- std %r28,FRAME_AIM_DAR+8(1); \
- stw %r29,FRAME_AIM_DSISR+8(1); /* save dsisr/srr0/srr1 */ \
- std %r30,FRAME_SRR0+8(1); \
- std %r31,FRAME_SRR1+8(1)
+ mtlr %r6; \
+ stw %r3, FRAME_XER+16(1); /* save xer/ctr/exc */ \
+ std %r4, FRAME_CTR+16(1); \
+ std %r5, FRAME_EXC+16(1); \
+ std %r28,FRAME_AIM_DAR+16(1); \
+ stw %r29,FRAME_AIM_DSISR+16(1); /* save dsisr/srr0/srr1 */ \
+ std %r30,FRAME_SRR0+16(1); \
+ std %r31,FRAME_SRR1+16(1)
#define FRAME_LEAVE(savearea) \
/* Now restore regs: */ \
- ld %r2,FRAME_SRR0+8(%r1); \
- ld %r3,FRAME_SRR1+8(%r1); \
- ld %r4,FRAME_CTR+8(%r1); \
- ld %r5,FRAME_XER+8(%r1); \
- ld %r6,FRAME_LR+8(%r1); \
+ ld %r2,FRAME_SRR0+16(%r1); \
+ ld %r3,FRAME_SRR1+16(%r1); \
+ ld %r4,FRAME_CTR+16(%r1); \
+ lwz %r5,FRAME_XER+16(%r1); \
+ ld %r6,FRAME_LR+16(%r1); \
GET_CPUINFO(%r7); \
std %r2,(savearea+CPUSAVE_SRR0)(%r7); /* save SRR0 */ \
std %r3,(savearea+CPUSAVE_SRR1)(%r7); /* save SRR1 */ \
- lwz %r7,FRAME_CR+8(%r1); \
+ lwz %r7,FRAME_CR+16(%r1); \
mtctr %r4; \
mtxer %r5; \
- mtlr %r6; \
mtsprg1 %r7; /* save cr */ \
- ld %r31,FRAME_31+8(%r1); /* restore r0-31 */ \
- ld %r30,FRAME_30+8(%r1); \
- ld %r29,FRAME_29+8(%r1); \
- ld %r28,FRAME_28+8(%r1); \
- ld %r27,FRAME_27+8(%r1); \
- ld %r26,FRAME_26+8(%r1); \
- ld %r25,FRAME_25+8(%r1); \
- ld %r24,FRAME_24+8(%r1); \
- ld %r23,FRAME_23+8(%r1); \
- ld %r22,FRAME_22+8(%r1); \
- ld %r21,FRAME_21+8(%r1); \
- ld %r20,FRAME_20+8(%r1); \
- ld %r19,FRAME_19+8(%r1); \
- ld %r18,FRAME_18+8(%r1); \
- ld %r17,FRAME_17+8(%r1); \
- ld %r16,FRAME_16+8(%r1); \
- ld %r15,FRAME_15+8(%r1); \
- ld %r14,FRAME_14+8(%r1); \
- ld %r13,FRAME_13+8(%r1); \
- ld %r12,FRAME_12+8(%r1); \
- ld %r11,FRAME_11+8(%r1); \
- ld %r10,FRAME_10+8(%r1); \
- ld %r9, FRAME_9+8(%r1); \
- ld %r8, FRAME_8+8(%r1); \
- ld %r7, FRAME_7+8(%r1); \
- ld %r6, FRAME_6+8(%r1); \
- ld %r5, FRAME_5+8(%r1); \
- ld %r4, FRAME_4+8(%r1); \
- ld %r3, FRAME_3+8(%r1); \
- ld %r2, FRAME_2+8(%r1); \
- ld %r0, FRAME_0+8(%r1); \
- ld %r1, FRAME_1+8(%r1); \
+ ld %r31,FRAME_31+16(%r1); /* restore r0-31 */ \
+ ld %r30,FRAME_30+16(%r1); \
+ ld %r29,FRAME_29+16(%r1); \
+ ld %r28,FRAME_28+16(%r1); \
+ ld %r27,FRAME_27+16(%r1); \
+ ld %r26,FRAME_26+16(%r1); \
+ ld %r25,FRAME_25+16(%r1); \
+ ld %r24,FRAME_24+16(%r1); \
+ ld %r23,FRAME_23+16(%r1); \
+ ld %r22,FRAME_22+16(%r1); \
+ ld %r21,FRAME_21+16(%r1); \
+ ld %r20,FRAME_20+16(%r1); \
+ ld %r19,FRAME_19+16(%r1); \
+ ld %r18,FRAME_18+16(%r1); \
+ ld %r17,FRAME_17+16(%r1); \
+ ld %r16,FRAME_16+16(%r1); \
+ ld %r15,FRAME_15+16(%r1); \
+ ld %r14,FRAME_14+16(%r1); \
+ ld %r13,FRAME_13+16(%r1); \
+ ld %r12,FRAME_12+16(%r1); \
+ ld %r11,FRAME_11+16(%r1); \
+ ld %r10,FRAME_10+16(%r1); \
+ ld %r9, FRAME_9+16(%r1); \
+ ld %r8, FRAME_8+16(%r1); \
+ ld %r7, FRAME_7+16(%r1); \
+ ld %r6, FRAME_6+16(%r1); \
+ ld %r5, FRAME_5+16(%r1); \
+ ld %r4, FRAME_4+16(%r1); \
+ ld %r3, FRAME_3+16(%r1); \
+ ld %r2, FRAME_2+16(%r1); \
+ ld %r0, FRAME_0+16(%r1); \
+ ld %r1, FRAME_1+16(%r1); \
/* Can't touch %r1 from here on */ \
mtsprg2 %r2; /* save r2 & r3 */ \
mtsprg3 %r3; \
@@ -203,7 +235,7 @@
mtcr %r3; \
bf 17,1f; /* branch if PSL_PR is false */ \
/* Restore user SRs */ \
- RESTORE_USER_SRS(%r2,%r3); \
+ RESTORE_USER_SRS(); /* uses r27-r31 */ \
1: mfsprg1 %r2; /* restore cr */ \
mtcr %r2; \
GET_CPUINFO(%r2); \
@@ -236,6 +268,8 @@ CNAME(rstcode):
addi %r1,%r1,(124-16)@l
lis %r3,1 at l
+ lis %r3,tocbase at ha
+ ld %r2,tocbase at l(%r3)
bla CNAME(.pmap_cpu_bootstrap)
nop
bla CNAME(.cpudep_ap_bootstrap)
@@ -271,7 +305,8 @@ CNAME(trapsize) = .-CNAME(trapcode)
CNAME(alitrap):
mtsprg1 %r1 /* save SP */
GET_CPUINFO(%r1)
- std %r28,(PC_TEMPSAVE+CPUSAVE_R28)(%r1) /* free r28-r31 */
+ std %r27,(PC_TEMPSAVE+CPUSAVE_R27)(%r1) /* free r27-r31 */
+ std %r28,(PC_TEMPSAVE+CPUSAVE_R28)(%r1)
std %r29,(PC_TEMPSAVE+CPUSAVE_R29)(%r1)
std %r30,(PC_TEMPSAVE+CPUSAVE_R30)(%r1)
std %r31,(PC_TEMPSAVE+CPUSAVE_R31)(%r1)
@@ -302,7 +337,8 @@ CNAME(alisize) = .-CNAME(alitrap)
CNAME(dsitrap):
mtsprg1 %r1 /* save SP */
GET_CPUINFO(%r1)
- std %r28,(PC_DISISAVE+CPUSAVE_R28)(%r1) /* free r28-r31 */
+ std %r27,(PC_DISISAVE+CPUSAVE_R27)(%r1) /* free r27-r31 */
+ std %r28,(PC_DISISAVE+CPUSAVE_R28)(%r1)
std %r29,(PC_DISISAVE+CPUSAVE_R29)(%r1)
std %r30,(PC_DISISAVE+CPUSAVE_R30)(%r1)
std %r31,(PC_DISISAVE+CPUSAVE_R31)(%r1)
@@ -326,6 +362,8 @@ disitrap:
mtsprg3 %r1
GET_CPUINFO(%r1)
+ ld %r31,(PC_DISISAVE+CPUSAVE_R27)(%r1)
+ std %r31,(PC_TEMPSAVE+CPUSAVE_R27)(%r1)
ld %r30,(PC_DISISAVE+CPUSAVE_R28)(%r1)
std %r30,(PC_TEMPSAVE+CPUSAVE_R28)(%r1)
ld %r31,(PC_DISISAVE+CPUSAVE_R29)(%r1)
@@ -357,6 +395,8 @@ disitrap:
std %r30,(PC_DBSAVE +CPUSAVE_AIM_DAR)(%r1) /* save DAR */
lwz %r30,(PC_TEMPSAVE+CPUSAVE_AIM_DSISR)(%r1) /* get DSISR */
stw %r30,(PC_DBSAVE +CPUSAVE_AIM_DSISR)(%r1) /* save DSISR */
+ ld %r31,(PC_DISISAVE+CPUSAVE_R27)(%r1) /* get r27 */
+ std %r31,(PC_DBSAVE +CPUSAVE_R27)(%r1) /* save r27 */
ld %r30,(PC_DISISAVE+CPUSAVE_R28)(%r1) /* get r28 */
std %r30,(PC_DBSAVE +CPUSAVE_R28)(%r1) /* save r28 */
ld %r31,(PC_DISISAVE+CPUSAVE_R29)(%r1) /* get r29 */
@@ -378,7 +418,7 @@ realtrap:
bf 17,k_trap /* branch if PSL_PR is false */
GET_CPUINFO(%r1)
ld %r1,PC_CURPCB(%r1)
- RESTORE_KERN_SRS(%r30,%r31) /* enable kernel mapping */
+ RESTORE_KERN_SRS() /* enable kernel mapping */
ba s_trap
/*
@@ -397,7 +437,8 @@ generictrap:
/* Save interesting registers */
GET_CPUINFO(%r1)
- std %r28,(PC_TEMPSAVE+CPUSAVE_R28)(%r1) /* free r28-r31 */
+ std %r27,(PC_TEMPSAVE+CPUSAVE_R27)(%r1) /* free r27-r31 */
+ std %r28,(PC_TEMPSAVE+CPUSAVE_R28)(%r1)
std %r29,(PC_TEMPSAVE+CPUSAVE_R29)(%r1)
std %r30,(PC_TEMPSAVE+CPUSAVE_R30)(%r1)
std %r31,(PC_TEMPSAVE+CPUSAVE_R31)(%r1)
@@ -421,7 +462,7 @@ s_trap:
GET_CPUINFO(%r1)
u_trap:
ld %r1,PC_CURPCB(%r1)
- RESTORE_KERN_SRS(%r30,%r31) /* enable kernel mapping */
+ RESTORE_KERN_SRS() /* enable kernel mapping */
/*
* Now the common trap catching code.
@@ -430,7 +471,9 @@ k_trap:
FRAME_SETUP(PC_TEMPSAVE)
/* Call C interrupt dispatcher: */
trapagain:
- addi %r3,%r1,8
+ lis %r3,tocbase at ha
+ ld %r2,tocbase at l(%r3)
+ addi %r3,%r1,16
bl CNAME(.powerpc_interrupt)
nop
bl CNAME(.trapexit)
@@ -478,6 +521,7 @@ ASENTRY(breakpoint)
mtmsr %r3 /* disable interrupts */
isync
GET_CPUINFO(%r3)
+ std %r27,(PC_DBSAVE+CPUSAVE_R27)(%r3)
std %r28,(PC_DBSAVE+CPUSAVE_R28)(%r3)
std %r29,(PC_DBSAVE+CPUSAVE_R29)(%r3)
std %r30,(PC_DBSAVE+CPUSAVE_R30)(%r3)
@@ -502,7 +546,9 @@ dbtrap:
FRAME_SETUP(PC_DBSAVE)
/* Call C trap code: */
- addi %r3,%r1,8
+ lis %r3,tocbase at ha
+ ld %r2,tocbase at l(%r3)
+ addi %r3,%r1,16
bl CNAME(.db_trap_glue)
nop
or. %r3,%r3,%r3
@@ -514,6 +560,7 @@ dbtrap:
FRAME_LEAVE(PC_DBSAVE)
mtsprg1 %r1 /* prepare for entrance to realtrap */
GET_CPUINFO(%r1)
+ std %r27,(PC_TEMPSAVE+CPUSAVE_R27)(%r1)
std %r28,(PC_TEMPSAVE+CPUSAVE_R28)(%r1)
std %r29,(PC_TEMPSAVE+CPUSAVE_R29)(%r1)
std %r30,(PC_TEMPSAVE+CPUSAVE_R30)(%r1)
@@ -551,6 +598,7 @@ CNAME(dblow):
1:
/* Privileged, so drop to KDB */
GET_CPUINFO(%r1)
+ std %r27,(PC_DBSAVE+CPUSAVE_R27)(%r1) /* free r27 */
std %r28,(PC_DBSAVE+CPUSAVE_R28)(%r1) /* free r28 */
mfsprg2 %r28 /* r29 holds cr... */
std %r28,(PC_DBSAVE+CPUSAVE_R29)(%r1) /* free r29 */
Modified: projects/ppc64/sys/powerpc/include/param.h
==============================================================================
--- projects/ppc64/sys/powerpc/include/param.h Wed Jul 29 19:07:24 2009 (r195947)
+++ projects/ppc64/sys/powerpc/include/param.h Wed Jul 29 19:19:13 2009 (r195948)
@@ -95,7 +95,7 @@
#define PAGE_SHIFT 12
#define PAGE_SIZE (1 << PAGE_SHIFT) /* Page size */
-#define PAGE_MASK (PAGE_SIZE - 1)
+#define PAGE_MASK (vm_offset_t)(PAGE_SIZE - 1)
#define NPTEPG (PAGE_SIZE/(sizeof (pt_entry_t)))
#ifndef KSTACK_PAGES
Modified: projects/ppc64/sys/powerpc/include/pcpu.h
==============================================================================
--- projects/ppc64/sys/powerpc/include/pcpu.h Wed Jul 29 19:07:24 2009 (r195947)
+++ projects/ppc64/sys/powerpc/include/pcpu.h Wed Jul 29 19:19:13 2009 (r195948)
@@ -34,7 +34,7 @@
#include <machine/tlb.h>
struct pmap;
-#define CPUSAVE_LEN 8
+#define CPUSAVE_LEN 9
#define PCPU_MD_COMMON_FIELDS \
int pc_inside_intr; \
@@ -66,10 +66,11 @@ struct pmap;
int pc_tid_next;
/* Definitions for register offsets within the exception tmp save areas */
-#define CPUSAVE_R28 0 /* where r28 gets saved */
-#define CPUSAVE_R29 1 /* where r29 gets saved */
-#define CPUSAVE_R30 2 /* where r30 gets saved */
-#define CPUSAVE_R31 3 /* where r31 gets saved */
+#define CPUSAVE_R27 0 /* where r27 gets saved */
+#define CPUSAVE_R28 1 /* where r28 gets saved */
+#define CPUSAVE_R29 2 /* where r29 gets saved */
+#define CPUSAVE_R30 3 /* where r30 gets saved */
+#define CPUSAVE_R31 4 /* where r31 gets saved */
#define CPUSAVE_AIM_DAR 4 /* where SPR_DAR gets saved */
#define CPUSAVE_AIM_DSISR 5 /* where SPR_DSISR gets saved */
#define CPUSAVE_BOOKE_DEAR 4 /* where SPR_DEAR gets saved */
Modified: projects/ppc64/sys/powerpc/include/pmap.h
==============================================================================
--- projects/ppc64/sys/powerpc/include/pmap.h Wed Jul 29 19:07:24 2009 (r195947)
+++ projects/ppc64/sys/powerpc/include/pmap.h Wed Jul 29 19:19:13 2009 (r195948)
@@ -84,9 +84,16 @@ struct pmap_md {
#define NPMAPS 32768
#endif /* !defined(NPMAPS) */
+#ifdef __powerpc64__
+#define NSEGS 64 /* Typical SLB size. */
+#else
+#define NSEGS 16
+#endif
+
struct pmap {
struct mtx pm_mtx;
- u_int pm_sr[16];
+
+ register_t pm_sr[NSEGS];
u_int pm_active;
u_int pm_context;
Modified: projects/ppc64/sys/powerpc/include/spr.h
==============================================================================
--- projects/ppc64/sys/powerpc/include/spr.h Wed Jul 29 19:07:24 2009 (r195947)
+++ projects/ppc64/sys/powerpc/include/spr.h Wed Jul 29 19:19:13 2009 (r195948)
@@ -161,6 +161,7 @@
#define IBM970MP 0x0044
#define IBM970GX 0x0045
#define MPC860 0x0050
+#define IBMCELLBE 0x0070
#define MPC8240 0x0081
#define IBM405GP 0x4011
#define IBM405L 0x4161
Modified: projects/ppc64/sys/powerpc/include/sr.h
==============================================================================
--- projects/ppc64/sys/powerpc/include/sr.h Wed Jul 29 19:07:24 2009 (r195947)
+++ projects/ppc64/sys/powerpc/include/sr.h Wed Jul 29 19:19:13 2009 (r195948)
@@ -49,7 +49,7 @@
#define KERNEL_SEGMENT (0xfffff0 + KERNEL_SR)
#define KERNEL2_SEGMENT (0xfffff0 + KERNEL2_SR)
#define EMPTY_SEGMENT 0xfffff0
-#define USER_ADDR ((void *)(USER_SR << ADDR_SR_SHFT))
+#define USER_ADDR ((void *)((register_t)USER_SR << ADDR_SR_SHFT))
#define SEGMENT_LENGTH 0x10000000
#define SEGMENT_MASK 0xf0000000
Modified: projects/ppc64/sys/powerpc/include/trap_aim.h
==============================================================================
--- projects/ppc64/sys/powerpc/include/trap_aim.h Wed Jul 29 19:07:24 2009 (r195947)
+++ projects/ppc64/sys/powerpc/include/trap_aim.h Wed Jul 29 19:19:13 2009 (r195948)
@@ -39,7 +39,9 @@
#define EXC_RST 0x0100 /* Reset; all but IBM4xx */
#define EXC_MCHK 0x0200 /* Machine Check */
#define EXC_DSI 0x0300 /* Data Storage Interrupt */
+#define EXC_DSE 0x0380 /* Data Segment Interrupt */
#define EXC_ISI 0x0400 /* Instruction Storage Interrupt */
+#define EXC_ISE 0x0480 /* Instruction Segment Interrupt */
#define EXC_EXI 0x0500 /* External Interrupt */
#define EXC_ALI 0x0600 /* Alignment Interrupt */
#define EXC_PGM 0x0700 /* Program Interrupt */
Modified: projects/ppc64/sys/powerpc/include/vmparam.h
==============================================================================
--- projects/ppc64/sys/powerpc/include/vmparam.h Wed Jul 29 19:07:24 2009 (r195947)
+++ projects/ppc64/sys/powerpc/include/vmparam.h Wed Jul 29 19:19:13 2009 (r195948)
@@ -95,9 +95,9 @@
#if defined(AIM) /* AIM */
-#define KERNBASE 0x00100000 /* start of kernel virtual */
+#define KERNBASE 0x00100000UL /* start of kernel virtual */
-#define VM_MIN_KERNEL_ADDRESS ((vm_offset_t)(KERNEL_SR << ADDR_SR_SHFT))
+#define VM_MIN_KERNEL_ADDRESS ((vm_offset_t)KERNEL_SR << ADDR_SR_SHFT)
#define VM_MAX_KERNEL_ADDRESS (VM_MIN_KERNEL_ADDRESS + 2*SEGMENT_LENGTH - 1)
/*
Added: projects/ppc64/sys/powerpc/mambo/mambo_console.c
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ projects/ppc64/sys/powerpc/mambo/mambo_console.c Wed Jul 29 19:19:13 2009 (r195948)
@@ -0,0 +1,220 @@
+/*-
+ * Copyright (C) 2001 Benno Rice.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY Benno Rice ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL TOOLS GMBH BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__FBSDID("$FreeBSD: head/sys/dev/mambo/mambo_console.c 193018 2009-05-29 06:41:23Z ed $");
+
+#include "opt_comconsole.h"
+#include "opt_ofw.h"
+
+#include <sys/param.h>
+#include <sys/kdb.h>
+#include <sys/kernel.h>
+#include <sys/priv.h>
+#include <sys/systm.h>
+#include <sys/types.h>
+#include <sys/conf.h>
+#include <sys/cons.h>
+#include <sys/consio.h>
+#include <sys/tty.h>
+
+#include <dev/ofw/openfirm.h>
+
+#include <ddb/ddb.h>
+
+#include "mambocall.h"
+
+#ifndef MAMBOCONS_POLL_HZ
+#define MAMBOCONS_POLL_HZ 4
+#endif
+#define MAMBOBURSTLEN 128 /* max number of bytes to write in one chunk */
+
+#define MAMBO_CONSOLE_WRITE 0
+#define MAMBO_CONSOLE_READ 0
+
+static tsw_open_t mambotty_open;
+static tsw_close_t mambotty_close;
+static tsw_outwakeup_t mambotty_outwakeup;
+
+static struct ttydevsw mambo_ttydevsw = {
+ .tsw_flags = TF_NOPREFIX,
+ .tsw_open = mambotty_open,
+ .tsw_close = mambotty_close,
+ .tsw_outwakeup = mambotty_outwakeup,
+};
+
+static int polltime;
+static struct callout_handle mambo_timeouthandle
+ = CALLOUT_HANDLE_INITIALIZER(&mambo_timeouthandle);
+
+#if defined(KDB) && defined(ALT_BREAK_TO_DEBUGGER)
+static int alt_break_state;
+#endif
+
+static void mambo_timeout(void *);
+
+static cn_probe_t mambo_cnprobe;
+static cn_init_t mambo_cninit;
+static cn_term_t mambo_cnterm;
+static cn_getc_t mambo_cngetc;
+static cn_putc_t mambo_cnputc;
+
+CONSOLE_DRIVER(mambo);
+
+static void
+cn_drvinit(void *unused)
+{
+ char output[32];
+ struct tty *tp;
+
+ if (mambo_consdev.cn_pri != CN_DEAD &&
+ mambo_consdev.cn_name[0] != '\0') {
+ if (OF_finddevice("/mambo") == -1)
+ return;
+
+ tp = tty_alloc(&mambo_ttydevsw, NULL);
+ tty_makedev(tp, NULL, "%s", output);
+ tty_makealias(tp, "mambocons");
+ }
+}
+
+SYSINIT(cndev, SI_SUB_CONFIGURE, SI_ORDER_MIDDLE, cn_drvinit, NULL);
+
+static int
+mambotty_open(struct tty *tp)
+{
+ polltime = hz / MAMBOCONS_POLL_HZ;
+ if (polltime < 1)
+ polltime = 1;
+
+ mambo_timeouthandle = timeout(mambo_timeout, tp, polltime);
+
+ return (0);
+}
+
+static void
+mambotty_close(struct tty *tp)
+{
+
+ /* XXX Should be replaced with callout_stop(9) */
+ untimeout(mambo_timeout, tp, mambo_timeouthandle);
+}
+
+static void
+mambotty_outwakeup(struct tty *tp)
+{
+ int len;
+ u_char buf[MAMBOBURSTLEN];
+
+ for (;;) {
+ len = ttydisc_getc(tp, buf, sizeof buf);
+ if (len == 0)
+ break;
+ mambocall(MAMBO_CONSOLE_WRITE, buf, (register_t)len, 1UL);
+ }
+}
+
+static void
+mambo_timeout(void *v)
+{
+ struct tty *tp;
+ int c;
+
+ tp = (struct tty *)v;
+
+ tty_lock(tp);
+ while ((c = mambo_cngetc(NULL)) != -1)
+ ttydisc_rint(tp, c, 0);
+ ttydisc_rint_done(tp);
+ tty_unlock(tp);
+
+ mambo_timeouthandle = timeout(mambo_timeout, tp, polltime);
+}
+
+static void
+mambo_cnprobe(struct consdev *cp)
+{
+ if (OF_finddevice("/mambo") == -1) {
+ cp->cn_pri = CN_DEAD;
+ return;
+ }
+
+ cp->cn_pri = CN_NORMAL;
+}
+
+static void
+mambo_cninit(struct consdev *cp)
+{
+
+ /* XXX: This is the alias, but that should be good enough */
+ strcpy(cp->cn_name, "mambocons");
+}
+
+static void
+mambo_cnterm(struct consdev *cp)
+{
+}
+
+static int
+mambo_cngetc(struct consdev *cp)
+{
+ unsigned char ch;
+
+ ch = mambocall(MAMBO_CONSOLE_READ);
+
+ if (ch > 0) {
+#if defined(KDB) && defined(ALT_BREAK_TO_DEBUGGER)
+ int kdb_brk;
+
+ if ((kdb_brk = kdb_alt_break(ch, &alt_break_state)) != 0) {
+ switch (kdb_brk) {
+ case KDB_REQ_DEBUGGER:
+ kdb_enter(KDB_WHY_BREAK,
+ "Break sequence on console");
+ break;
+ case KDB_REQ_PANIC:
+ kdb_panic("Panic sequence on console");
+ break;
+ case KDB_REQ_REBOOT:
+ kdb_reboot();
+ break;
+
+ }
+ }
+#endif
+ return (ch);
+ }
+
+ return (-1);
+}
+
+static void
+mambo_cnputc(struct consdev *cp, int c)
+{
+ char cbuf;
+
+ cbuf = c;
+ mambocall(MAMBO_CONSOLE_WRITE, &cbuf, 1UL, 1UL);
+}
Added: projects/ppc64/sys/powerpc/mambo/mambocall.S
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ projects/ppc64/sys/powerpc/mambo/mambocall.S Wed Jul 29 19:19:13 2009 (r195948)
@@ -0,0 +1,12 @@
+#include <machine/asm.h>
+
+ .text
+
+ASENTRY(mambocall)
+ /*
+ * Use the special Mambo callout opcode and whatever arguments we
+ * were passed. Then return whatever Mambo returned.
+ */
+ .long 0x000EAEB0
+ blr
+
Added: projects/ppc64/sys/powerpc/mambo/mambocall.h
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ projects/ppc64/sys/powerpc/mambo/mambocall.h Wed Jul 29 19:19:13 2009 (r195948)
@@ -0,0 +1,35 @@
+/*-
+ * Copyright 2008 by Nathan Whitehorn. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD: src/sys/powerpc/powermac/maciovar.h,v 1.8 2008/04/26 18:35:44 marcel Exp $
+ */
+
+#ifndef _MAMBO_MAMBOCALL_H_
+#define _MAMBO_MAMBOCALL_H_
+
+int mambocall(int op, ...);
+
+#endif /* _MAMBO_MAMBOCALL_H_ */
Modified: projects/ppc64/sys/powerpc/powerpc/cpu.c
==============================================================================
--- projects/ppc64/sys/powerpc/powerpc/cpu.c Wed Jul 29 19:07:24 2009 (r195947)
+++ projects/ppc64/sys/powerpc/powerpc/cpu.c Wed Jul 29 19:19:13 2009 (r195948)
@@ -96,6 +96,7 @@ static const struct cputab models[] = {
{ "IBM PowerPC 970FX", IBM970FX, REVFMT_MAJMIN },
{ "IBM PowerPC 970GX", IBM970GX, REVFMT_MAJMIN },
{ "IBM PowerPC 970MP", IBM970MP, REVFMT_MAJMIN },
+ { "IBM Cell Broadband Engine", IBMCELLBE, REVFMT_MAJMIN },
{ "Motorola PowerPC 7400", MPC7400, REVFMT_MAJMIN },
{ "Motorola PowerPC 7410", MPC7410, REVFMT_MAJMIN },
{ "Motorola PowerPC 7450", MPC7450, REVFMT_MAJMIN },
Modified: projects/ppc64/sys/powerpc/powerpc/genassym.c
==============================================================================
--- projects/ppc64/sys/powerpc/powerpc/genassym.c Wed Jul 29 19:07:24 2009 (r195947)
+++ projects/ppc64/sys/powerpc/powerpc/genassym.c Wed Jul 29 19:19:13 2009 (r195948)
@@ -70,33 +70,34 @@ ASSYM(PC_BOOKE_TLB_LEVEL, offsetof(struc
ASSYM(PC_BOOKE_TLB_LOCK, offsetof(struct pcpu, pc_booke_tlb_lock));
#endif
-ASSYM(CPUSAVE_R28, CPUSAVE_R28*4);
-ASSYM(CPUSAVE_R29, CPUSAVE_R29*4);
-ASSYM(CPUSAVE_R30, CPUSAVE_R30*4);
-ASSYM(CPUSAVE_R31, CPUSAVE_R31*4);
-ASSYM(CPUSAVE_SRR0, CPUSAVE_SRR0*4);
-ASSYM(CPUSAVE_SRR1, CPUSAVE_SRR1*4);
-ASSYM(CPUSAVE_AIM_DAR, CPUSAVE_AIM_DAR*4);
-ASSYM(CPUSAVE_AIM_DSISR, CPUSAVE_AIM_DSISR*4);
-ASSYM(CPUSAVE_BOOKE_DEAR, CPUSAVE_BOOKE_DEAR*4);
-ASSYM(CPUSAVE_BOOKE_ESR, CPUSAVE_BOOKE_ESR*4);
-
-ASSYM(TLBSAVE_BOOKE_LR, TLBSAVE_BOOKE_LR*4);
-ASSYM(TLBSAVE_BOOKE_CR, TLBSAVE_BOOKE_CR*4);
-ASSYM(TLBSAVE_BOOKE_SRR0, TLBSAVE_BOOKE_SRR0*4);
-ASSYM(TLBSAVE_BOOKE_SRR1, TLBSAVE_BOOKE_SRR1*4);
-ASSYM(TLBSAVE_BOOKE_R20, TLBSAVE_BOOKE_R20*4);
-ASSYM(TLBSAVE_BOOKE_R21, TLBSAVE_BOOKE_R21*4);
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-src-projects
mailing list