Implement the Processor_mask via <sys/bitset.h>. Provide
_Processor_mask_To_uint32_t() to enable its use in device specific
routines, e.g. interrupt affinity register in an interrupt controller.
Update #3059.
Change bsp_interrupt_vector_enable() and bsp_interrupt_vector_disable()
to not return a status code. Add bsp_interrupt_assert() and use it to
validate the vector number in the vector enable/disable implementations.
Update ticket #2891 and my GSOC project
add c/src/lib/libbsp/arm/beagle/i2c/bbb-i2c.c
modify c/src/lib/libbsp/arm/beagle/include/i2c.h
modify c/src/lib/libbsp/arm/beagle/include/bbb-gpio.h
modify c/src/lib/libcpu/arm/shared/include/am335x.h
modify c/src/lib/libbsp/arm/beagle/Makefile.am
Now can read the EEPROM by i2c, the test application link is: https://github.com/hahchenchen/GSOC-test-application
According to manual, the used operations (Clean Line by PA, Clean and
Invalidate Line by PA, Cache Sync) are atomic and do not require
locking.
Update #3007.
There is no need to save the thread pointer in _CPU_Context_switch()
since it is a thread invariant. It is initialized once in
_CPU_Context_Initialize().
Enable/disable vector routines now check for a valid vector. Without
these guards, the enable/disable vector routines will not work with the
interrupt server.
Remove obsolete support for OFILL, OFDEL, NLDLY, CRDLY, BSDLY, VTDLY,
and FFDLY which is not present on FreeBSD and not implemented in Linux.
Update #2833.
There are mismatched sections in the bootloader input:
ld: Warning: ticker.exe uses hard float, ticker.ralf uses soft float
ld: ticker.exe: compiled normally and linked with modules compiled with -mrelocatable
ld: failed to merge target specific data of file ticker.exe
Suppress this error explicitly.
Set the proper output format in the linker script for the bootloader.
Otherwise the generic linker is used since Binutils 2.28 which does not
understand the PowerPC-specific relocations.
The SYM define concatenates the input with the compiler set
__USER_LABEL_PREFIX__ define. This define appears to be '_' in GCC but
empty in Clang. Therefore when compiling with Clang/LLVM 'SYM(start)'
and 'start' defines the same symbol, and the compiler complains that the
symbol is defined twice.
- All references of %0 changed to %g0
- 'call label,0' changed to 'call label'. According to the sparc
specification call does not take any registers
- '.seg "text"' changed to '.section ".text"'
- the synonym stub is replaced with stb
- the synonym stuh is replaced with sth
The following functions now reports to the user that an overrun has
occured by returning errno EIO:
* grtc_read, on overrun and no more data in the DMA buffer
* ioctl(GRTC_IOC_RECV), on overrun and no more frames in the DMA buffer
* ioctl(GRTC_IOC_ISSTARTED), EIO is returned on overrun
This driver was initially intended for APBUART access on GRLIB PCI
peripherals (AMBA-over-PCI). There are already many APBUART drivers
for LEON. Instead of using this one the termios APBUART should work
on AMBA-over-PCI systems with recent changes on LEON3, however that
has not been tested yet.
The common interrupt layer for GRLIB PCI perihperals is prepared for SMP
support by this patch. The existing locking (interrupt disabling) is
replaced by a new requirement on the user to implement locking before
calling the genirq API. This approach avoids taking more locks than
necessary.
The split up of the locks also introduces that the user must allocate
memory to describe ISR handlers, to avoid calling malloc()/free() while
possessing a spin-lock and interrupts are globally disabled.
It is also required to use semaphore release instead of flush when stopping
or on BUSOFF/AHBERR condition. Otherwise a task just about to wait
(taking the semaphore) could end up locked because the semaphore count is
still the same.
There was previously a scenario where the semaphore flush would not always make
semaphore obtain to return in case of BUSOFF, AHBERROR or grcan_stop. It has to
do with the rtems_semaphore_flush() not releasing the semaphore but just aborts
any _current_ waiter.