Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 138519
b: refs/heads/master
c: 2657dd4
h: refs/heads/master
i:
  138517: 8fd896e
  138515: 46ec398
  138511: f1f52d1
v: v3
  • Loading branch information
Michael Ellerman authored and Benjamin Herrenschmidt committed Mar 11, 2009
1 parent 7e56c09 commit 5b7edd7
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 13 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 666435bbf31bfc2aec2afccb2fb54951e573c5c1
refs/heads/master: 2657dd4e301d4841ed67a4fac7d145ad8f3e1b28
28 changes: 16 additions & 12 deletions trunk/arch/powerpc/kernel/cputable.c
Original file line number Diff line number Diff line change
Expand Up @@ -1788,22 +1788,27 @@ static struct cpu_spec the_cpu_spec;
static void __init setup_cpu_spec(unsigned long offset, struct cpu_spec *s)
{
struct cpu_spec *t = &the_cpu_spec;
struct cpu_spec old;

t = PTRRELOC(t);
old = *t;

/* Copy everything, then do fixups */
*t = *s;

/*
* If we are overriding a previous value derived from the real
* PVR with a new value obtained using a logical PVR value,
* don't modify the performance monitor fields.
*/
if (t->num_pmcs && !s->num_pmcs) {
t->cpu_name = s->cpu_name;
t->cpu_features = s->cpu_features;
t->cpu_user_features = s->cpu_user_features;
t->icache_bsize = s->icache_bsize;
t->dcache_bsize = s->dcache_bsize;
t->cpu_setup = s->cpu_setup;
t->cpu_restore = s->cpu_restore;
t->platform = s->platform;
if (old.num_pmcs && !s->num_pmcs) {
t->num_pmcs = old.num_pmcs;
t->pmc_type = old.pmc_type;
t->oprofile_type = old.oprofile_type;
t->oprofile_mmcra_sihv = old.oprofile_mmcra_sihv;
t->oprofile_mmcra_sipr = old.oprofile_mmcra_sipr;
t->oprofile_mmcra_clear = old.oprofile_mmcra_clear;

/*
* If we have passed through this logic once before and
* have pulled the default case because the real PVR was
Expand All @@ -1817,10 +1822,9 @@ static void __init setup_cpu_spec(unsigned long offset, struct cpu_spec *s)
* and, in that case, keep the current value for
* oprofile_cpu_type.
*/
if (t->oprofile_cpu_type == NULL)
if (old.oprofile_cpu_type == NULL)
t->oprofile_cpu_type = s->oprofile_cpu_type;
} else
*t = *s;
}

*PTRRELOC(&cur_cpu_spec) = &the_cpu_spec;

Expand Down

0 comments on commit 5b7edd7

Please sign in to comment.