Merge branch ucsim-034-pre3 to main trunk; new version 0.4
[fw/sdcc] / sim / ucsim / sim.src / itsrc.cc
index de784289c7711d494202850b41836c9dca9121dc..0a5636c86788ac6760632199854120421d0ec495 100644 (file)
@@ -46,9 +46,11 @@ cl_it_src::cl_it_src(uchar Iie_mask,
                     uchar Isrc_mask,
                     uint  Iaddr,
                     bool  Iclr_bit,
-                    char  *Iname):
+                    char  *Iname,
+                    int   apoll_priority):
   cl_base()
 {
+  poll_priority= apoll_priority;
   ie_mask = Iie_mask;
   src_reg = Isrc_reg;
   src_mask= Isrc_mask;
@@ -91,6 +93,35 @@ cl_it_src::deactivate(void)
 }
 
 
+/*
+ */
+
+cl_irqs::cl_irqs(t_index alimit, t_index adelta):
+  cl_sorted_list(alimit, adelta)
+{
+  Duplicates= DD_TRUE;
+}
+
+void *
+cl_irqs::key_of(void *item)
+{
+  class cl_it_src *itsrc= (class cl_it_src *)item;
+  return(&itsrc->poll_priority);
+}
+
+int
+cl_irqs::compare(void *key1, void *key2)
+{
+  int *k1= (int*)key1, *k2= (int*)key2;
+
+  if (*k1 == *k2)
+    return(0);
+  else if (*k1 < *k2)
+    return(-1);
+  return(1);
+}
+
+
 /*
  * Interrupt level
  ******************************************************************************