Exemple #1
0
 def InitSemaphore(self,addr):
   semaphore = AccessStruct(self.mem,SignalSemaphoreStruct,struct_addr=addr)
   semaphore.w_s("ss_Owner",0)
   semaphore.w_s("ss_NestCount",0)
   semaphore.w_s("ss_QueueCount",0xffff)
   semaphore.w_s("ss_Link.ln_Type",self.NT_SIGNALSEM)
   semaphore.w_s("ss_WaitQueue.mlh_Head",semaphore.s_get_addr("ss_WaitQueue.mlh_Tail"))
   semaphore.w_s("ss_WaitQueue.mlh_Tail",0)
   semaphore.w_s("ss_WaitQueue.mlh_TailPred",semaphore.s_get_addr("ss_WaitQueue.mlh_Head"))
   return self.register_semaphore(addr)
 def InitSemaphore(self,addr):
   semaphore = AccessStruct(self.mem,SignalSemaphoreStruct,struct_addr=addr)
   semaphore.w_s("ss_Owner",0)
   semaphore.w_s("ss_NestCount",0)
   semaphore.w_s("ss_QueueCount",-1)
   semaphore.w_s("ss_Link.ln_Type",self.NT_SIGNALSEM)
   semaphore.w_s("ss_WaitQueue.mlh_Head",semaphore.s_get_addr("ss_WaitQueue.mlh_Tail"))
   semaphore.w_s("ss_WaitQueue.mlh_Tail",0)
   semaphore.w_s("ss_WaitQueue.mlh_TailPred",semaphore.s_get_addr("ss_WaitQueue.mlh_Head"))
   return self.register_semaphore(addr)
Exemple #3
0
 def AddHead(self, ctx):
     list_addr = ctx.cpu.r_reg(REG_A0)
     node_addr = ctx.cpu.r_reg(REG_A1)
     log_exec.info("AddHead(%06x, %06x)" % (list_addr, node_addr))
     l = AccessStruct(ctx.mem, ListStruct, list_addr)
     n = AccessStruct(ctx.mem, NodeStruct, node_addr)
     n.w_s("ln_Pred", l.s_get_addr("lh_Head"))
     h = l.r_s("lh_Head")
     n.w_s("ln_Succ", h)
     AccessStruct(ctx.mem, NodeStruct, h).w_s("ln_Pred", node_addr)
     l.w_s("lh_Head", node_addr)
Exemple #4
0
def mem_access_s_get_addr_test():
    mem = MockMemory()
    a = AccessStruct(mem, NodeStruct, 0x42)
    assert a.s_get_addr("ln_Succ") == 0x42
    assert a.s_get_addr("ln_Pred") == 0x46
def mem_access_s_get_addr_test():
  mem = MockMemory()
  a = AccessStruct(mem, NodeStruct, 0x42)
  assert a.s_get_addr('ln_Succ') == 0x42
  assert a.s_get_addr('ln_Pred') == 0x46