home *** CD-ROM | disk | FTP | other *** search
/ Fujiology Archive / fujiology_archive_v1_0.iso / !FALCON / LINEOUT / OUT.ZIP / SOURCE.ZIP / SYS.I < prev    next >
Text File  |  2002-12-07  |  1KB  |  59 lines

  1. ; system rout library, by earx.
  2.  
  3. System.init:
  4.     bsr.s    getCpu
  5.     move.w    d0,cpu_model
  6.     rts
  7.  
  8. ; Reads system's cpu cookie. Beware, must be in supervisor mode.
  9. ; OUTPUT:
  10. ; d0.l=cpu type
  11. getCpu:    clr.l    d0
  12.     movea.l    $05A0.w,a0
  13.     tst.l    a0
  14.     beq.s    .end
  15. .loop:    cmpi.l    #"_CPU",(a0)
  16.     beq.s    .found
  17.     addq    #8,a0
  18.     bra.s    .loop
  19. .found:    move.l    4(a0),d0
  20. .end:    rts
  21.  
  22. ; Flushes and disables the instruction cache.
  23. ; Also saves the cacr in old_cacr.
  24. flushAndDisableICache:
  25.     movec    cacr,d0
  26.     move.l    d0,old_cacr
  27.  
  28.     bset    #11,d0                    ; clear d cache 030
  29.     bclr    #8,d0                    ; d cache 030 off
  30.     bclr    #31,d0                    ; d cache 040 off
  31.  
  32.     bset    #3,d0                    ; clear i cache 030
  33.     bclr    #4,d0                    ; i burst 030 off
  34.     bclr    #0,d0                    ; i cache 030 off
  35.     bclr    #15,d0                    ; i cache 040 off 
  36.     movec    d0,cacr
  37.  
  38.     cmpi.w    #40,cpu_model
  39.     blt.s    .end
  40.  
  41.     dc.w    $f4f8                    ; cpusha bc
  42. ;    cpusha    bc                    ; Flush both 040/060 caches!
  43.  
  44. .end:    rts
  45.  
  46. ; Restores saved cacr state.
  47. ; PRE: cacr is saved in old_cacr
  48. restoreCache:
  49.     move.l    old_cacr,d0
  50.     movec    d0,cacr
  51.     rts
  52.  
  53.     bss
  54.  
  55. cpu_model:
  56.     ds.w    1
  57. old_cacr:
  58.     ds.l    1
  59.