* amba/amba.c, startup/bspstart.c: Moved most of the remaining CPU
Table fields to the Configuration Table. This included
pretasking_hook, predriver_hook, postdriver_hook, idle_task,
do_zero_of_workspace, extra_mpci_receive_server_stack,
stack_allocate_hook, and stack_free_hook. As a side-effect of this
effort some multiprocessing code was made conditional and some style
clean up occurred.
* Makefile.am: Moved most of the remaining CPU Table fields to the
Configuration Table. This included pretasking_hook, predriver_hook,
postdriver_hook, idle_task, do_zero_of_workspace,
extra_mpci_receive_server_stack, stack_allocate_hook, and
stack_free_hook. As a side-effect of this effort some multiprocessing
code was made conditional and some style clean up occurred.
* shared/irq/i8259.c, shared/irq/irq.h, shared/irq/irq_supp.h,
shared/irq/openpic_i8259_irq.c: BSP_disable_irq_at_pic(),
openpic_disable_irq(), BSP_irq_disable_at_i8259s() now return
0/1 if irq was disabled/enabled prior to disabling.
irq_supp.h now exports a inline helper routine for scanning
a list of shared handlers; to be used by PIC drivers.
* irq/irq_init.c: added new args to openpic_init().
This BSP probably needs them (8245 has an EPIC).
I would be surprised if the PCI interrupts with the
old code actually worked...
* shared/openpic/openpic.c shared/openpic/openpic.h,
shared/irq/irq_init.c: added more parameters to
openpic_init() so that more details of the configuration
can be overridden/set from the BSP. Moved setup of
the EPIC-specific EOI delay from BSP code into openpic_init()
using the new 'epic_freq' parameter.
* shared/openpic/openpic.c, shared/openpic/openpic.h:
- eliminated conditional compilation (#ifdef mpc8240)
The difference in register-layout between the EPIC
and the std. openPIC is handled by an offset parameter
which can be set at run-time (initialization) with
a new routine 'openpic_set_src_offset()'.
- allow BSP to define symbol BSP_OPEN_PIC_BIG_ENDIAN
which builds the driver for big-endian register access
(mpc8540).
- openpic_disable_irq() now returns the old state so
that it can be restored later.
* shared/irq/openpic_i8259_irq.c:
- conditionally define 'irq_mask_or_tbl' only if
BSP_PCI_ISA_BRIDGE_IRQ is defined.
- use _ISR_Get_level() / _ISR_Set_level() for re-enabling
interrupts rather than messing with MSR directly;
these macros:
o implement compiler memory barrier
o will handle multiple levels (e500 'critical' interrupts)
if they are ever supported.
- decrementer irqs are also shareable - added list traversal.
* shared/irq/irq_supp.h: Make sure BSP_SHARED_HANDLER_SUPPORT
is set. The shared irq manager supports shared interrupts
(but requires also that the PIC-driver supports them by
traversing the list of shared handlers).
Declare C_dispatch_irq_handler() which must be defined
(like the other routines declared in this header) by the
PIC-driver.
* shared/pci/detect_raven_bridge.c: use ifdef mvme2100
rather than ifdef mpc824x so that we don't depend on
compile-time CPU flavor. Eventually, this should become
a run-time check.
* shared/vme/vmeconfig.c: Include <libcpu/bat.h> only
if the BSP-specific configuration header (VMEConfig.h)
defines BSP_VME_BAT_IDX so that this file can be used
on CPUs w/o bats (e500).
* new-exceptions/raw_exception.c, new-exceptions/raw_exception.h,
old-exception/cpu.c: define bsp_exceptions_in_RAM variable.
This is probably only used by the simulator (were else
can you install something to ROM ??).
* mpc6xx/mmu/bat.c, mpc6xx/mmu/pte121.c: use new
feature-checks from cpuIdent.h rather than filtering
CPU types when checking for availability of high BATs
and an MMU with hardware page-table lookup.
* shared/include/cpuIdent.h, shared/include/cpuIdent.c:
Added a simple 'feature check' facility. Code should
not check for a particular CPU type if possible but
check the respective feature bit (e.g., 'has_altivec').
This makes it much less cumbersome to add more CPU
types in the future.
* shared/startup/pretaskinghook.c: Replaced inclusion of
<bsp/consoleIo.h> by <rtems/bspIo.> (for printk) and
made it conditional on #ifdef SHOW_MORE_INIT_SETTINGS.
* Makefile.am, irq/irq.c: fixed source-tree path of irq_supp.h,
fixed type of 1st arg to C_dispatch_irq_handler() which
is NOT a CPU_Interrupt_frame but a BSP_Exception_frame
(not that it is ever used but the two layouts differ).
* shared/irq/irq.h, shared/irq/irq.c, shared/irq/irq_init.c,
shared/irq/irq_supp.h (added):
Removed 'is_processor_irq()' from irq.c; the BSP routines
BSP_enable_irq_at_pic()/BSP_disable_irq_at_pic() are required
to ignore processor irqs anyways. Removed
all BSP-defined constants from irq.c. This makes irq.c (almost)
binary-compatible among BSPs (ultimate goal is making 'shared'
a library).
Added a header (irq_supp.h) defining the interface between
the generic interrupt manager (irq.c) and the routines it
requires to be supplied by the BSP (eventually, these
should go into rtems/irq.h).
* irq/irq.h, irq/irq_init.c: Removed the definition
of ASM_IRQ_VECTOR_BASE; this symbol was only use to
initialize the irqBase member of the rtems_irq_global_settings
struct. However, irqBase is an rtems_irq_symbolic_name,
so using BSP_LOWEST_OFFSET is more appropriate.
* irq/irq.h, irq/irq_init.c: Removed the definition
of ASM_IRQ_VECTOR_BASE; this symbol was only use to
initialize the irqBase member of the rtems_irq_global_settings
struct. However, irqBase is an rtems_irq_symbolic_name,
so using BSP_LOWEST_OFFSET is more appropriate.
* irq/irq.h, irq/irq.c (removed), irq/no_pic.c (added),
irq/irq_init.c, Makefile.am: The PSIM BSP (currently)
has no support for an interrupt controller or interrupts
other than the decrementer. Removed all definitions for PCI + ISA
interrupts and all unnecessary code (leftovers from copying).
Separated PIC-specific bits into 'no_pic.c' which allows us
to use 'irq.c' (i.e., more code) from 'shared'.
* startup/linkcmds.c, start/start.S: call __eabi() from start.S
and make sure linkcmds defines _SDA_BASE_ + _SDA2_BASE_ so that
sysv + eabi are properly supported.
* shared/include/grspw.h, shared/spw/grspw.c: GRSPW SpaceWire Driver.
Fixes typecast to volatile integer instead of to integer. Added
scanning for GRSPW2 Core, The GRSPW2 core is run in legacy mode.
* shared/can/occan.c: LEON2/3 OCCAN CAN driver. Fixes typecast to
volatile integer where needed. Fixes bug where closing the driver and
opening it again could make the driver not starting transmission due
to the software fifo was not cleared.
* rasta/rasta.c: LEON2 PCI RASTA driver. Changes RASTA PCI interrupt to
5 from 4. This is to avoid conflict with the LAN9C111 network MAC
driver using interrupt 4.
* shared/can/grcan.c, shared/can/grcan_rasta.c,
shared/include/ambapp.h: GRCAN CAN driver. Fixes Interrupt
enabling/disabling in the driver, interrupt may not be restored
correctly. Implements the baud rate calculation routine. Removed
unnecessary printk. Fixed scanning to support GRCAN and GRHCAN
hardware. Added GRCAN device number to ambapp.h.
* startup/bspstart.c, Makefile.am: Initialize BATs and enable MMU
to come closer to what other BSPs do. This allows us to use the
shared irq_asm.S. No more individual assembly code :-)