mp_machdep.c revision 76442
1103285Sikob/*- 2113584Ssimokawa * Copyright (c) 2000 Doug Rabson 3103285Sikob * All rights reserved. 4103285Sikob * 5103285Sikob * Redistribution and use in source and binary forms, with or without 6103285Sikob * modification, are permitted provided that the following conditions 7103285Sikob * are met: 8103285Sikob * 1. Redistributions of source code must retain the above copyright 9103285Sikob * notice, this list of conditions and the following disclaimer. 10103285Sikob * 2. Redistributions in binary form must reproduce the above copyright 11103285Sikob * notice, this list of conditions and the following disclaimer in the 12103285Sikob * documentation and/or other materials provided with the distribution. 13103285Sikob * 14103285Sikob * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15103285Sikob * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16103285Sikob * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17103285Sikob * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18103285Sikob * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19103285Sikob * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20103285Sikob * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21103285Sikob * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22103285Sikob * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23103285Sikob * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24103285Sikob * SUCH DAMAGE. 25103285Sikob * 26103285Sikob * $FreeBSD: head/sys/powerpc/powerpc/mp_machdep.c 76442 2001-05-10 17:58:35Z jhb $ 27103285Sikob */ 28103285Sikob 29103285Sikob#include <sys/param.h> 30103285Sikob#include <sys/systm.h> 31103285Sikob#include <sys/ktr.h> 32103285Sikob#include <sys/proc.h> 33103285Sikob#include <sys/lock.h> 34103285Sikob#include <sys/malloc.h> 35103285Sikob#include <sys/mutex.h> 36119418Sobrien#include <sys/kernel.h> 37119418Sobrien#include <sys/smp.h> 38119418Sobrien 39103285Sikob#include <vm/vm.h> 40103285Sikob#include <vm/pmap.h> 41103285Sikob#include <vm/vm_map.h> 42103285Sikob#include <sys/user.h> 43103285Sikob#include <sys/dkstat.h> 44103285Sikob 45103285Sikob#include <machine/atomic.h> 46103285Sikob#include <machine/pmap.h> 47120660Ssimokawa#include <machine/clock.h> 48120660Ssimokawa 49120660Ssimokawaint boot_cpu_id; 50120660Ssimokawa 51120660Ssimokawa/* 52103285Sikob * XXX: needs to move to machdep.c 53103285Sikob * 54113584Ssimokawa * Initialise a struct globaldata. 55103285Sikob */ 56103285Sikobvoid 57103285Sikobglobaldata_init(struct globaldata *globaldata, int cpuno, size_t sz) 58103285Sikob{ 59122228Ssimokawa 60103285Sikob bzero(globaldata, sz); 61103285Sikob globaldata->gd_idlepcbphys = vtophys((vm_offset_t) &globaldata->gd_idlepcb); 62103285Sikob globaldata->gd_idlepcb.apcb_ksp = (u_int64_t) 63103285Sikob ((caddr_t) globaldata + sz - sizeof(struct trapframe)); 64103285Sikob globaldata->gd_idlepcb.apcb_ptbr = proc0.p_addr->u_pcb.pcb_hw.apcb_ptbr; 65106810Ssimokawa globaldata->gd_cpuno = cpuno; 66106810Ssimokawa globaldata->gd_other_cpus = all_cpus & ~(1 << cpuno); 67103285Sikob globaldata->gd_next_asn = 0; 68103285Sikob globaldata->gd_current_asngen = 1; 69108281Ssimokawa globaldata->gd_cpuid = cpuno; 70106810Ssimokawa globaldata_register(globaldata); 71106810Ssimokawa} 72110582Ssimokawa 73106810Ssimokawaint 74103285Sikobcpu_mp_probe(void) 75103285Sikob{ 76103285Sikob return 0; 77103285Sikob} 78103285Sikob 79124145Ssimokawavoid 80124145Ssimokawacpu_mp_start(void) 81120660Ssimokawa{ 82120660Ssimokawa} 83122228Ssimokawa 84122228Ssimokawavoid 85122228Ssimokawacpu_mp_announce(void) 86122228Ssimokawa{ 87122228Ssimokawa} 88106816Ssimokawa