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