===== include/asm-ia64/sal.h 1.26 vs edited ===== --- 1.26/include/asm-ia64/sal.h 2004-12-13 15:13:54 -08:00 +++ edited/include/asm-ia64/sal.h 2005-01-20 09:45:23 -08:00 @@ -833,6 +833,8 @@ extern int ia64_sal_oemcall_reentrant(struct ia64_sal_retval *, u64, u64, u64, u64, u64, u64, u64, u64); +extern void ia64_sal_handler_init(void *entry_point, void *gpval); + #endif /* __ASSEMBLY__ */ #endif /* _ASM_IA64_SAL_H */ ===== arch/ia64/sn/kernel/setup.c 1.47 vs edited ===== --- 1.47/arch/ia64/sn/kernel/setup.c 2005-01-18 12:27:58 -08:00 +++ edited/arch/ia64/sn/kernel/setup.c 2005-01-20 09:48:03 -08:00 @@ -163,13 +163,12 @@ void __init early_sn_setup(void) { - void ia64_sal_handler_init(void *entry_point, void *gpval); efi_system_table_t *efi_systab; efi_config_table_t *config_tables; struct ia64_sal_systab *sal_systab; struct ia64_sal_desc_entry_point *ep; char *p; - int i; + int i, j; /* * Parse enough of the SAL tables to locate the SAL entry point. Since, console @@ -185,19 +184,21 @@ 0) { sal_systab = __va(config_tables[i].table); p = (char *)(sal_systab + 1); - for (i = 0; i < sal_systab->entry_count; i++) { + for (j = 0; j < sal_systab->entry_count; j++) { if (*p == SAL_DESC_ENTRY_POINT) { ep = (struct ia64_sal_desc_entry_point *)p; ia64_sal_handler_init(__va (ep->sal_proc), __va(ep->gp)); - break; + return; } p += SAL_DESC_SIZE(*p); } } } + /* Uh-oh, SAL not available?? */ + printk(KERN_ERR "failed to find SAL entry point\n"); } extern int platform_intr_list[];