Merge branch 'net-dev'. See body of commit for details.
[akaros.git] / kern / arch / i386 / ioapic.c
index 4dc20fe..483f32b 100644 (file)
@@ -3,6 +3,11 @@
  * See LICENSE for details.
  */
 
+#ifdef __SHARC__
+#pragma nosharc
+#endif
+// Not currently sharc complient.
+
 /** @file
  * @brief Basic IOAPIC Driver.
  *
@@ -19,7 +24,6 @@
  * @todo Some notion of a 'initalized' flag we can check to ensure bootup call order.
  */
 
-
 #include <arch/mmu.h>
 #include <arch/x86.h>
 #include <arch/apic.h>
@@ -147,6 +151,7 @@ void ioapic_init() {
   * There is no notion of success besides invalid data, which casues a panic.
   *
   * @todo Logical partition support
+  * @todo Decide on a synchronization mechinism
   *
   * @param[in] irq     The IRQ we are trying to route. This is non-kernal-offseted. EX: Pit is IRQ 0, not 32.
   * @param[in] dest    The core id we want to route irq to
@@ -159,6 +164,7 @@ void ioapic_route_irq(uint8_t irq, uint8_t dest) {
        }
 
        // THIS IS A TEMP CHECK. IF WE USE LOGICAL PARTITIONS THIS MUST BE REMOVED
+        extern uint8_t num_cpus;
        if (dest >= num_cpus)
                panic("TRYING TO REROUTE TO AN INVALID DESTINATION!");
        
@@ -186,6 +192,8 @@ void ioapic_route_irq(uint8_t irq, uint8_t dest) {
   * This function must be called after ioapic_init() is called, but need not be called after a matching ioapic_route_irq()
   *
   * There is no notion of success besides invalid data, which casues a panic.
+  *
+  * @todo Decide on a synchronization mechinism
   * 
   * @param[in] irq     The IRQ we are trying to unroute. This is non-kernal-offseted. EX: Pit is IRQ 0, not 32.
   */
@@ -202,4 +210,4 @@ void ioapic_unroute_irq(uint8_t irq) {
        write_mmreg32((uint32_t)ioapic_redirects[irq].ioapic_address , IOAPIC_REDIRECT_OFFSET + 2*ioapic_redirects[irq].ioapic_int + 1);
        write_mmreg32((uint32_t)ioapic_redirects[irq].ioapic_address  + IOAPIC_WRITE_WINDOW_OFFSET, IOAPIC_UNROUTE_HIGH);
 
-}
\ No newline at end of file
+}