Commit Graph

12216 Commits

Author SHA1 Message Date
Sebastian Huber
d19cce29dc score: Per-CPU thread dispatch disable level
Use a per-CPU thread dispatch disable level.  So instead of one global
thread dispatch disable level we have now one instance per processor.
This is a major performance improvement for SMP.  On non-SMP
configurations this may simplifiy the interrupt entry/exit code.

The giant lock is still present, but it is now decoupled from the thread
dispatching in _Thread_Dispatch(), _Thread_Handler(),
_Thread_Restart_self() and the interrupt entry/exit.   Access to the
giant lock is now available via _Giant_Acquire() and _Giant_Release().
The giant lock is still implicitly acquired via
_Thread_Dispatch_decrement_disable_level().

The giant lock is only acquired for high-level operations in interrupt
handlers (e.g. release of a semaphore, sending of an event).

As a side-effect this change fixes the lost thread dispatch necessary
indication bug in _Thread_Dispatch().

A per-CPU thread dispatch disable level greatly simplifies the SMP
support for the interrupt entry/exit code since no spin locks have to be
acquired in this area.  It is only necessary to get the current
processor index and use this to calculate the address of the own per-CPU
control.  This reduces the interrupt latency considerably.

All elements for the interrupt entry/exit code are now part of the
Per_CPU_Control structure: thread dispatch disable level, ISR nest level
and thread dispatch necessary.  Nothing else is required (except CPU
port specific stuff like on SPARC).
2013-08-09 23:02:38 +02:00
Sebastian Huber
838d71427b bsp/pc386: Provide local outb() for elink driver 2013-08-09 15:24:13 +02:00
Chris Johns
c31a71298f bsp/xilinx_zynq_zc706_smp: Add. 2013-08-09 18:22:42 +10:00
Nick Withers
efdda56546 Use $(EXEEXT) [defaults to "exe"] to generate binaries 2013-08-09 09:18:23 +02:00
Pavel Pisa
98bcf4ff6e bsp/csb336: implement bsp_interrupt_vector_enable/disable.
Signed-off-by: Pavel Pisa <ppisa@pikron.com>
2013-08-09 09:01:51 +02:00
Pavel Pisa
e4b16ea919 bsp/csb336: Fix MMU _ttbl_base location to not overlap with exception vectors.
The initial region (64 bytes) of SDRAM RTEMS image is remapped
to provide overlay of the initial/ROM exceptions table.
This area cannot be used for MMU mapping table. Different correctly
aligned block has to be used for MMU table. Remapping of SDRAM
(address 0x08200000) to address 0 is supported only on 1 MB block
granularity and that is why SDRAM_VEC area has to be 1 MB aligned too
but unused part of remapped region can be freely used for other
purposes (as MMU tables).

Signed-off-by: Pavel Pisa <ppisa@pikron.com>
2013-08-09 08:49:55 +02:00
Sebastian Huber
ae75429ca1 PR766: Delete __RTEMS_VIOLATE_KERNEL_VISIBILITY__ 2013-08-08 14:11:22 +02:00
Sebastian Huber
006304112a PR766: Delete __RTEMS_APPLICATION__
This define is no longer used.
2013-08-08 14:11:21 +02:00
Chris Johns
e932c53698 bsp/xilinx_zynq_zc706: Add. 2013-08-08 15:34:01 +10:00
Sebastian Huber
5a556e4ea8 bsp/realview-pbx-a9: Enable fast idle clock 2013-08-06 11:03:21 +02:00
Sebastian Huber
f031df0e63 score: Rename tod.h to todimpl.h 2013-08-01 16:45:45 +02:00
Sebastian Huber
c236082873 smp: Provide cache optimized Per_CPU_Control
Delete _Per_CPU_Information_p.
2013-07-31 15:09:04 +02:00
Sebastian Huber
b23abb48d8 bsps/i386: Include missing header and fix warnings 2013-07-30 17:22:25 +02:00
Sebastian Huber
fe52e7c07c smp: Add and use _Per_CPU_Get()
Add and use _Per_CPU_Get_by_index() and _Per_CPU_Get_index().  Add
_Per_CPU_Send_interrupt().  This avoids direct access of
_Per_CPU_Information.
2013-07-30 09:53:23 +02:00
Vipul Nayyar
2bdcf4fd51 Updated legacy code in i386 pc386 2013-07-29 09:07:19 +02:00
Sebastian Huber
fcff6c7190 bsp/nds: Include missing <rtems/framebuffer.h> 2013-07-26 11:55:48 +02:00
Sebastian Huber
4e00fe62d3 bsps: Include missing <rtems/score/heapimpl.h> 2013-07-26 11:55:48 +02:00
Vipul Nayyar
1f4321b8fd Removed legacy data types from arm 2013-07-26 11:55:48 +02:00
Pavel Pisa
02632e83e0 bsp/csb336: mc9328mxl correct AITC access in bsp_interrupt_dispatch.
The original version is missing void and result is that (*x >> 16) is
optimized to ldh rX,[rY]. But it is not allowed/supported to access
bus/address range used by AITC by other than 32 bit wide accesses
and 16-bit access results in the data abort exception.
The corrected version works on real hardware and is even
more readable.

Signed-off-by: Pavel Pisa <ppisa@pikron.com>
2013-07-26 11:55:47 +02:00
Sebastian Huber
88c74ab115 score: Merge tod implementation into one file
Delete TOD_MICROSECONDS_PER_SECOND, TOD_MICROSECONDS_TO_TICKS() and
TOD_MILLISECONDS_TO_TICKS().
2013-07-26 11:55:47 +02:00
Sebastian Huber
a2e3f33f39 score: Create object implementation header
Move implementation specific parts of object.h and object.inl into new
header file objectimpl.h.  The object.h contains now only the
application visible API.
2013-07-26 11:55:47 +02:00
Sebastian Huber
0c3edbf0cf Include missing <rtems/score/threaddispatch.h> 2013-07-26 11:55:47 +02:00
Peter Dufault
b3a84034e2 bsp/mpc55xx: Fix prototype 2013-07-24 15:49:53 +02:00
Sebastian Huber
39046f766f score: Merge sysstate API into one file 2013-07-24 11:11:21 +02:00
Sebastian Huber
83015b16b5 bsp/lpc32xx: Fix memory map for GPIO registers 2013-07-24 11:11:20 +02:00
Sebastian Huber
7660e8b347 Include missing <string.h> 2013-07-23 15:12:54 +02:00
Karel Gardas
dbce4c603d bsp/stm32f4: fix typo in USART2 device name 2013-07-22 16:58:28 +02:00
Ralf Kirchner
2f589cccae bsp/gen83xx: Fix BSP options for MPC8348EAMDS 2013-07-18 10:19:38 +02:00
Sebastian Huber
ca63ae2ec0 smp: Add and use _CPU_SMP_Send_interrupt()
Delete bsp_smp_interrupt_cpu().
2013-07-17 13:09:50 +02:00
Sebastian Huber
39e51758c8 smp: Add and use _CPU_SMP_Get_current_processor()
Add and use _SMP_Get_current_processor() and
rtems_smp_get_current_processor().

Delete bsp_smp_interrupt_cpu().

Change type of current processor index from int to uint32_t to match
_SMP_Processor_count type.
2013-07-17 13:09:49 +02:00
Ric Claus
3923472555 bsps/arm: Fix for top of the address space 2013-07-17 10:13:34 +02:00
Ric Claus
691e0eff5d bsp/xilinx-zynq: Provide BSP variants 2013-07-17 10:13:31 +02:00
Sebastian Huber
51a58e0c83 bsp/xilinx-zynq: Use bsp_console_select() 2013-07-17 10:13:27 +02:00
Sebastian Huber
7306578c42 bsps/serial: Move bsp_console_select() declaration 2013-07-17 08:19:59 +02:00
Sebastian Huber
3ccaf3c9f3 bsps: Use rtems_task_self() 2013-07-16 19:09:25 +02:00
Sebastian Huber
85d2e4b58f libchip/ata: Remove dead code 2013-07-16 19:09:25 +02:00
Vipul Nayyar
ad4ce28ba8 Updated legacy code in arm edb7312 2013-07-16 08:30:13 +02:00
Sebastian Huber
06adfae309 bsps/arm: Disable alignment exceptions 2013-07-16 08:25:26 +02:00
Sebastian Huber
c8d78ee510 bsp/mpc55xx: Add MPC5668G support 2013-07-15 11:57:13 +02:00
Vipul Nayyar
583eb4588f bsp/rtl22xx: Use IRQ extensions API 2013-07-15 11:51:50 +02:00
Vipul Nayyar
163e88a8c3 bsp/gumstix: Fix warnings 2013-07-12 21:58:13 +02:00
Vipul Nayyar
9b6add418c Updated Legacy code in arm gba 2013-07-12 14:01:20 +02:00
Sebastian Huber
5252822cb4 bsps: Simplify bsp_generic_fatal() declaration 2013-07-11 10:07:39 +02:00
Joel Sherrill
79363a1d56 libbsp/shared/generic-fatal.h: Add RTEMS_COMPILER_NO_RETURN_ATTRIBUTE to bsp_f 2013-07-10 12:38:12 -05:00
Vipul Nayyar
e183211be1 Updated Legacy code in arm gumstix 2013-07-10 12:26:25 -05:00
Vipul Nayyar
893d66937a Updated Legacy code in arm edb7312 2013-07-10 12:23:50 -05:00
Sebastian Huber
26c093e556 bsp/virtex: Use #if instead of #ifdef
This allows VIRTEX_CONSOLE_USE_INTERRUPTS=0 on the configure command
line to disable the interrupt mode.
2013-07-10 14:37:14 +02:00
Vipul Nayyar
52e44630e5 bsp/csb336: Use IRQ extensions API
Fix warnings.
2013-07-10 10:10:42 +02:00
Joel Sherrill
48a22edb4a libchip ns16550.c: Improve comment 2013-07-09 12:40:51 -05:00
Sebastian Huber
0a697dd92c bsp/virtex: Add VIRTEX_CONSOLE_USE_INTERRUPTS
Add interrupt support for console driver.
2013-07-09 16:42:01 +02:00