Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

78 lines
1.4 KiB

4 years ago
  1. // TITLE("Jazz I/O Interrupt Dispatch")
  2. //++
  3. //
  4. // Copyright (c) 1990 Microsoft Corporation
  5. //
  6. // Module Name:
  7. //
  8. // jxdmadsp.s
  9. //
  10. // Abstract:
  11. //
  12. // This module implements the code necessary to do the second level dispatch
  13. // for I/O interrupts on Jazz.
  14. //
  15. // Author:
  16. //
  17. // David N. Cutler (davec) 12-May-1990
  18. //
  19. // Environment:
  20. //
  21. // Kernel mode only.
  22. //
  23. // Revision History:
  24. //
  25. //--
  26. #include "halmips.h"
  27. #if defined(_DUO_)
  28. #include "duodef.h"
  29. #endif
  30. #if defined(_JAZZ_)
  31. #include "jazzdef.h"
  32. #endif
  33. SBTTL("Local Device First Level Dispatch")
  34. //++
  35. //
  36. // Routine Description:
  37. //
  38. // This routine is entered as the result of an interrupt being generated
  39. // for a local device.
  40. //
  41. // Arguments:
  42. //
  43. // s8 - Supplies a pointer to a trap frame.
  44. //
  45. // Return Value:
  46. //
  47. // None.
  48. //
  49. //--
  50. LEAF_ENTRY(HalpDmaDispatch)
  51. #if defined(_DUO_)
  52. lbu t0,DMA_VIRTUAL_BASE + 0x48 // get interrupt source vector
  53. #endif
  54. #if defined(_JAZZ_)
  55. lbu t0,INTERRUPT_VIRTUAL_BASE + 0x0 // get interrupt source vector
  56. #endif
  57. lw a0,KiPcr + PcInterruptRoutine + (DEVICE_VECTORS * 4)(t0) //
  58. lw t1,InDispatchAddress - InDispatchCode(a0) // get dispatch address
  59. subu a0,a0,InDispatchCode // compute address of interrupt object
  60. j t1 // transfer control to interrupt routine
  61. .end HalpDmaDispatch