IRQ ISR IDT [3] Very weeeird results (DOSX)
> tested DPMI IRQ 0 routing to ring 3 on a P4 1.6 GHz with increasing
> frequency (reprogramming the timer) and it worked up to 180 kHz.
Does it mean that main "thread" performance sank to almost 0 then ?
If YES, then the IRQ wastes 10'000 cycles per piece ... and it's desperately inefficient and unusable
> > Is this true under HDPMI32 ? Does HDPMI32 poll the PIT to distinguish
> them
> > ?
>
> No. it uses the value of ESP to determine if it's an IRQ or an exception.
YES. At least to my 1st question
My disassembled code seems lost
It just compares the ESP against a value stored in a magic place of the stack (or 1 of 4 stacks) ?
> I think this is an excellent exercise for learning low-level programming,
> so I don't want to spoil this pleasure by telling how it is done.
Thanks
Well, it seems to work now
; ************************
; *** !!! Hack IDT !!! ***
; ************************
; Ban interrupts
CLI ; Ban all
mov al,$FE
out $21,al ; Ban all except timer after STI
; Backup existing values
mov ebx,[edi+16]
mov eax,[ebx+$40]
mov [edi+16+4],eax
mov eax,[ebx+$44]
mov [edi+16+8],eax
; Prepare
lea edx,[ebp+sspalhack] ; Low 16 in DX
mov eax,edx
shr eax,16 ; High 16 in AX
mov cx,cs
;Write
mov ebx,[edi+16]
mov [ebx+$40],dx ; Low 16
mov [ebx+$42],cx ; CS
mov [ebx+$44], word $EE00 ; Junk 0 | Magic value $EE
mov [ebx+$46],ax ; High 16
Using magic value $EE - same as HDPMI32 places there (to jump to Ring 0 and switch stack ?) and VESAMTRR (to shoot the great "protection" ) and my flat ZERO-based CS
Well, there results are much better than your 180 KHz on 1.6 GHz ... but pretty weird :
- Ring0 DexOS version is slower than Ring3 HDPMI32 version
- 1.7 GHz P4 is slower than 500 MHz P3 (seems to slow down extremely on OUT instruction )
EDIT by rr: Changed subject. Three "e"'s are enough!
Complete thread:
- IRQ ISR IDT - DOS386, 13.08.2007, 07:05 (DOSX)
- IRQ ISR IDT - Japheth, 13.08.2007, 08:18
- IRQ ISR IDT [2] - DOS386, 13.08.2007, 08:34
- IRQ ISR IDT [2] - Japheth, 14.08.2007, 22:24
- IRQ ISR IDT [3] Very weeeird results - DOS386, 16.08.2007, 10:28
- IRQ ISR IDT [3] Very weeeird results - Japheth, 16.08.2007, 14:24
- IRQ ISR IDT [4] Missed the point - DOS386, 17.08.2007, 00:58
- IRQ ISR IDT [4] Missed the point - Japheth, 17.08.2007, 10:50
- IRQ ISR IDT [5] RM ISR vs PM ISR - DOS386, 19.08.2007, 07:46
- IRQ ISR IDT [5] RM ISR vs PM ISR - Rugxulo, 21.08.2007, 03:16
- IRQ ISR IDT [5] RM ISR vs PM ISR - Japheth, 21.08.2007, 08:28
- IRQ ISR IDT [5] RM ISR vs PM ISR - Rugxulo, 22.08.2007, 00:13
- IRQ ISR IDT [5] RM ISR vs PM ISR - Steve, 23.08.2007, 13:42
- IRQ ISR IDT [5] RM ISR vs PM ISR - rr, 23.08.2007, 15:25
- IRQ ISR IDT [5] RM ISR vs PM ISR - Steve, 24.08.2007, 01:11
- IRQ ISR IDT [5] RM ISR vs PM ISR - rr, 23.08.2007, 15:25
- IRQ ISR IDT [5] RM ISR vs PM ISR - Steve, 23.08.2007, 13:42
- IRQ ISR IDT [5] RM ISR vs PM ISR - Rugxulo, 22.08.2007, 00:13
- IRQ ISR IDT [5] RM ISR vs PM ISR - Japheth, 21.08.2007, 08:28
- IRQ ISR IDT [5] RM ISR vs PM ISR - Rugxulo, 21.08.2007, 03:16
- IRQ ISR IDT [5] RM ISR vs PM ISR - DOS386, 19.08.2007, 07:46
- IRQ ISR IDT [4] Missed the point - Japheth, 17.08.2007, 10:50
- IRQ ISR IDT [4] Missed the point - DOS386, 17.08.2007, 00:58
- IRQ ISR IDT [3] Very weeeird results - Japheth, 16.08.2007, 14:24
- IRQ ISR IDT [3] Very weeeird results - DOS386, 16.08.2007, 10:28
- IRQ ISR IDT [2] - Japheth, 14.08.2007, 22:24
- IRQ ISR IDT [2] - DOS386, 13.08.2007, 08:34
- IRQ ISR IDT - Japheth, 13.08.2007, 08:18