Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1. #include "asm_i386.h"
  2.  
  3. .data
  4. fpenv:  .long   0, 0, 0, 0, 0, 0, 0, 0
  5.  
  6. .text
  7. .globl  C(StartMSRInterval)
  8. C(StartMSRInterval):
  9.         movl    $0x11,%ecx      // read the CESR
  10.         .byte   0x0F
  11.         .byte   0x32            // RDMSR
  12.  
  13.         andl    $0xFE3FFE3F,%eax        // stop both counters
  14.         .byte   0x0F
  15.         .byte   0x30            // WRMSR
  16.  
  17.         movl    4(%esp),%eax    // point counter 0 to desired event, with counters
  18.         andl    $0x3F,%eax              //  still stopped
  19.         movl    $0x11,%ecx
  20.         .byte   0x0F
  21.         .byte   0x30            // WRMSR
  22.  
  23.         movl    $0x12,%ecx      // set counter 0 to the value 0
  24.         subl    %eax,%eax
  25.         subl    %edx,%edx
  26.         .byte   0x0F
  27.         .byte   0x30            // WRMSR
  28.        
  29.         movl    4(%esp),%eax // restart counter 0 with selected event
  30.         andl    $0x3F,%eax
  31.         subl    %edx,%edx
  32.         orl             $0xC0,%eax
  33.         movl    $0x11,%ecx      // control and event select
  34.         .byte   0x0F
  35.         .byte   0x30            // WRMSR
  36.  
  37.         ret
  38.  
  39. .globl  C(EndMSRInterval)
  40. C(EndMSRInterval):
  41.         movl    $0x12,%ecx      // counter 0
  42.         .byte   0x0F
  43.         .byte   0x32            // RDMSR
  44.  
  45.         ret                                     // lower 32 bits of count in %eax
  46.  
  47. #if 0
  48.         .data
  49. Lxxx:   .long   0
  50.  
  51.         .text
  52.  
  53. .globl C(setstackcheck)
  54. C(setstackcheck):
  55.  
  56.         movl    %esp,%eax
  57.         subl    $0x38000,%eax
  58.         movl    $0x5A5A5A5A,(%eax)
  59.         movl    %eax,Lxxx
  60.  
  61.         ret
  62.  
  63.  
  64. .globl C(dostackcheck)
  65. C(dostackcheck):
  66.  
  67.         movl    Lxxx,%edx
  68.         movl    $0,%eax
  69.  
  70.         cmpl    $0x5A5A5A5A,(%edx)
  71.         jz              qqq
  72.         incl    %eax
  73. qqq:
  74.  
  75.         ret
  76. #endif
  77.  
  78.