/branches/arm/kernel/arch/arm32/include/machine.h |
---|
0,0 → 1,54 |
/* |
* Copyright (c) 2007 Michal Kebrt |
* All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions |
* are met: |
* |
* - Redistributions of source code must retain the above copyright |
* notice, this list of conditions and the following disclaimer. |
* - Redistributions in binary form must reproduce the above copyright |
* notice, this list of conditions and the following disclaimer in the |
* documentation and/or other materials provided with the distribution. |
* - The name of the author may not be used to endorse or promote products |
* derived from this software without specific prior written permission. |
* |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR |
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES |
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. |
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, |
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT |
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
/** @addtogroup arm32 |
* @{ |
*/ |
/** @file |
*/ |
#ifndef KERN_arm32_MACHINE_H_ |
#define KERN_arm32_MACHINE_H_ |
#include <console/console.h> |
#include <arch/types.h> |
void machine_console_init(devno_t devno); |
void machine_grab_console(void); |
void machine_release_console(void); |
void machine_hw_map_init(void); |
void machine_timer_irq_start(void); |
size_t machine_get_memory_size(void); |
#endif |
/** @} |
*/ |
/branches/arm/kernel/arch/arm32/include/drivers/init.h |
---|
File deleted |
/branches/arm/kernel/arch/arm32/Makefile.inc |
---|
84,8 → 84,10 |
arch/$(ARCH)/src/debug_print/printf.c \ |
arch/$(ARCH)/src/debug_print/io.c \ |
arch/$(ARCH)/src/console.c \ |
arch/$(ARCH)/src/drivers/gxemul.c \ |
arch/$(ARCH)/src/drivers/init.c \ |
arch/$(ARCH)/src/exception.c \ |
arch/$(ARCH)/src/mm/memory_init.c |
ifeq ($(MACHINE), gxemul_testarm) |
ARCH_SOURCES += arch/$(ARCH)/src/drivers/gxemul.c |
endif |
/branches/arm/kernel/arch/arm32/src/exception.c |
---|
148,6 → 148,8 |
*/ |
static void irq_exception(int exc_no, istate_t* istate) |
{ |
// TODO: move somewhere to gxemul.c and use machine_irq_exception (or some similar |
// name) to avoid using MACHINE == MACHINE_GXEMUL_TESTARM |
#if MACHINE == MACHINE_GXEMUL_TESTARM |
uint32_t sources = gxemul_irqc_get_sources(); |
int i = 0; |
/branches/arm/kernel/arch/arm32/src/console.c |
---|
34,13 → 34,11 |
#include <console/console.h> |
#include <arch/console.h> |
#include <arch/drivers/gxemul.h> |
#include <arch/machine.h> |
void console_init(devno_t devno) |
{ |
#if MACHINE == MACHINE_GXEMUL_TESTARM |
gxemul_console(devno); |
#endif |
machine_console_init(devno); |
} |
/** Acquire console back for kernel |
48,9 → 46,7 |
*/ |
void arch_grab_console(void) |
{ |
#if MACHINE == MACHINE_GXEMUL_TESTARM |
gxemul_kbd_grab(); |
#endif |
machine_grab_console(); |
} |
/** Return console to userspace |
58,9 → 54,7 |
*/ |
void arch_release_console(void) |
{ |
#if MACHINE == MACHINE_GXEMUL_TESTARM |
gxemul_kbd_release(); |
#endif |
machine_release_console(); |
} |
/** @} |
/branches/arm/kernel/arch/arm32/src/arm32.c |
---|
46,7 → 46,7 |
#include <print.h> |
#include <config.h> |
#include <interrupt.h> |
#include <arch/drivers/init.h> |
#include <arch/machine.h> |
bootinfo_t bootinfo; |
82,7 → 82,7 |
Note: Have to be after page_init() */ |
exception_init(); |
drivers_init(); |
machine_hw_map_init(); |
interrupt_init(); |
console_init(device_assign_devno()); |
89,7 → 89,7 |
//fb_init(0x12000000, 640, 480, 1920, VISUAL_RGB_8_8_8); |
interrupts_enable(); |
while(1); |
// while(1); |
dprintf("arch_post_mm_init end()\n"); |
} |
/branches/arm/kernel/arch/arm32/src/mm/memory_init.c |
---|
34,13 → 34,11 |
#include <arch/mm/memory_init.h> |
#include <arch/mm/page.h> |
#include <arch/drivers/gxemul.h> |
#include <arch/machine.h> |
size_t get_memory_size(void) |
{ |
#if MACHINE == MACHINE_GXEMUL_TESTARM |
return gxemul_get_memory_size(); |
#endif |
return machine_get_memory_size(); |
} |
/branches/arm/kernel/arch/arm32/src/interrupt.c |
---|
35,7 → 35,7 |
#include <arch/asm.h> |
#include <arch/regutils.h> |
#include <ddi/irq.h> |
#include <arch/drivers/gxemul.h> |
#include <arch/machine.h> |
#include <interrupt.h> |
#define IRQ_COUNT 8 |
92,11 → 92,7 |
void interrupt_init(void) |
{ |
irq_init(IRQ_COUNT, IRQ_COUNT); |
#if MACHINE == MACHINE_GXEMUL_TESTARM |
gxemul_timer_irq_init(); |
gxemul_timer_start(GXEMUL_TIMER_FREQ); |
#endif |
machine_timer_irq_start(); |
} |
/branches/arm/kernel/arch/arm32/src/drivers/init.c |
---|
File deleted |
/branches/arm/kernel/arch/arm32/src/drivers/gxemul.c |
---|
41,6 → 41,7 |
#include <print.h> |
#include <ddi/device.h> |
#include <mm/page.h> |
#include <arch/machine.h> |
/** Address of devices. */ |
#define GXEMUL_VIDEORAM 0x10000000 |
78,7 → 79,7 |
/** Initializes #gxemul_hw_map. */ |
void gxemul_hw_map_init(void) |
void machine_hw_map_init(void) |
{ |
gxemul_hw_map.videoram = hw_map(GXEMUL_VIDEORAM, PAGE_SIZE); |
gxemul_hw_map.kbd = hw_map(GXEMUL_KBD, PAGE_SIZE); |
152,7 → 153,7 |
return IRQ_ACCEPT; |
} |
void gxemul_kbd_grab(void) |
void machine_grab_console(void) |
{ |
ipl_t ipl = interrupts_disable(); |
spinlock_lock(&gxemul_irq.lock); |
161,7 → 162,7 |
interrupts_restore(ipl); |
} |
void gxemul_kbd_release(void) |
void machine_release_console(void) |
{ |
ipl_t ipl = interrupts_disable(); |
spinlock_lock(&gxemul_irq.lock); |
173,7 → 174,7 |
/** Return console object representing gxemul console */ |
void gxemul_console(devno_t devno) |
void machine_console_init(devno_t devno) |
{ |
chardev_initialize("gxemul_console", &console, &gxemul_ops); |
stdin = &console; |
280,8 → 281,14 |
irq_register(&gxemul_timer_irq); |
} |
size_t gxemul_get_memory_size(void) |
void machine_timer_irq_start() |
{ |
gxemul_timer_irq_init(); |
gxemul_timer_start(GXEMUL_TIMER_FREQ); |
} |
size_t machine_get_memory_size(void) |
{ |
return *((int*)(GXEMUL_MP + GXEMUL_MP_MEMSIZE_OFFSET)); |
} |