patch-2.1.51 linux/include/asm-ppc/system.h
Next file: linux/include/asm-ppc/termbits.h
Previous file: linux/include/asm-ppc/string.h
Back to the patch index
Back to the overall index
- Lines: 80
- Date:
Sat Aug 16 09:51:09 1997
- Orig file:
v2.1.50/linux/include/asm-ppc/system.h
- Orig date:
Mon Aug 4 16:25:39 1997
diff -u --recursive --new-file v2.1.50/linux/include/asm-ppc/system.h linux/include/asm-ppc/system.h
@@ -1,40 +1,67 @@
#ifndef __PPC_SYSTEM_H
#define __PPC_SYSTEM_H
-#include <linux/delay.h>
+#include <linux/kdev_t.h>
+#include <asm/processor.h>
#define mb() __asm__ __volatile__ ("sync" : : : "memory")
#define __save_flags(flags) ({\
__asm__ __volatile__ ("mfmsr %0" : "=r" ((flags)) : : "memory"); })
-/* using Paul's in misc.S now -- Cort */
-extern void __restore_flags(unsigned long flags);
+extern __inline__ void __restore_flags(unsigned long flags)
+{
+ extern unsigned lost_interrupts;
+ extern void do_lost_interrupts(unsigned long);
+ if ((flags & MSR_EE) && lost_interrupts != 0) {
+ do_lost_interrupts(flags);
+ } else {
+ __asm__ __volatile__ ("sync; mtmsr %0; isync"
+ : : "r" (flags) : "memory");
+ }
+}
+
+
+#if 0
/*
- #define __sti() _soft_sti(void)
- #define __cli() _soft_cli(void)
+ * Gcc bug prevents us from using this inline func so for now
+ * it lives in misc.S
*/
+void __inline__ __restore_flags(unsigned long flags)
+{
+ extern unsigned lost_interrupts;
+ __asm__ __volatile__ (
+ "andi. 0,%0,%2 \n\t"
+ "beq 2f \n\t"
+ "cmpi 0,%1,0 \n\t"
+ "bne do_lost_interrupts \n\t"
+ "2: sync \n\t"
+ "mtmsr %0 \n\t"
+ "isync \n\t"
+ :
+ : "r" (flags), "r"(lost_interrupts), "i" (1<<15)/*MSR_EE*/
+ : "0", "cc");
+}
+#endif
+
extern void __sti(void);
extern void __cli(void);
-
-extern void _hard_sti(void);
-extern void _hard_cli(void);
-extern void _soft_sti(void);
-extern void _soft_cli(void);
extern int _disable_interrupts(void);
extern void _enable_interrupts(int);
+extern void print_backtrace(unsigned long *);
+extern void show_regs(struct pt_regs * regs);
extern void flush_instruction_cache(void);
extern void hard_reset_now(void);
extern void poweroff_now(void);
-extern void find_scsi_boot(void);
+/*extern void note_bootable_part(kdev_t, int);*/
extern int sd_find_target(void *, int);
extern int _get_PVR(void);
extern void via_cuda_init(void);
+extern void pmac_nvram_init(void);
extern void read_rtc_time(void);
extern void pmac_find_display(void);
extern void giveup_fpu(void);
-extern void store_cache_range(unsigned long, unsigned long);
extern void cvt_fd(float *from, double *to);
extern void cvt_df(double *from, float *to);
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov