Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is address 0xFFFFFFF0 hardwired for system BIOS ROM?

I read this from a previous stack overflow answer:

At initial power on, the BIOS is executed directly from ROM. The ROM chip is mapped to a fixed location in the processor's memory space (this is typically a feature of the chipset). When the x86 processor comes out of reset, it immediately begins executing from 0xFFFFFFF0.

Follow up questions,

Is this address 0xFFFFFFF0 hardwired just to access the system BIOS ROM and later after the system is up and running this address 0xFFFFFFF0 can not be used by RAM?

Also, when this address 0xFFFFFFF0 is being us to access the system BIOS ROM, is the CPU accessing it as an IO device or Memory device?

like image 523
Yetimwork Beyene Avatar asked Nov 01 '22 01:11

Yetimwork Beyene


1 Answers

At power up, it is ROM. Has to be or the CPU would be unable to boot. Some chipsets have register bits that allow you to unmap the BIOS flash chip from the memory address space. Of course you should not do this while executing from ROM!

There is a common technique on PC hardware called "shadowing" where the BIOS will copy the contents of the ROM chip into RAM mapped at the same address. RAM is generally much faster than ROM, so it can speed up the system.

As for your second question, it is a memory device. It must be for the following reasons:

  1. I/O addresses are 16-bits, not 32.
  2. An x86 processors cannot execute code from I/O space. You cannot point the Instruction Pointer to an I/O address.
like image 120
myron-semack Avatar answered Nov 09 '22 11:11

myron-semack