LPC23xx firmware upgrade

Hi,

In lpc2364 MCU,I am implementing a bootloader which uses IAP apis, At location 0x0000 i have the bootloader code from here i am call my application which is loaded at location 0x8000 through jtag programmer.In this procedure my application at loaction 8000 is working fine.

Then I loaded the same application at loaction 0x8000 by IAP API and cross verified the code the code loaded by my program and JTAG programmer is same.but at the instuction

0x00008000 E59FF018 LDR PC,[PC,#0x0018]

at his loaction the value of PC is 0x8000 but after this instruction the value of PC should be 0x8058 but in the code which is loaded by IAP API the PC becomes 0x0058. Do i want to do any presettings to execute the above instuction correctly.

This not only happening at exceptions, at the below location also

0x0000814C E59F000C LDR R0,[PC,#0x000C]

0x00008150 E12FFF10 BX R0

At the start of the instuction the value of PC is 0x814c

Here after this instuction the value of R0 should be 0x8164 but in this case its becoming 0x0164.

This is happening only for the code which i loaded using IAP apis, If load the code through ULINK debugger its working fine.

Kindly help me to solve this issue .If u didnt understand kindly inform… so that i wil explain in details.