Jakob Gruber [Thu, 2 Aug 2012 08:45:30 +0000 (10:45 +0200)]
lin: Convert logging to AVR_LOG()
Jakob Gruber [Thu, 2 Aug 2012 08:45:11 +0000 (10:45 +0200)]
flash: Convert logging to AVR_LOG()
Jakob Gruber [Thu, 2 Aug 2012 08:33:06 +0000 (10:33 +0200)]
eeprom: Convert logging to AVR_LOG()
Jakob Gruber [Thu, 2 Aug 2012 08:30:55 +0000 (10:30 +0200)]
bitbang: Convert logging to AVR_LOG()
Jakob Gruber [Thu, 2 Aug 2012 08:29:51 +0000 (10:29 +0200)]
adc: Convert logging to AVR_LOG()
Jakob Gruber [Thu, 2 Aug 2012 08:05:02 +0000 (10:05 +0200)]
timer: Remove trace_flags
All uses have been converted to AVR_LOG().
Jakob Gruber [Wed, 1 Aug 2012 14:30:09 +0000 (16:30 +0200)]
timer: Convert to logging to AVR_LOG()
Jakob Gruber [Thu, 2 Aug 2012 07:49:34 +0000 (09:49 +0200)]
core: Introduce a logging macro AVR_LOG()
This works in conjunction with avr->log to tune out messages we are not
interested in. LOG_ERROR is the default level.
Jakob Gruber [Thu, 2 Aug 2012 07:41:05 +0000 (09:41 +0200)]
run_avr: Add -v argument to raise verbosity level
Pass it more than once to raise it further. This works better with the
standard conventions, which would allow passing -vvv (instead of -v -v
-v). Unfortunately, this does not work here.
The type of avr->log has been altered to accomodate values up to 3.
Jakob Gruber [Sat, 4 Aug 2012 18:10:18 +0000 (20:10 +0200)]
cores: Move static to front of declaration
This fixes the two -Wold-style-declaration warnings reported by gcc with
-Wextra.
Jakob Gruber [Sat, 4 Aug 2012 13:35:24 +0000 (15:35 +0200)]
mega1280: Initialize UART 2 and 3
These definitions already existed but were not initialized.
Jakob Gruber [Sat, 4 Aug 2012 13:10:05 +0000 (15:10 +0200)]
mega1280: Add missing timers 4 and 5
These are 16-bit timers similar to Timer1 and Timer3.
Jakob Gruber [Sat, 4 Aug 2012 13:28:06 +0000 (15:28 +0200)]
core: Increase MAX_IOs for atmega1280
The atmega1280 uses IO registers up to an address of 0x136.
Set MAX_IOs to (0x136 - 0x20 + 0x01) = 279.
Jakob Gruber [Wed, 1 Aug 2012 15:01:37 +0000 (17:01 +0200)]
core: Don't sleep with pending interrupts
This avoids an issue in which we would incorrectly enter a state in
which the CPU was sleeping and interrupts were disabled. It occurred
when an interrupt was raised and a SLEEP instruction processed before
the interrupt could be serviced (due to pending wait).
There are several disadvantages: if somebody adds new code which
switches the CPU to sleeping, there's a good chance of them forgetting
to add this check. Preventing sleep even if the interrupt is masked is
probably harmless but incorrect. Finally, on a real AVR it _is_ possible
to trigger an interrupt and then go to sleep in the next instruction
before the interrupt is serviced.
I'd actually prefer fixing this by moving the CPU interrupt wakeup from
avr_raise_interrupt() to avr_service_interrupts(), but that requires
further changes to avoid sleeping during avr->run() while an interrupt
is about to be serviced.
Jakob Gruber [Tue, 31 Jul 2012 10:46:59 +0000 (12:46 +0200)]
cores: Set raise_sticky in TWI interrupt vectors
Jakob Gruber [Tue, 31 Jul 2012 10:43:46 +0000 (12:43 +0200)]
interrupts: Introduce raise_sticky flag
If set, the raise bit is not cleared in avr_clear_interrupt. This
corresponds to the hardware not clearing the interrupt flag when
executing the interrupt routine.
The only known example of this is the TWI Interrupt Flag TWINT.
Jakob Gruber [Tue, 31 Jul 2012 10:42:59 +0000 (12:42 +0200)]
interrupts: Do not clear raised bit twice
avr_regbit_clear is already called in avr_clear_interrupt.
Jakob Gruber [Tue, 31 Jul 2012 10:22:22 +0000 (12:22 +0200)]
twi: Correct swapped twi irq names
Jakob Gruber [Tue, 31 Jul 2012 08:45:07 +0000 (10:45 +0200)]
interrupts: Typo correction (pooling -> polling)
Jakob Gruber [Fri, 27 Jul 2012 11:58:13 +0000 (13:58 +0200)]
misc: Consistent include guards in headers
Changed all include guard defines to a consistent form and added them if
missing.
Jakob Gruber [Fri, 27 Jul 2012 11:46:28 +0000 (13:46 +0200)]
misc: Add extern "C" blocks to headers
Most headers already had these. This commit adds them where they weren't
included yet.
Jakob Gruber [Thu, 26 Jul 2012 11:05:21 +0000 (13:05 +0200)]
simavr: Do not call avr_terminate in run callbacks
Neither run_avr nor the examples expect avr_terminate to be called by
simavr itself.
This also caused issues for cleanup code (such as IRQ disconnections)
that did not know if avr_terminate had already been called or not.
Jakob Gruber [Thu, 26 Jul 2012 10:46:49 +0000 (12:46 +0200)]
irq: Print errors to stderr
Trying to (dis)connect an invalid IRQ is an error. Note that the
incorrect function name printed in avr_unconnect_irq has been corrected.
Jakob Gruber [Thu, 26 Jul 2012 09:23:33 +0000 (11:23 +0200)]
twi: Move avr_twi_irq_msg to avr_twi.c
This fixes inclusion of avr_twi.h into C++ files.
Jakob Gruber [Mon, 23 Jul 2012 16:46:48 +0000 (18:46 +0200)]
interrupts: Don't wake up if not sleeping
This caused the CPU to wake up even if it was explicitly set to
cpu_Stopped.
Michel Pollet [Wed, 25 Jul 2012 08:24:39 +0000 (09:24 +0100)]
Makefile: Create .deb files using fpm
Handy way of creating debian packages quickly
Signed-off-by: Michel Pollet <buserror@gmail.com>
Jakob Gruber [Fri, 20 Jul 2012 19:52:05 +0000 (21:52 +0200)]
examples: Correct instructions for timer_64led example
Jakob Gruber [Fri, 20 Jul 2012 12:47:06 +0000 (14:47 +0200)]
run_avr: Abort if firmware could not be read
Otherwise, simavr continues and tries to process whichever random memory
content is located in the flash memory section even when the file could
not be read.
Jakob Gruber [Fri, 20 Jul 2012 12:19:48 +0000 (14:19 +0200)]
examples: hd44780 responds on falling edge of E pin
The example itself works both ways, but the actual HD44780 chip
processes data on the falling edge - see the data sheet.
Jakob Gruber [Thu, 19 Jul 2012 22:10:39 +0000 (00:10 +0200)]
examples: Fix frequency of ac_input signal
The comment in ac_input.h specifies 50 Hz, but it was actually 500 Hz.
This off-by-one-zero error probably went unnoticed because of inaccurate
sleep handling (which was fixed in the previous commit).
Jakob Gruber [Thu, 19 Jul 2012 21:37:02 +0000 (23:37 +0200)]
simavr: Improved accuracy of sleep durations
This commit solves (or at least improves) an issue that occurs when
short sleep times are requested in avr_callback_sleep_*. The operating
system cannot accurately handle short sleep requests, and sending many
short requests takes significantly longer than requesting the equivalent
time in longer bursts. This can be observed by running the board_hd77480
example - the counter is much slower when vcd recording is turned on
(= short sleep requests) than when it is turned off (= long sleep
requests).
We improve this situation by accumulating sleep requests until a certain
minimum count of pending usecs is reached which can be handled somewhat
accurately (200 microseconds worked well for me).
Jakob Gruber [Wed, 18 Jul 2012 10:37:50 +0000 (12:37 +0200)]
gdb: Read/write SREG values correctly
Accessing SREG through gdb seems to have been broken since SREG is no
longer synthesized at each instruction (
2f67001d). As a quick fix, make
SREG accessors public and use them in sim_gdb.
Note that invalid avr->sreg values no longer trigger the CRASH macro.
Jakob Gruber [Wed, 18 Jul 2012 08:16:14 +0000 (10:16 +0200)]
tests: Correct expected output of atmega88_uart_echo
Carriage return generation was added back to the file handler in
a26a2e43fc4b547090f3069e121713702593261d. Since the string is actually
passed through uart_putchar twice, the received string has a duplicate
'\r' character.
Michel Pollet [Mon, 16 Jul 2012 17:21:03 +0000 (10:21 -0700)]
Merge pull request #4 from schuay/markdown_syntax
Markdown syntax
Jakob Gruber [Mon, 16 Jul 2012 17:05:55 +0000 (19:05 +0200)]
misc: Update repository URL in README
Jakob Gruber [Mon, 16 Jul 2012 17:00:31 +0000 (19:00 +0200)]
misc: Fix broken links in README.md
Jakob Gruber [Mon, 16 Jul 2012 16:57:51 +0000 (18:57 +0200)]
misc: Github markdown uses indentation to mark code blocks
Jakob Gruber [Mon, 16 Jul 2012 17:08:35 +0000 (19:08 +0200)]
misc: Minor wording changes in README.md
Jakob Gruber [Mon, 16 Jul 2012 16:47:49 +0000 (18:47 +0200)]
misc: Github markdown uses underscores to italicize words
Michel Pollet [Mon, 16 Jul 2012 16:07:32 +0000 (09:07 -0700)]
Merge pull request #2 from schuay/watchpoints
Watchpoints
Michel Pollet [Mon, 16 Jul 2012 14:35:41 +0000 (07:35 -0700)]
Merge pull request #3 from schuay/not_known
misc: Fix confusing typo in error message
Jakob Gruber [Mon, 16 Jul 2012 14:30:06 +0000 (16:30 +0200)]
misc: Fix confusing typo in error message
Jakob Gruber [Mon, 16 Jul 2012 13:32:56 +0000 (15:32 +0200)]
gdb: Use early termination in gdb_watch_find*
Jakob Gruber [Fri, 13 Jul 2012 12:22:51 +0000 (14:22 +0200)]
gdb: Implemented watchpoint handling
Per data access, we never signal more than one watchpoint. Possible
scenarios are several watchpoints at the same address (for example
WATCH_ACCESS and WATCH_WRITE) or overlapping watchpoint ranges. This is
not completely correct.
Jakob Gruber [Fri, 13 Jul 2012 14:26:13 +0000 (16:26 +0200)]
gdb: Store watchpoints in avr_gdb_t
For now, quietly assume that all watchpoints are located in SRAM (with
0x800000 offset).
Jakob Gruber [Fri, 13 Jul 2012 14:25:27 +0000 (16:25 +0200)]
gdb: Prepare watchpoints_t data structure
In preparation for the watchpoint implementation define an
avr_gdb_watchpoints_t struct to handle both. The struct is only accessed
through gdb_watch_* functions, therefore changing its internals should
be easy.
Note that this implementation cannot handle different watchpoints at the
same address with a different size.
The avr_gdb_watch_type enum is public and will be used in sim_core.c in
a follow-up commit.
Michel Pollet [Fri, 13 Jul 2012 09:19:21 +0000 (02:19 -0700)]
Merge pull request #1 from schuay/master
Typos, mega1280 ADC channels
Jakob Gruber [Thu, 12 Jul 2012 12:56:34 +0000 (14:56 +0200)]
mega1280: Added upper ADC differential channels
Jakob Gruber [Wed, 11 Jul 2012 22:14:15 +0000 (00:14 +0200)]
misc: Fixed a couple of typos in comments
Michel Pollet [Sat, 16 Jun 2012 10:02:18 +0000 (11:02 +0100)]
simavr: Makefile tweaks
Added install target too
Signed-off-by: Michel Pollet <buserror@gmail.com>
Michel Pollet [Sat, 16 Jun 2012 08:42:26 +0000 (09:42 +0100)]
Makefile: Add a debug log
make V=1 will create a /tmp/simavr_conf.log to help find why
the cores won't compile
Signed-off-by: Michel Pollet <buserror@gmail.com>
Michel Pollet [Sat, 16 Jun 2012 08:41:35 +0000 (09:41 +0100)]
libc3: Deleted
Following the reprap board project on github
Signed-off-by: Michel Pollet <buserror@gmail.com>
Michel Pollet [Sat, 16 Jun 2012 08:40:08 +0000 (09:40 +0100)]
reprap: Deleted example board
This as become a project in itself, it moves to:
https://github.com/buserror-uk/simreprap.git
Signed-off-by: Michel Pollet <buserror@gmail.com>
Michel Pollet [Sat, 16 Jun 2012 08:15:09 +0000 (09:15 +0100)]
reprap: Added shadow mapping
Going to split this project into another one too..
Signed-off-by: Michel Pollet <buserror@gmail.com>
Michel Pollet [Sat, 16 Jun 2012 08:14:12 +0000 (09:14 +0100)]
libc3: Make & config tweaks
Now platform independent config headers
Also added a license
Signed-off-by: Michel Pollet <buserror@gmail.com>
Michel Pollet [Sat, 16 Jun 2012 08:12:43 +0000 (09:12 +0100)]
c3gl: Made c3gl_program_load public
Useful to reload shaders
Signed-off-by: Michel Pollet <buserror@gmail.com>
Michel Pollet [Sat, 16 Jun 2012 08:10:45 +0000 (09:10 +0100)]
c3gl_fbo: added depth texture
... which is different from the depth renderbuffer
Signed-off-by: Michel Pollet <buserror@gmail.com>
Michel Pollet [Sat, 16 Jun 2012 08:09:45 +0000 (09:09 +0100)]
c3program: Include digits in uniform names
Somehow they were missing
Signed-off-by: Michel Pollet <buserror@gmail.com>
Michel Pollet [Sat, 16 Jun 2012 08:09:13 +0000 (09:09 +0100)]
c3context: Calculate the view projection matrix
Turns out everything was there to do it
Signed-off-by: Michel Pollet <buserror@gmail.com>
Michel Pollet [Sat, 16 Jun 2012 08:08:25 +0000 (09:08 +0100)]
c3camera: Added a field-of-view
For calculating perspective matrix
Michel Pollet [Fri, 15 Jun 2012 08:23:48 +0000 (09:23 +0100)]
reprap: Updated to reflects changes to libc3
New fbo layer, lights and so on
Michel Pollet [Fri, 15 Jun 2012 08:22:58 +0000 (09:22 +0100)]
c3gl_fbo: New bits
Implement the framebuffer objects. It doesn't cover all the cases
but it'll help for now.
Signed-off-by: Michel Pollet <buserror@gmail.com>
Michel Pollet [Fri, 15 Jun 2012 08:21:44 +0000 (09:21 +0100)]
c3gl: Implemements lights
Handles (some) fo the light parameters
Signed-off-by: Michel Pollet <buserror@gmail.com>
Michel Pollet [Fri, 15 Jun 2012 08:21:06 +0000 (09:21 +0100)]
c3texture: Added a resize() function
Changes the size of the display quad
Signed-off-by: Michel Pollet <buserror@gmail.com>
Michel Pollet [Fri, 15 Jun 2012 08:20:33 +0000 (09:20 +0100)]
c3program: can specify uniform order
By passing an array of names, these will occupy the uniform
array first, before the parsing phase populates the list
Signed-off-by: Michel Pollet <buserror@gmail.com>
Michel Pollet [Fri, 15 Jun 2012 08:19:05 +0000 (09:19 +0100)]
c3object: Implements 'hidden' objects
Objects and geometry can be hidden from specific c3context_views
using a bitfield
Signed-off-by: Michel Pollet <buserror@gmail.com>
Michel Pollet [Fri, 15 Jun 2012 08:17:47 +0000 (09:17 +0100)]
c3geometry: Added a set_dirty() function
Also dirties parent object
Signed-off-by: Michel Pollet <buserror@gmail.com>
Michel Pollet [Fri, 15 Jun 2012 08:17:07 +0000 (09:17 +0100)]
c3context: Make sure lights are 'drawn' first
Make sure the light pseudo geometries are always
at the top of the list
Signed-off-by: Michel Pollet <buserror@gmail.com>
Michel Pollet [Fri, 15 Jun 2012 08:16:12 +0000 (09:16 +0100)]
c3light: New bit
Records lights position/type and can be carried around
in the geometry, transformed etc.
Signed-off-by: Michel Pollet <buserror@gmail.com>
Michel Pollet [Wed, 13 Jun 2012 17:17:12 +0000 (18:17 +0100)]
c3gl: Implemented buffer objects and vertex array objects
Supports vertex objects. Still need support for updating them
Signed-off-by: Michel Pollet <buserror@gmail.com>
Michel Pollet [Wed, 13 Jun 2012 17:15:58 +0000 (18:15 +0100)]
c3algebra: Added ortho matrices
Including screen oriented ones
Signed-off-by: Michel Pollet <buserror@gmail.com>
Michel Pollet [Wed, 13 Jun 2012 17:15:16 +0000 (18:15 +0100)]
c3geometry: Added geometry buffers
added storage fields for buffer objects
Signed-off-by: Michel Pollet <buserror@gmail.com>
Michel Pollet [Wed, 13 Jun 2012 17:11:23 +0000 (18:11 +0100)]
libc3: c_array tweaks
'free' no longer clears the entire struct, only generic
array fields
'realloc' frees the array if passed zero elements
Signed-off-by: Michel Pollet <buserror@gmail.com>
Michel Pollet [Tue, 12 Jun 2012 17:33:52 +0000 (18:33 +0100)]
c3context: Added a view draw callback
Unused for now, prepares a view to be drawn
Signed-off-by: Michel Pollet <buserror@gmail.com>
Michel Pollet [Tue, 12 Jun 2012 17:33:15 +0000 (18:33 +0100)]
c3geometry: Removed projected vertices
Now uses a world aligned transform matrix. Changed randering code
to use it. Still use a projection matrix for now.
Signed-off-by: Michel Pollet <buserror@gmail.com>
Michel Pollet [Tue, 12 Jun 2012 17:29:59 +0000 (18:29 +0100)]
c3algebra: Added frustrum and full perspective
Replacements for glu stuff
Signed-off-by: Michel Pollet <buserror@gmail.com>
Michel Pollet [Tue, 12 Jun 2012 17:27:31 +0000 (18:27 +0100)]
c3camera: matrix contains the eye position
Moved stuff around and added the translation to eye coordinates
to the matrix.
Signed-off-by: Michel Pollet <buserror@gmail.com>
Michel Pollet [Wed, 6 Jun 2012 10:52:47 +0000 (11:52 +0100)]
spi: Reset the SPI Interrupt Flag
Reset the SPI Interrupt Flag in SPSR uppon read of a SPI byte.
via sebastien.besombes@gmail.com
Signed-off-by: Michel Pollet <buserror@gmail.com>
Michel Pollet [Wed, 6 Jun 2012 07:47:20 +0000 (08:47 +0100)]
uart: Made the stdio buffer non-static
Thanks to sebastien.besombes@gmail.com for the report
Signed-off-by: Michel Pollet <buserror@gmail.com>
Michel Pollet [Wed, 6 Jun 2012 07:45:16 +0000 (08:45 +0100)]
shared: Removed mongoose
It was never needed in the end
Signed-off-by: Michel Pollet <buserror@gmail.com>
Michel Pollet [Wed, 6 Jun 2012 07:44:48 +0000 (08:44 +0100)]
reprap: Split arduidiot_pins for generic use
Returns a simavr irq for an arduinio pin (only for m644 for now)
Signed-off-by: Michel Pollet <buserror@gmail.com>
Michel Pollet [Wed, 6 Jun 2012 06:59:35 +0000 (07:59 +0100)]
libc3: remerged
Submodules are a bit sensitive, so I'm remerging this and will use
'git subtree' instead to split libc3 development
Signed-off-by: Michel Pollet <buserror@gmail.com>
Michel Pollet [Wed, 6 Jun 2012 06:47:56 +0000 (07:47 +0100)]
gitignore: Updated
Added custom build flags file
Signed-off-by: Michel Pollet <buserror@gmail.com>
Michel Pollet [Wed, 6 Jun 2012 06:47:01 +0000 (07:47 +0100)]
simduino: Updated readme
Since it now uses a pty directly
Signed-off-by: Michel Pollet <buserror@gmail.com>
Michel Pollet [Wed, 6 Jun 2012 06:43:17 +0000 (07:43 +0100)]
reprap: Uses libc3gl too now
Moved generic code out
Signed-off-by: Michel Pollet <buserror@gmail.com>
Michel Pollet [Tue, 5 Jun 2012 14:58:09 +0000 (15:58 +0100)]
reprap: Added support for indexed elements
And spheres
Signed-off-by: Michel Pollet <buserror@gmail.com>
Michel Pollet [Sun, 3 Jun 2012 22:46:08 +0000 (23:46 +0100)]
cores: Now duplicate the global structure
Strangely, it didn't, so you could not allocate 2 cores even tho nothing else
is there to stop it...
Signed-off-by: Michel Pollet <buserror@gmail.com>
Michel Pollet [Sun, 3 Jun 2012 16:25:41 +0000 (17:25 +0100)]
libc3: Update
Minor update
Signed-off-by: Michel Pollet <buserror@gmail.com>
Michel Pollet [Sun, 3 Jun 2012 14:11:49 +0000 (15:11 +0100)]
libc3: Few more updates
c3context can have several viewpoints
c3context has a list of c3programs
c3camera got renamed with standard type names
c3context/c3geometry driver got a dispose callback
gl code has a new generic glsl program loader
Signed-off-by: Michel Pollet <buserror@gmail.com>
Michel Pollet [Sun, 3 Jun 2012 14:09:34 +0000 (15:09 +0100)]
libc3: Added c3program
To load shader(s)
Signed-off-by: Michel Pollet <buserror@gmail.com>
Michel Pollet [Sun, 3 Jun 2012 14:09:07 +0000 (15:09 +0100)]
reprap: c_utils updates
Added a fre accessors
Signed-off-by: Michel Pollet <buserror@gmail.com>
Michel Pollet [Sun, 3 Jun 2012 14:08:34 +0000 (15:08 +0100)]
uart_pty: Add CR/LF conversion to the tap
Make sure whst we type is converted too
Signed-off-by: Michel Pollet <buserror@gmail.com>
Michel Pollet [Sun, 3 Jun 2012 14:07:56 +0000 (15:07 +0100)]
reprap: Implemented the 'heatpot'
Somehow raise a temperature using a score, reduces it automatically etc
Signed-off-by: Michel Pollet <buserror@gmail.com>
Michel Pollet [Sat, 2 Jun 2012 14:34:21 +0000 (15:34 +0100)]
uart_pty: Introduced the notion of 'tap' port
The previous way to debug was 'stealing' the port by using an xterm on it..
the new way leaves the proper pty available to the application you want to use
but still allow you to have a 'tap' port that sees both the sides of the
communication om the other pty.
You can also type stuff obviously, and it does some cr/lf conversions.
/tmp/simavr-uart0 : will be the normal fake serial port
/tmp/simavr-uarttap0 : is the one to launch an xterm on
This allow you to really see the serial traffic as it happends with both
requests and replies.
Signed-off-by: Michel Pollet <buserror@gmail.com>
Michel Pollet [Sat, 2 Jun 2012 12:32:11 +0000 (13:32 +0100)]
reprap: Compatibility with OSX
The shader now works on both platform
Removed the .bin file, made sure it never happends again
Signed-off-by: Michel Pollet <buserror@gmail.com>
Michel Pollet [Fri, 1 Jun 2012 22:17:00 +0000 (23:17 +0100)]
reprap: c3 update etc
probably last update befire I spin it out
Signed-off-by: Michel Pollet <buserror@gmail.com>
Michel Pollet [Fri, 1 Jun 2012 22:15:03 +0000 (23:15 +0100)]
reprap: Delete mongoose
Don't need that anymore
Signed-off-by: Michel Pollet <buserror@gmail.com>
Michel Pollet [Fri, 1 Jun 2012 22:14:11 +0000 (23:14 +0100)]
core: Cycle timer small fix
Makes it better on threaded GL on OSX
Signed-off-by: Michel Pollet <buserror@gmail.com>
Michel Pollet [Mon, 28 May 2012 18:20:58 +0000 (19:20 +0100)]
reprap: c3 update
Also:
freenode group verification: token jkndwaw234
Signed-off-by: Michel Pollet <buserror@gmail.com>
Michel Pollet [Mon, 28 May 2012 09:20:29 +0000 (10:20 +0100)]
cores: New avr-libc fixes
New debian avr-libc has actually deprecated register names, unfortunately
the other distros will catchup in 4 years or so, so we still have to
reactivate them .
Signed-off-by: Michel Pollet <buserror@gmail.com>