TODO 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. need to review ASTAT write behavior
  2. how to model RETE and IVG0 bit in IPEND ...
  3. model the loop buffer ? this means no ifetches because they're cached.
  4. see page 4-26 in Blackfin PRM under hardware loops.
  5. handle DSPID at 0xffe05000
  6. CEC should handle multiple exceptions at same address. would need
  7. exception processing to be delayed ? at least needs a stack for
  8. the CEC to pop things off.
  9. R0 = [SP++]; gets traced as R0 = [P6++];
  10. merge dv-bfin_evt with dv-bfin_cec since the EVT regs are part of the CEC
  11. fix single stepping over debug assert instructions in hardware
  12. exception in IVG5 causes double fault ?
  13. SIC int forwarding doesn't accurately reflect the hardware. what the sim
  14. does is:
  15. - device generates an interrupt
  16. - int is sent to SIC
  17. - SIC logs it into its ISR
  18. - so long as SIC's IMASK allows it, bits set in ISR generate
  19. an interrupt to the CEC
  20. - no way to clear the SIC's ISR
  21. the way the hardware works is that the device monitors the interrupt level and
  22. the SIC's ISR bits are basically hardwired from each peripheral. so when the
  23. device has its interrupt cleared, the bit in the SIC's ISR is automatically
  24. cleared as well.
  25. perhaps the only way to model this behavior in the sim is to have each device
  26. set up an event callback that sends out a port event: a level of 0 means the
  27. int has been ACKed and the SIC can clear its ISR while a level of 1 means the
  28. int is being generated still. if the device is still generating an interrupt,
  29. it can reschedule itself again.
  30. insns that cause an interrupt don't seem to be processed at the right time.
  31. for example, setup a glue device that generates an interrupt upon right.
  32. when the store insn is executed, the interrupt is taken right away instead
  33. of being scheduled *after* the insn has finished executing. difference is
  34. that RETI needs to point to the *next* insn and not the store insn.
  35. tests:
  36. - check AN bits with Dreg subtraction
  37. R0 = R1 - R2;
  38. - check astat bits with vector add/sub +|+
  39. - check acc with VIT_MAX and similiar insns
  40. flush[0xffa00000] causes HWERR in sim but not on hardware ?
  41. convert to using do_hw_attach_regs ?