diff options
Diffstat (limited to 'sys/powerpc/aim/mp_cpudep.c')
| -rw-r--r-- | sys/powerpc/aim/mp_cpudep.c | 113 |
1 files changed, 0 insertions, 113 deletions
diff --git a/sys/powerpc/aim/mp_cpudep.c b/sys/powerpc/aim/mp_cpudep.c index e226d3b522ea..1dc9525c0eee 100644 --- a/sys/powerpc/aim/mp_cpudep.c +++ b/sys/powerpc/aim/mp_cpudep.c @@ -54,91 +54,6 @@ extern register_t l3cr_config; void *ap_pcpu; -static int -powerpc_smp_fill_cpuref(struct cpuref *cpuref, phandle_t cpu) -{ - int cpuid, res; - - cpuref->cr_hwref = cpu; - res = OF_getprop(cpu, "reg", &cpuid, sizeof(cpuid)); - if (res < 0) - return (ENOENT); - - cpuref->cr_cpuid = cpuid & 0xff; - return (0); -} - -int -powerpc_smp_first_cpu(struct cpuref *cpuref) -{ - char buf[8]; - phandle_t cpu, dev, root; - int res; - - root = OF_peer(0); - - dev = OF_child(root); - while (dev != 0) { - res = OF_getprop(dev, "name", buf, sizeof(buf)); - if (res > 0 && strcmp(buf, "cpus") == 0) - break; - dev = OF_peer(dev); - } - if (dev == 0) - return (ENOENT); - - cpu = OF_child(dev); - while (cpu != 0) { - res = OF_getprop(cpu, "device_type", buf, sizeof(buf)); - if (res > 0 && strcmp(buf, "cpu") == 0) - break; - cpu = OF_peer(cpu); - } - if (cpu == 0) - return (ENOENT); - - return (powerpc_smp_fill_cpuref(cpuref, cpu)); -} - -int -powerpc_smp_next_cpu(struct cpuref *cpuref) -{ - char buf[8]; - phandle_t cpu; - int res; - - cpu = OF_peer(cpuref->cr_hwref); - while (cpu != 0) { - res = OF_getprop(cpu, "device_type", buf, sizeof(buf)); - if (res > 0 && strcmp(buf, "cpu") == 0) - break; - cpu = OF_peer(cpu); - } - if (cpu == 0) - return (ENOENT); - - return (powerpc_smp_fill_cpuref(cpuref, cpu)); -} - -int -powerpc_smp_get_bsp(struct cpuref *cpuref) -{ - ihandle_t inst; - phandle_t bsp, chosen; - int res; - - chosen = OF_finddevice("/chosen"); - if (chosen == 0) - return (ENXIO); - - res = OF_getprop(chosen, "cpu", &inst, sizeof(inst)); - if (res < 0) - return (ENXIO); - - bsp = OF_instance_to_package(inst); - return (powerpc_smp_fill_cpuref(cpuref, bsp)); -} - static register_t l2_enable(void) { @@ -269,31 +184,3 @@ cpudep_ap_bootstrap(void) return (sp); } -int -powerpc_smp_start_cpu(struct pcpu *pc) -{ - phandle_t cpu; - volatile uint8_t *rstvec; - int res, reset, timeout; - - cpu = pc->pc_hwref; - res = OF_getprop(cpu, "soft-reset", &reset, sizeof(reset)); - if (res < 0) - return (ENXIO); - - ap_pcpu = pc; - - rstvec = (uint8_t *)(0x80000000 + reset); - - *rstvec = 4; - powerpc_sync(); - DELAY(1); - *rstvec = 0; - powerpc_sync(); - - timeout = 1000; - while (!pc->pc_awake && timeout--) - DELAY(100); - - return ((pc->pc_awake) ? 0 : EBUSY); -} |
