diff options
| author | Linus Torvalds <torvalds@home.osdl.org> | 2004-02-10 05:24:18 -0800 |
|---|---|---|
| committer | Linus Torvalds <torvalds@home.osdl.org> | 2004-02-10 05:24:18 -0800 |
| commit | 3dbdb149b62f53789e9a1d337e74a6a5fd4080e0 (patch) | |
| tree | 60461c875a3076f45f7d654a0a59681c919179b2 /include | |
| parent | 2f57572dee2ac9864a5d424c9038eeacaf2047e8 (diff) | |
| parent | 7baf73ec2214d1ad091f8768ca38b39f6ec4a57a (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.h | 2 | ||||
| -rw-r--r-- | include/asm-ia64/mca.h | 58 | ||||
| -rw-r--r-- | include/asm-ia64/mmu_context.h | 3 | ||||
| -rw-r--r-- | include/asm-ia64/percpu.h | 2 | ||||
| -rw-r--r-- | include/asm-ia64/processor.h | 26 |
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 { \ |
