Illegal instruction After base addr alterd

Ian Wienand ianw@gelato.unsw.edu.au
Fri Apr 8 04:59:00 GMT 2005


On Fri, Apr 08, 2005 at 11:52:56AM +0800, Zhenyu Guo wrote:
> Ok, I've found that the vma bits[51...60] are not implemented on
> Itanium, so addr 0x5000000000000000 (0x7000000000000000 ) is invalid.
> I've changed to 0x4000100000000000 this time. There is no Illegal
> instruction err then.
> However, I failed running the ''hello world!" again. The app seemed
> asleep.
> The stopped addr is 0x2000000000003c80.
> Any ideas?

While that address might be OK in terms of implemented bits (as you
identified, 0x5... isn't) it's still going to be above RGN_MAP_LIMIT
as defined in the kernel (/include/asm-ia64/page.h)

For 16KB pages, your base address will need to be below
0x4000000000000000 + 0xfffffffc000 (calcuated with)

---

#define PAGE_SHIFT 14
#define PAGE_SIZE               (1UL << PAGE_SHIFT)
#define RGN_MAP_LIMIT   ((1UL << (4*PAGE_SHIFT - 12)) - PAGE_SIZE)

int main(void)
{
        printf("%lx\n", RGN_MAP_LIMIT);
}

---

If I modify the executable base in the linker script to something
below this address (e.g. 0x4000000020000000) it works OK for hello
world, at least.

-i
ianw@gelato.unsw.edu.au
http://www.gelato.unsw.edu.au
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <https://sourceware.org/pipermail/binutils/attachments/20050408/dc96c2ff/attachment.sig>


More information about the Binutils mailing list