flat assembler
Message board for the users of flat assembler.

Index > Main > where is the "base address" of PIIX3 ?

Author
Thread Post new topic Reply to topic
ouadji



Joined: 24 Dec 2008
Posts: 1081
Location: Belgium
ouadji 13 Apr 2011, 22:08

from INTEL "290566-001.pdf" (IOAPIC - 82093AA) clic
....
Memory Mapped Registers For Accessing IOAPIC Registers = FEC0xy00h
"xy" are determined by the x and y fields in the "APIC Base Address Relocation Register" ... this register is located in the PIIX3.
(Range for x = 0-Fh and the range for y = 0,4,8,Ch)

from INTEL "290550-002.pdf" (PIIX3 - 82371SB) clic
...
APIC BASE ADDRESS RELOCATION REGISTER (Function 0) (PIIX3)
Address Offset: 80h
Default Value: 00h
Attribute: Read/Write
This register provides the modifier for the APIC base address.
APIC is mapped in the memory space at the locations FEC0_xy00h and FEC0_xy10h (x=0-Fh, y=0,4,8,Ch). The value of ’y’ is defined by bits [1,0] and the
value of ’x’ is defined by bits [5:2].


where is the "base address" of PIIX3 ??? Crying or Very sad

(I think that's the south bridge controller)

thank you all, Wink
[/url]

_________________
I am not young enough to know everything (Oscar Wilde)- Image
Post 13 Apr 2011, 22:08
View user's profile Send private message Send e-mail Reply with quote
Alphonso



Joined: 16 Jan 2007
Posts: 295
Alphonso 14 Apr 2011, 00:57
You could enumerate PCI and look for VID:DID (8086h:7000h) of PIIX3 and/or base and sub class 0601h for ISA Bridge then read the register at 80h.

If PIIX is bus 0 device 7 then

Code:
        mov eax,80003880h       ; 80000000h or Bus shl 16 or Device shl 11 or Function shl 8 or Register
        mov dx,0cf8h
        out dx,eax
        mov dx,0cfch
        in  eax,dx            ; al = Register 80h    
Post 14 Apr 2011, 00:57
View user's profile Send private message Reply with quote
ouadji



Joined: 24 Dec 2008
Posts: 1081
Location: Belgium
ouadji 14 Apr 2011, 08:13

thank you very much Alphonso

_________________
I am not young enough to know everything (Oscar Wilde)- Image
Post 14 Apr 2011, 08:13
View user's profile Send private message Send e-mail Reply with quote
edfed



Joined: 20 Feb 2006
Posts: 4353
Location: Now
edfed 14 Apr 2011, 09:48
where is the uptodate port list of the PC? for example, port list of a recent laptop with a recent CPU?

because everywhere i look, the port list is a little outdated, like 10 years old, or more.

it can be interresting too to have a port list of every major pci, isa, agp, etc cards.

even if these datas maybe proprietary, it can be very good to know them.

there are not so much pci cards models.
Post 14 Apr 2011, 09:48
View user's profile Send private message Visit poster's website Reply with quote
neville



Joined: 13 Jul 2008
Posts: 507
Location: New Zealand
neville 14 Apr 2011, 20:16
edfed wrote:
it can be interresting too to have a port list of every major pci, isa, agp, etc cards... there are not so much pci cards models.
There aren't so many ISA cards around these days either! Wink
But I totally agree with your sentiments edfed. The pity is that more and more of our beloved pc's are being built with proprietary bits which is taking a lot of the fun out of them Sad

_________________
FAMOS - the first memory operating system
Post 14 Apr 2011, 20:16
View user's profile Send private message Visit poster's website Reply with quote
ouadji



Joined: 24 Dec 2008
Posts: 1081
Location: Belgium
ouadji 14 Apr 2011, 22:02

i found de solution

IOAPIC Base address = 0xFECxy000

but what are the values of : "xy"

ICH10 controller...

Code:
;319973.pdf (Intel® I/O Controller Hub 10 ICH10 Family)
;(1)
;RCBA Root Complex Base Address Register ---> 319973.pdf/13.1.36
;bus:0 device:31 function:0 Offset:F0-F3h (R/W 32 bits)
;[31:14] Base Address (BA) for the root complex register block decode range.
;        aligned on a 16-KB boundary - R/W
;[13:1]  Reserved
;[0]     Enable (EN)  R/W. When set, enables the range specified in BA to be claimed as the
;        Root Complex Register Block.
;(2)
;After that : 319973.pdf/10.1.68 (APIC Range Select  - ASEL)
;Offset Address: 31FE–31FFh 16bits r/w

          mov     eax,0x8000F8F0
              ;bus:0 device:31 function:0 Offset:F0
               mov     dx,0cf8h   ; thank to Alphonso Smile
          out     dx,eax
              mov     dx,0cfch
            in      eax,dx
              and     eax,not 0x3FFF  ;physical RCBA

                invoke  MmMapIoSpace, eax, 0, 4*PAGE_SIZE, mNonCached
                push     eax             ;eax = mapped RCBA

              mov     bx,[eax + 0x31FE]
                           ;bl == xy <<========== here
                           ;Default Value: 00h -> 0xFEC(00)000
          pop     eax
         invoke  MmUnmapIoSpace, eax, 4*PAGE_SIZE
    

_________________
I am not young enough to know everything (Oscar Wilde)- Image
Post 14 Apr 2011, 22:02
View user's profile Send private message Send e-mail Reply with quote
Display posts from previous:
Post new topic Reply to topic

Jump to:  


< Last Thread | Next Thread >
Forum Rules:
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Copyright © 1999-2024, Tomasz Grysztar. Also on GitHub, YouTube.

Website powered by rwasa.