Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at 77b2555b52a894a2e39a42e43d993df875c46a6a 99 lines 2.5 kB view raw
1/* 2 * smp.h: PPC64 specific SMP code. 3 * 4 * Original was a copy of sparc smp.h. Now heavily modified 5 * for PPC. 6 * 7 * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu) 8 * Copyright (C) 1996-2001 Cort Dougan <cort@fsmlabs.com> 9 * 10 * This program is free software; you can redistribute it and/or 11 * modify it under the terms of the GNU General Public License 12 * as published by the Free Software Foundation; either version 13 * 2 of the License, or (at your option) any later version. 14 */ 15 16#ifdef __KERNEL__ 17#ifndef _PPC64_SMP_H 18#define _PPC64_SMP_H 19 20#include <linux/config.h> 21#include <linux/threads.h> 22#include <linux/cpumask.h> 23#include <linux/kernel.h> 24 25#ifndef __ASSEMBLY__ 26 27#include <asm/paca.h> 28 29extern int boot_cpuid; 30extern int boot_cpuid_phys; 31 32extern void cpu_die(void); 33 34#ifdef CONFIG_SMP 35 36extern void smp_send_debugger_break(int cpu); 37struct pt_regs; 38extern void smp_message_recv(int, struct pt_regs *); 39 40#ifdef CONFIG_HOTPLUG_CPU 41extern void fixup_irqs(cpumask_t map); 42int generic_cpu_disable(void); 43int generic_cpu_enable(unsigned int cpu); 44void generic_cpu_die(unsigned int cpu); 45void generic_mach_cpu_die(void); 46#endif 47 48#define raw_smp_processor_id() (get_paca()->paca_index) 49#define hard_smp_processor_id() (get_paca()->hw_cpu_id) 50 51extern cpumask_t cpu_sibling_map[NR_CPUS]; 52 53/* Since OpenPIC has only 4 IPIs, we use slightly different message numbers. 54 * 55 * Make sure this matches openpic_request_IPIs in open_pic.c, or what shows up 56 * in /proc/interrupts will be wrong!!! --Troy */ 57#define PPC_MSG_CALL_FUNCTION 0 58#define PPC_MSG_RESCHEDULE 1 59/* This is unused now */ 60#if 0 61#define PPC_MSG_MIGRATE_TASK 2 62#endif 63#define PPC_MSG_DEBUGGER_BREAK 3 64 65void smp_init_iSeries(void); 66void smp_init_pSeries(void); 67 68extern int __cpu_disable(void); 69extern void __cpu_die(unsigned int cpu); 70#endif /* CONFIG_SMP */ 71 72#define get_hard_smp_processor_id(CPU) (paca[(CPU)].hw_cpu_id) 73#define set_hard_smp_processor_id(CPU, VAL) \ 74 do { (paca[(CPU)].hw_cpu_id = (VAL)); } while (0) 75 76extern int smt_enabled_at_boot; 77 78extern int smp_mpic_probe(void); 79extern void smp_mpic_setup_cpu(int cpu); 80extern void smp_mpic_message_pass(int target, int msg); 81extern void smp_generic_kick_cpu(int nr); 82 83extern void smp_generic_give_timebase(void); 84extern void smp_generic_take_timebase(void); 85 86extern struct smp_ops_t *smp_ops; 87 88#ifdef CONFIG_PPC_PSERIES 89void vpa_init(int cpu); 90#else 91static inline void vpa_init(int cpu) 92{ 93} 94#endif /* CONFIG_PPC_PSERIES */ 95 96#endif /* __ASSEMBLY__ */ 97 98#endif /* !(_PPC64_SMP_H) */ 99#endif /* __KERNEL__ */