Subversion Repositories HelenOS

Compare Revisions

Ignore whitespace Rev 2273 → Rev 2274

/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));
}