This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC 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: Enquiry


On Tue, Jun 02, 2009 at 10:02:08PM +0900, Vijay Holimath wrote:
> Dear Sir,
> 
>         I am using gcc compiler for v850e cpu. When I use the 
> arrtribute: __attribute__ ((interrupt_handler)) or __attribute__ 
> ((interrupt); for interrupt function,  say for example
> 
> void swnmi() __attribute__ ((interrupt_handler));
> 
> void swnmi()
> {
> ...
> ..
> }
> 
> main()
> {
> ..
> ..
> }
> 
> I am getting following error messages when I compile:
> 
> main.o (.text+0xea): In function 'swnmi': undefined reference to '__ep'
> 
> main.o (.text+0xee): In function 'swnmi': undefined reference to '__ep'
> 
> collect2: Id returned 1 exit status
> 
> 
> I will be grateful to you if you could help me to get rid of these error 
> messages.  Probably I have to link some libraries?

I worked on the V850 many years ago and added the initial ep support, but I
haven't touched it for quite some time.

The symbol __ep is expected to be the address to be loaded into the ep (r30)
register, which is used in smaller instructions.  As you may or may not know,
the V850 has a small data area that ep points to, and when the compiler is
optimizing to use ep for other purposes, it needs to restore it after its done.
The gnu linker creates __ep in the file scripttempl/v850.sc at the beginning of
the .tdata section (.tdata is for tiny data).

The reference to __ep is generated in callt_return_interrupt, and is done if
you use the -mprolog-function and -mno-long-calls options (or they are set by
default).

-- 
Michael Meissner, IBM
4 Technology Place Drive, MS 2203A, Westford, MA, 01886, USA
meissner@linux.vnet.ibm.com


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