avr: usart: added a usart stdio stream.

Quick and ugly hack. Should be replaced something decent and debuggable
as soon as soon as the driver core is stable.

Signed-off-by: Michel Megens <dev@michelmegens.net>
vimws: added the vimws directory to git ignore.

The vimws scripts use the .vimws directory as default location for the
project files. These files (and the directory) should be kept out of the
repository, just like any other editor project files.

Signed-off-by: Michel Megens <dev@michelmegens.net>
dev: core: added a basic device core.

The device core can basically be seen as the driver for drivers. It
provides an API to add and remove drivers from the kernel. After a
driver has been added data can be written and/or read from it using
standard file operations (write(), read(), put(), etc..). See the STDIO
library for more information about these functions.

Signed-off-by: Michel Megens <dev@michelmegens.net>
git-ignore: added a jekyll bootstrap directory.

Added a jekyll bootstrap direcotry to the gitignore file. This directory
is used by jekyll bootstrap to install new themes.

Signed-off-by: Michel Megens <dev@michelmegens.net>
mutex: splitted mutexes from spinlocks.

Previously, mutexes were treated like spinlocks on the AVR core and also
somewhat in the generic headers. They are now completely seperated from
each other in the generic headers (spinlocks not available yet). The AVR
arch code is still treating them as similar but the abstraction is much
better now.

The AVR core now has its own functions for both of them, so cores which
make a major difference between the two wont cause problems anymore if
you recompile your application for another CPU architecture.

Signed-off-by: Michel Megens <dev@michelmegens.net>
spinlocks: added a generic spinlock header.

include/etaos/spinlock.h (<etaos/spinlock.h>): this header file contains
a generic API to handle spinlocks. The currently available functions
are:

	* spin_lock(lock*)
	* spin_unlock(lock*)
	* spin_lock_irqsave(lock*, flags)
	* spin_unlock_irqrestore(lock*, flags)

Signed-off-by: Michel Megens <dev@michelmegens.net>
avr: mutex: splitted mutex and spinlock file.

Splitted the mutex and spinlock header in the AVR core to make the
respecitive headers in include/etaos (<etaos/mutex.h> and
<etaos/spinlock.h>) a little bit easier to understand.

This patch is only for clarification and maintainability.

Signed-off-by: Michel Megens <dev@michelmegens.net>
dev: core: added dev_get_by_name

As the name suggests, dev_get_by_name searches for a device based on its
name. If a device is found it is returned and if no device with such
name is found, NULL is returned.

Signed-off-by: Michel Megens <dev@michelmegens.net>
Merge branch 'master' into dev-core

* List loop defintions
* libc string functions
* better mrproper make directive

Signed-off-by: Michel Megens <dev@michelmegens.net>

Conflicts:
	.gitignore
dev: core: implemented dev_get_by_name

Added an implementation to dev_get_by_name. This function uses strcmp to
search for a device with a given name. Please note that the device has
to be registrated (i.e. created) by device_create or pdev_add.

Signed-off-by: Michel Megens <dev@michelmegens.net>
dev: core: renamed pdev_add to dev_register_pdev

To registrate (and create a struct device) a platform device, you
previously had to use the function pdev_add. From now on this function
is called dev_register_pdev. The functionality remains the same.

Signed-off-by: Michel Megens <dev@michelmegens.net>
git: submodules: removed the .gitmodules file

The only entry in .gitmodules was an entry of a submodule which wasn't
used anymore. Removed the entry and with that, the entire file.

Signed-off-by: Michel Megens <dev@michelmegens.net>
Merge branch 'usart'

* Very basic, hackish USART support. The USART is nowhere near a driver.
Merge branch 'dev-core'

Initial version of the device core. The device core is basically a
driver for drivers. Its responsible for all generic driver based
operations, such as adding them, removing them and searching for one.

The currently implemented functionality contains, but not limited to:

* Adding new devices using device_create or dev_register_pdev
* Searching for a device based on its name using dev_find_by_name
* Releasing a device using struct device::release()
* Changing the file operations of a device using dev_set_fops.
make: added a nolibgcc option for some targets.

Some targets would throw up warnings while configuring the system. These
warnings were related to the generation of the path to libgcc.a. This
patch turns the generation of that path (not needed for those targets)
off for these specific targets. The targets we're talking about:

%config (all config targets (i.e. menuconfig, oldconfig, config, etc..)
prepare

Signed-off-by: Michel Megens <dev@michelmegens.net>