Fast System Call

Internal structure and you change requests/suggestions
  • <Lrz>

    На твоём Бартоне есть сетевой чип?
  • Cyrix 6x86MX - 233

    Первый раз:
    Please wait
    Unsupported <- Fast call (SYSENTER)
    Unsupported <- Fast call (SYSCALL)
    00000000C17C18A <- Interrupt

    Второй раз:
    Please wait
    Unsupported <- Fast call (SYSENTER)
    Unsupported <- Fast call (SYSCALL)
    00000000C1C1177 <- Interrupt
  • Mario79

    Похоже что быстрые вызовы появилтсь в PII. В Pentium Pro их ещё нет
  • Serge
    Мне кажется полностью отказываться от вызовов с помощью прерываний не стоит.
  • Сделал оптимизацию

    было sysenter 27773a18
    стало sysenter 15FA6750

    оптимизация

    Code: Select all

      if __CPU_type eq p6
            push    ecx
            push    edx
            push    ebp
            mov     ebp, esp
            push    ..ret_point     ; it may be 2 or 5 byte
            sysenter
     ..ret_point:
            pop     edx
            pop     ecx
    
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    
            popad
            pop     es ds
            ;-------
    ;        xchg    ecx, [ss:esp]           ; a aa?oei noaea - app ecx, ecx - app esp + 4
    ;        sub     ecx, 4
    ;        xchg    edx, [ecx]              ; edx - return point, & save original edx
    ;        push    edx
    ;        mov     edx, [ss:esp + 4]
    ;        mov     [ecx + 4], edx          ; save original ecx
    ;        pop     edx
    
            mov ecx, [esp]
            mov edx, [ecx-4]
            add ecx, 4
            sysexit
    
  • Mario79

    Согласен.
  • Serge:
    В таком варианте значеия возвращаемые ядром в ecx, edx портятся.
  • Ghost

    Я об этом не подумал :(
    Замедление может быть связано с xchg

    А если такой варинт

    Code: Select all

       cli
       mov esp, [esp]
       mov [esp+4], edx
       mov [esp+8], ecx
       mov edx, [esp-4]
       lea ecx, [esp+4]
    
    Я его не проверял.
  • Ghost

    Есть программа чтобы проверить вызовы АРМ в Колибри ? Только не гашение монитора.
  • <Lrz>
    На твоём Бартоне есть сетевой чип?
    Да есть, встроенный, от NVidea у нас с Heavyiron матери идентичные. Epox 8rda3I
  • <Lrz>
    У него работает а у тебя нет ?

    AqwAS проверял загрузку, у него #375 уже не работала
  • У меня не бартон, но не думаю, что они сильно различаются. Тут частенько причина бывает в самом неожиданном месте: у меня, например, есть экземпляр CD-RW-привода, который если висит один на шлейфе подвешивает коос на загрузке. Если повесить на шлейф еще один, то все ок... Так что неизвестно, где собака зарыта :(
  • Ghost
    Можно упростить алгоритм и ускорить его если вынести pl0 стек из памяти ядра. Зарезервировать для стека n килобайт в вершине памяти приложения тогда адрес стека будет известен заранее. Там же можно разместить TSS и битовую карту ввода-вывода при программном переключении задач. Или вообще оставить один TSS в ядре для всех программ. Он нужен только чтобы загрузить правильный стек при смене привилегий, а если указатель всегда одинаков то хватит и одного TSS.
    Битовая карта выравнивается на границу страницы и защищается от записи. При запуске системы создаются две дефолтные страницы которые копируются всем приложениям. Если программа резервирует порт, то будет обращение к карте на запись и страничное нарушение. Обработчик определит адрес и создаст копию страницы.
  • У меня в системе только один HDD , DVD у меня USB т.е. у меня только FDD and HDD
  • Who is online

    Users browsing this forum: No registered users and 5 guests