This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Illegal instruction After base addr alterd


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

Attachment: signature.asc
Description: Digital signature


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]