X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=bootcensus;a=blobdiff_plain;f=src%2Fintr.c;h=2ec1f1b5eb311b02ddafe4281a01b7593e6dc3ad;hp=194670875146752d75d85ca4113a26dba4aa4c97;hb=81c11bdd80190ec319a82b0402173cfb65fcbf72;hpb=7dcd5071e600f8cf48174d1fddb3dba57ec9476d
diff --git a/src/intr.c b/src/intr.c
index 1946708..2ec1f1b 100644
--- a/src/intr.c
+++ b/src/intr.c
@@ -16,6 +16,7 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
#include
+#include "config.h"
#include "intr.h"
#include "desc.h"
#include "segm.h"
@@ -151,12 +152,17 @@ void dispatch_intr(struct intr_frame frm)
void init_pic(void)
{
+ prog_pic(IRQ_OFFSET);
+}
+
+void prog_pic(int offs)
+{
/* send ICW1 saying we'll follow with ICW4 later on */
outb(ICW1_INIT | ICW1_ICW4_NEEDED, PIC1_CMD);
outb(ICW1_INIT | ICW1_ICW4_NEEDED, PIC2_CMD);
/* send ICW2 with IRQ remapping */
- outb(IRQ_OFFSET, PIC1_DATA);
- outb(IRQ_OFFSET + 8, PIC2_DATA);
+ outb(offs, PIC1_DATA);
+ outb(offs + 8, PIC2_DATA);
/* send ICW3 to setup the master/slave relationship */
/* ... set bit3 = 3rd interrupt input has a slave */
outb(4, PIC1_DATA);
@@ -257,3 +263,10 @@ void end_of_irq(int irq)
set_intr_flag(intr_state);
}
+
+#ifdef ENABLE_GDB_STUB
+void exceptionHandler(int id, void (*func)())
+{
+ set_intr_entry(id, func);
+}
+#endif