This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
Re: Question about fixed vector table(ARM).
- From: Mark Salter <msalter at redhat dot com>
- To: jameshq at liverpool dot ac dot uk
- Cc: ecos-discuss at sources dot redhat dot com
- Date: Thu, 16 May 2002 07:58:34 -0400
- Subject: Re: [ECOS] Question about fixed vector table(ARM).
- References: <KIEBICHBADHFCLGCKOPDKEAGCMAA.jameshq@liv.ac.uk>
>>>>> HuangQiang writes:
> Thank you very much. I still have one question about the fixed vector table.
> In ARM vectors.s file takes care of the vector table(from 0x00) setup and
> fixed vector table(from 0x20) setup. While branch to the vector it first
> branch to the vector table(from 0x00) and then directed to fixed vector
> table(from 0x20) then to the actual services routine. Why this fixed vector
> table is needed here? Can't we just setup the vector table (from 0x00) and
> branch to the services routine indirection of fixed vector table?
A branch instruction has only a 24-bit range, so you would not
have access to the full address range if you used a branch in
the CPU vector table. We use the table at 0x20 to hold full 32-bit
addresses of the service routines. The instructions in the CPU
vector table simply load those 32-bit values to the PC register.
--Mark
--
Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss