summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@home.osdl.org>2004-02-10 05:24:18 -0800
committerLinus Torvalds <torvalds@home.osdl.org>2004-02-10 05:24:18 -0800
commit3dbdb149b62f53789e9a1d337e74a6a5fd4080e0 (patch)
tree60461c875a3076f45f7d654a0a59681c919179b2 /include
parent2f57572dee2ac9864a5d424c9038eeacaf2047e8 (diff)
parent7baf73ec2214d1ad091f8768ca38b39f6ec4a57a (diff)
Merge http://lia64.bkbits.net/to-linus-2.5
into home.osdl.org:/home/torvalds/v2.5/linux
Diffstat (limited to 'include')
-rw-r--r--include/asm-ia64/fpswa.h2
-rw-r--r--include/asm-ia64/mca.h58
-rw-r--r--include/asm-ia64/mmu_context.h3
-rw-r--r--include/asm-ia64/percpu.h2
-rw-r--r--include/asm-ia64/processor.h26
5 files changed, 20 insertions, 71 deletions
diff --git a/include/asm-ia64/fpswa.h b/include/asm-ia64/fpswa.h
index 8986f033c815..62edfceadaa6 100644
--- a/include/asm-ia64/fpswa.h
+++ b/include/asm-ia64/fpswa.h
@@ -68,4 +68,6 @@ typedef struct {
efi_fpswa_t fpswa;
} fpswa_interface_t;
+extern fpswa_interface_t *fpswa_interface;
+
#endif /* _ASM_IA64_FPSWA_H */
diff --git a/include/asm-ia64/mca.h b/include/asm-ia64/mca.h
index f6439e7dd68e..81fce8f49dff 100644
--- a/include/asm-ia64/mca.h
+++ b/include/asm-ia64/mca.h
@@ -2,7 +2,7 @@
* File: mca.h
* Purpose: Machine check handling specific defines
*
- * Copyright (C) 1999 Silicon Graphics, Inc.
+ * Copyright (C) 1999, 2004 Silicon Graphics, Inc.
* Copyright (C) Vijay Chander (vijay@engr.sgi.com)
* Copyright (C) Srinivasa Thirumalachar (sprasad@engr.sgi.com)
*/
@@ -20,23 +20,8 @@
#include <asm/processor.h>
#include <asm/mca_asm.h>
-/* These are the return codes from all the IA64_MCA specific interfaces */
-typedef int ia64_mca_return_code_t;
-
-enum {
- IA64_MCA_SUCCESS = 0,
- IA64_MCA_FAILURE = 1
-};
-
#define IA64_MCA_RENDEZ_TIMEOUT (20 * 1000) /* value in milliseconds - 20 seconds */
-#define IA64_CMC_INT_DISABLE 0
-#define IA64_CMC_INT_ENABLE 1
-
-
-typedef u32 int_vector_t;
-typedef u64 millisec_t;
-
typedef union cmcv_reg_u {
u64 cmcv_regval;
struct {
@@ -53,10 +38,6 @@ typedef union cmcv_reg_u {
#define cmcv_mask cmcv_reg_s.cmcr_mask
#define cmcv_vector cmcv_reg_s.cmcr_vector
-
-#define IA64_MCA_UCMC_HANDLER_SIZE 0x10
-#define IA64_INIT_HANDLER_SIZE 0x10
-
enum {
IA64_MCA_RENDEZ_CHECKIN_NOTDONE = 0x0,
IA64_MCA_RENDEZ_CHECKIN_DONE = 0x1
@@ -85,16 +66,6 @@ typedef struct ia64_mc_info_s {
} ia64_mc_info_t;
-/* Possible rendez states passed from SAL to OS during MCA
- * handoff
- */
-enum {
- IA64_MCA_RENDEZ_NOT_RQD = 0x0,
- IA64_MCA_RENDEZ_DONE_WITHOUT_INIT = 0x1,
- IA64_MCA_RENDEZ_DONE_WITH_INIT = 0x2,
- IA64_MCA_RENDEZ_FAILURE = -1
-};
-
typedef struct ia64_mca_sal_to_os_state_s {
u64 imsto_os_gp; /* GP of the os registered with the SAL */
u64 imsto_pal_proc; /* PAL_PROC entry point - physical addr */
@@ -136,41 +107,14 @@ typedef struct ia64_mca_os_to_sal_state_s {
*/
} ia64_mca_os_to_sal_state_t;
-typedef int (*prfunc_t)(const char * fmt, ...);
-
extern void ia64_mca_init(void);
extern void ia64_os_mca_dispatch(void);
extern void ia64_os_mca_dispatch_end(void);
extern void ia64_mca_ucmc_handler(void);
extern void ia64_monarch_init_handler(void);
extern void ia64_slave_init_handler(void);
-extern irqreturn_t ia64_mca_rendez_int_handler(int,void *,struct pt_regs *);
-extern irqreturn_t ia64_mca_wakeup_int_handler(int,void *,struct pt_regs *);
-extern irqreturn_t ia64_mca_cmc_int_handler(int,void *,struct pt_regs *);
-extern irqreturn_t ia64_mca_cmc_int_caller(int,void *,struct pt_regs *);
-extern irqreturn_t ia64_mca_cpe_int_handler(int,void *,struct pt_regs *);
-extern irqreturn_t ia64_mca_cpe_int_caller(int,void *,struct pt_regs *);
-extern int ia64_log_print(int,prfunc_t);
extern void ia64_mca_cmc_vector_setup(void);
extern int ia64_mca_check_errors(void);
-#define PLATFORM_CALL(fn, args) printk("Platform call TBD\n")
-
-#define platform_mem_dev_err_print ia64_log_prt_oem_data
-#define platform_pci_bus_err_print ia64_log_prt_oem_data
-#define platform_pci_comp_err_print ia64_log_prt_oem_data
-#define platform_plat_specific_err_print ia64_log_prt_oem_data
-#define platform_host_ctlr_err_print ia64_log_prt_oem_data
-#define platform_plat_bus_err_print ia64_log_prt_oem_data
-
-#undef MCA_TEST
-
-#undef IA64_MCA_DEBUG_INFO
-
-#if defined(IA64_MCA_DEBUG_INFO)
-# define IA64_MCA_DEBUG(fmt...) printk(fmt)
-#else
-# define IA64_MCA_DEBUG(fmt...)
-#endif
#endif /* !__ASSEMBLY__ */
#endif /* _ASM_IA64_MCA_H */
diff --git a/include/asm-ia64/mmu_context.h b/include/asm-ia64/mmu_context.h
index 3a3ea55e9ab3..41d65da53e85 100644
--- a/include/asm-ia64/mmu_context.h
+++ b/include/asm-ia64/mmu_context.h
@@ -106,6 +106,7 @@ get_mmu_context (struct mm_struct *mm)
/* re-check, now that we've got the lock: */
context = mm->context;
if (context == 0) {
+ cpus_clear(mm->cpu_vm_mask);
if (ia64_ctx.next >= ia64_ctx.limit)
wrap_mmu_context(mm);
mm->context = context = ia64_ctx.next++;
@@ -170,6 +171,8 @@ activate_context (struct mm_struct *mm)
do {
context = get_mmu_context(mm);
MMU_TRACE('A', smp_processor_id(), mm, context);
+ if (!cpu_isset(smp_processor_id(), mm->cpu_vm_mask))
+ cpu_set(smp_processor_id(), mm->cpu_vm_mask);
reload_context(context);
MMU_TRACE('a', smp_processor_id(), mm, context);
/* in the unlikely event of a TLB-flush by another thread, redo the load: */
diff --git a/include/asm-ia64/percpu.h b/include/asm-ia64/percpu.h
index a44ee78e999f..1e87f19dad56 100644
--- a/include/asm-ia64/percpu.h
+++ b/include/asm-ia64/percpu.h
@@ -50,7 +50,7 @@ extern void *per_cpu_init(void);
#else /* ! SMP */
-#define per_cpu(var, cpu) ((void)cpu, per_cpu__##var)
+#define per_cpu(var, cpu) (*((void)cpu, &per_cpu__##var))
#define __get_cpu_var(var) per_cpu__##var
#define per_cpu_init() (__phys_per_cpu_start)
diff --git a/include/asm-ia64/processor.h b/include/asm-ia64/processor.h
index 5641a23f990c..4b1870a784cb 100644
--- a/include/asm-ia64/processor.h
+++ b/include/asm-ia64/processor.h
@@ -289,19 +289,19 @@ struct thread_struct {
struct ia64_fpreg fph[96]; /* saved/loaded on demand */
};
-#define INIT_THREAD { \
- .flags = 0, \
- .on_ustack = 0, \
- .ksp = 0, \
- .map_base = DEFAULT_MAP_BASE, \
- .rbs_bot = DEFAULT_USER_STACK_SIZE, \
- .task_size = DEFAULT_TASK_SIZE, \
- .last_fph_cpu = -1, \
- INIT_THREAD_IA32 \
- INIT_THREAD_PM \
- .dbr = {0, }, \
- .ibr = {0, }, \
- .fph = {{{{0}}}, } \
+#define INIT_THREAD { \
+ .flags = 0, \
+ .on_ustack = 0, \
+ .ksp = 0, \
+ .map_base = DEFAULT_MAP_BASE, \
+ .rbs_bot = STACK_TOP - DEFAULT_USER_STACK_SIZE, \
+ .task_size = DEFAULT_TASK_SIZE, \
+ .last_fph_cpu = -1, \
+ INIT_THREAD_IA32 \
+ INIT_THREAD_PM \
+ .dbr = {0, }, \
+ .ibr = {0, }, \
+ .fph = {{{{0}}}, } \
}
#define start_thread(regs,new_ip,new_sp) do { \