Merge remote branch 'jwb/merge' into merge
This commit is contained in:
@@ -163,6 +163,14 @@
|
|||||||
interrupts = <0x1e 4>;
|
interrupts = <0x1e 4>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
SATA0: sata@bffd1000 {
|
||||||
|
compatible = "amcc,sata-460ex";
|
||||||
|
reg = <4 0xbffd1000 0x800 4 0xbffd0800 0x400>;
|
||||||
|
interrupt-parent = <&UIC3>;
|
||||||
|
interrupts = <0x0 0x4 /* SATA */
|
||||||
|
0x5 0x4>; /* AHBDMA */
|
||||||
|
};
|
||||||
|
|
||||||
POB0: opb {
|
POB0: opb {
|
||||||
compatible = "ibm,opb-460ex", "ibm,opb";
|
compatible = "ibm,opb-460ex", "ibm,opb";
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
|
@@ -1826,7 +1826,6 @@ static struct cpu_spec __initdata cpu_specs[] = {
|
|||||||
.cpu_features = CPU_FTRS_47X,
|
.cpu_features = CPU_FTRS_47X,
|
||||||
.cpu_user_features = COMMON_USER_BOOKE |
|
.cpu_user_features = COMMON_USER_BOOKE |
|
||||||
PPC_FEATURE_HAS_FPU,
|
PPC_FEATURE_HAS_FPU,
|
||||||
.cpu_user_features = COMMON_USER_BOOKE,
|
|
||||||
.mmu_features = MMU_FTR_TYPE_47x |
|
.mmu_features = MMU_FTR_TYPE_47x |
|
||||||
MMU_FTR_USE_TLBIVAX_BCAST | MMU_FTR_LOCK_BCAST_INVAL,
|
MMU_FTR_USE_TLBIVAX_BCAST | MMU_FTR_LOCK_BCAST_INVAL,
|
||||||
.icache_bsize = 32,
|
.icache_bsize = 32,
|
||||||
|
@@ -113,6 +113,10 @@ _ENTRY(_start);
|
|||||||
stw r5, 0(r4) /* Save abatron_pteptrs at a fixed location */
|
stw r5, 0(r4) /* Save abatron_pteptrs at a fixed location */
|
||||||
stw r6, 0(r5)
|
stw r6, 0(r5)
|
||||||
|
|
||||||
|
/* Clear the Machine Check Syndrome Register */
|
||||||
|
li r0,0
|
||||||
|
mtspr SPRN_MCSR,r0
|
||||||
|
|
||||||
/* Let's move on */
|
/* Let's move on */
|
||||||
lis r4,start_kernel@h
|
lis r4,start_kernel@h
|
||||||
ori r4,r4,start_kernel@l
|
ori r4,r4,start_kernel@l
|
||||||
|
@@ -67,6 +67,7 @@
|
|||||||
#include <asm/machdep.h>
|
#include <asm/machdep.h>
|
||||||
#include <asm/udbg.h>
|
#include <asm/udbg.h>
|
||||||
#include <asm/dbell.h>
|
#include <asm/dbell.h>
|
||||||
|
#include <asm/smp.h>
|
||||||
|
|
||||||
#ifdef CONFIG_PPC64
|
#ifdef CONFIG_PPC64
|
||||||
#include <asm/paca.h>
|
#include <asm/paca.h>
|
||||||
@@ -446,22 +447,23 @@ struct thread_info *mcheckirq_ctx[NR_CPUS] __read_mostly;
|
|||||||
void exc_lvl_ctx_init(void)
|
void exc_lvl_ctx_init(void)
|
||||||
{
|
{
|
||||||
struct thread_info *tp;
|
struct thread_info *tp;
|
||||||
int i;
|
int i, hw_cpu;
|
||||||
|
|
||||||
for_each_possible_cpu(i) {
|
for_each_possible_cpu(i) {
|
||||||
memset((void *)critirq_ctx[i], 0, THREAD_SIZE);
|
hw_cpu = get_hard_smp_processor_id(i);
|
||||||
tp = critirq_ctx[i];
|
memset((void *)critirq_ctx[hw_cpu], 0, THREAD_SIZE);
|
||||||
|
tp = critirq_ctx[hw_cpu];
|
||||||
tp->cpu = i;
|
tp->cpu = i;
|
||||||
tp->preempt_count = 0;
|
tp->preempt_count = 0;
|
||||||
|
|
||||||
#ifdef CONFIG_BOOKE
|
#ifdef CONFIG_BOOKE
|
||||||
memset((void *)dbgirq_ctx[i], 0, THREAD_SIZE);
|
memset((void *)dbgirq_ctx[hw_cpu], 0, THREAD_SIZE);
|
||||||
tp = dbgirq_ctx[i];
|
tp = dbgirq_ctx[hw_cpu];
|
||||||
tp->cpu = i;
|
tp->cpu = i;
|
||||||
tp->preempt_count = 0;
|
tp->preempt_count = 0;
|
||||||
|
|
||||||
memset((void *)mcheckirq_ctx[i], 0, THREAD_SIZE);
|
memset((void *)mcheckirq_ctx[hw_cpu], 0, THREAD_SIZE);
|
||||||
tp = mcheckirq_ctx[i];
|
tp = mcheckirq_ctx[hw_cpu];
|
||||||
tp->cpu = i;
|
tp->cpu = i;
|
||||||
tp->preempt_count = HARDIRQ_OFFSET;
|
tp->preempt_count = HARDIRQ_OFFSET;
|
||||||
#endif
|
#endif
|
||||||
|
@@ -258,17 +258,18 @@ static void __init irqstack_early_init(void)
|
|||||||
#if defined(CONFIG_BOOKE) || defined(CONFIG_40x)
|
#if defined(CONFIG_BOOKE) || defined(CONFIG_40x)
|
||||||
static void __init exc_lvl_early_init(void)
|
static void __init exc_lvl_early_init(void)
|
||||||
{
|
{
|
||||||
unsigned int i;
|
unsigned int i, hw_cpu;
|
||||||
|
|
||||||
/* interrupt stacks must be in lowmem, we get that for free on ppc32
|
/* interrupt stacks must be in lowmem, we get that for free on ppc32
|
||||||
* as the memblock is limited to lowmem by MEMBLOCK_REAL_LIMIT */
|
* as the memblock is limited to lowmem by MEMBLOCK_REAL_LIMIT */
|
||||||
for_each_possible_cpu(i) {
|
for_each_possible_cpu(i) {
|
||||||
critirq_ctx[i] = (struct thread_info *)
|
hw_cpu = get_hard_smp_processor_id(i);
|
||||||
|
critirq_ctx[hw_cpu] = (struct thread_info *)
|
||||||
__va(memblock_alloc(THREAD_SIZE, THREAD_SIZE));
|
__va(memblock_alloc(THREAD_SIZE, THREAD_SIZE));
|
||||||
#ifdef CONFIG_BOOKE
|
#ifdef CONFIG_BOOKE
|
||||||
dbgirq_ctx[i] = (struct thread_info *)
|
dbgirq_ctx[hw_cpu] = (struct thread_info *)
|
||||||
__va(memblock_alloc(THREAD_SIZE, THREAD_SIZE));
|
__va(memblock_alloc(THREAD_SIZE, THREAD_SIZE));
|
||||||
mcheckirq_ctx[i] = (struct thread_info *)
|
mcheckirq_ctx[hw_cpu] = (struct thread_info *)
|
||||||
__va(memblock_alloc(THREAD_SIZE, THREAD_SIZE));
|
__va(memblock_alloc(THREAD_SIZE, THREAD_SIZE));
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@@ -200,6 +200,7 @@ _GLOBAL(_tlbivax_bcast)
|
|||||||
rlwimi r5,r4,0,16,31
|
rlwimi r5,r4,0,16,31
|
||||||
wrteei 0
|
wrteei 0
|
||||||
mtspr SPRN_MMUCR,r5
|
mtspr SPRN_MMUCR,r5
|
||||||
|
isync
|
||||||
/* tlbivax 0,r3 - use .long to avoid binutils deps */
|
/* tlbivax 0,r3 - use .long to avoid binutils deps */
|
||||||
.long 0x7c000624 | (r3 << 11)
|
.long 0x7c000624 | (r3 << 11)
|
||||||
isync
|
isync
|
||||||
|
Reference in New Issue
Block a user