dataMonitoring.c 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. /*
  2. * linux/arch/alpha/kernel/sys_cabriolet.c
  3. *
  4. * Copyright (C) 1995 David A Rusling
  5. * Copyright (C) 1996 Jay A Estabrook
  6. * Copyright (C) 1998, 1999, 2000 Richard Henderson
  7. *
  8. * Code supporting the Cabriolet (AlphaPC64), EB66+, and EB164,
  9. * PC164 and LX164.
  10. */
  11. #include <linux/kernel.h>
  12. #include <linux/types.h>
  13. #include <linux/mm.h>
  14. #include <linux/sched.h>
  15. #include <linux/pci.h>
  16. #include <linux/init.h>
  17. #include <linux/bitops.h>
  18. #include <asm/ptrace.h>
  19. #include <asm/dma.h>
  20. #include <asm/irq.h>
  21. #include <asm/mmu_context.h>
  22. #include <asm/io.h>
  23. #include <asm/pgtable.h>
  24. #include <asm/core_apecs.h>
  25. #include <asm/core_cia.h>
  26. #include <asm/core_lca.h>
  27. #include <asm/tlbflush.h>
  28. #include "proto.h"
  29. #include "irq_impl.h"
  30. #include "pci_impl.h"
  31. #include "machvec_impl.h"
  32. #include "pc873xx.h"
  33. /* Note mask bit is true for DISABLED irqs. */
  34. static unsigned long cached_irq_mask = ~0UL;
  35. static inline void
  36. cabriolet_update_irq_hw(unsigned int irq, unsigned long mask)
  37. {
  38. int ofs = (irq - 16) / 8;
  39. outb(mask >> (16 + ofs * 8), 0x804 + ofs);
  40. }
  41. static inline void
  42. cabriolet_enable_irq(struct irq_data *d)
  43. {
  44. cabriolet_update_irq_hw(d->irq, cached_irq_mask &= ~(1UL << d->irq));
  45. }
  46. static void
  47. cabriolet_disable_irq(struct irq_data *d)