Author: evb
Date: Mon Feb 1 19:33:24 2010
New Revision: 45372
URL:
http://svn.reactos.org/svn/reactos?rev=45372&view=rev
Log:
- ARM LLB for OMAP3/Beagle (test with QEMU-Maemo) and Versatile (test with QEMU).
- Boots to blue screen with white text to indicate checkpoint.
- More cleanup/work needed.
- Will post Wiki on testing info soon.
Added:
trunk/reactos/boot/armllb/
trunk/reactos/boot/armllb/armllb.rbuild (with props)
trunk/reactos/boot/armllb/boot.s (with props)
trunk/reactos/boot/armllb/crtsupp.c (with props)
trunk/reactos/boot/armllb/hw/
trunk/reactos/boot/armllb/hw/omap3/
trunk/reactos/boot/armllb/hw/omap3/hwinfo.c (with props)
trunk/reactos/boot/armllb/hw/omap3/hwinit.c (with props)
trunk/reactos/boot/armllb/hw/serial.c (with props)
trunk/reactos/boot/armllb/hw/versatile/
trunk/reactos/boot/armllb/hw/versatile/hwclcd.c (with props)
trunk/reactos/boot/armllb/hw/versatile/hwinfo.c (with props)
trunk/reactos/boot/armllb/hw/versatile/hwinit.c (with props)
trunk/reactos/boot/armllb/hw/versatile/hwuart.c (with props)
trunk/reactos/boot/armllb/hw/video.c (with props)
trunk/reactos/boot/armllb/inc/
trunk/reactos/boot/armllb/inc/hw.h (with props)
trunk/reactos/boot/armllb/inc/machtype.h (with props)
trunk/reactos/boot/armllb/inc/osloader.h (with props)
trunk/reactos/boot/armllb/inc/precomp.h (with props)
trunk/reactos/boot/armllb/inc/serial.h (with props)
trunk/reactos/boot/armllb/inc/versa.h (with props)
trunk/reactos/boot/armllb/inc/video.h (with props)
trunk/reactos/boot/armllb/main.c (with props)
trunk/reactos/boot/armllb/os/
trunk/reactos/boot/armllb/os/loader.c (with props)
Modified:
trunk/reactos/boot/boot.rbuild
Added: trunk/reactos/boot/armllb/armllb.rbuild
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/armllb/armllb.rbuild?…
==============================================================================
--- trunk/reactos/boot/armllb/armllb.rbuild (added)
+++ trunk/reactos/boot/armllb/armllb.rbuild [iso-8859-1] Mon Feb 1 19:33:24 2010
@@ -1,0 +1,60 @@
+<?xml version="1.0"?>
+<!DOCTYPE group SYSTEM "../../../tools/rbuild/project.dtd">
+<group>
+ <module name="armllb" type="bootloader"
installbase=".." installname="armllb.bin">
+ <bootstrap installbase="loader" />
+ <library>libcntpr</library>
+ <library>rtl</library>
+ <include base="armllb">./inc</include>
+ <if property="SARCH" value="omap3">
+ <define name="_OMAP3_" />
+ <group linkerset="ld">
+ <linkerflag>-Wl,--image-base=0x401FEFF8</linkerflag>
+ </group>
+ </if>
+ <if property="SARCH" value="versatile">
+ <define name="_VERSATILE_" />
+ <group linkerset="ld">
+ <linkerflag>-Wl,--image-base=0xF000</linkerflag>
+ </group>
+ </if>
+ <file first="true">boot.s</file>
+ <file>main.c</file>
+ <file>crtsupp.c</file>
+ <directory name="hw">
+ <file>serial.c</file>
+ <file>video.c</file>
+ <if property="SARCH" value="omap3">
+ <directory name="omap3">
+ <file>hwdata.c</file>
+ <file>hwdss.c</file>
+ <file>hwuart.c</file>
+ <file>hwinfo.c</file>
+ <file<hwinit.c</file>
+ </directory>
+ </if>
+ <if property="SARCH" value="versatile">
+ <directory name="versatile">
+ <file>hwclcd.c</file>
+ <file>hwuart.c</file>
+ <file>hwinfo.c</file>
+ <file>hwinit.c</file>
+ </directory>
+ </if>
+ </directory>
+ <directory name="os">
+ <file>loader.c</file>
+ </directory>
+ <group compilerset="gcc">
+ <compilerflag>-fms-extensions</compilerflag>
+ <compilerflag>-ffreestanding</compilerflag>
+ <compilerflag>-fno-builtin</compilerflag>
+ <compilerflag>-fno-inline</compilerflag>
+ <compilerflag>-fno-zero-initialized-in-bss</compilerflag>
+ <compilerflag>-Os</compilerflag>
+ </group>
+ <group linkerset="ld">
+ <linkerflag>-lgcc</linkerflag>
+ </group>
+ </module>
+</group>
Propchange: trunk/reactos/boot/armllb/armllb.rbuild
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/reactos/boot/armllb/boot.s
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/armllb/boot.s?rev=453…
==============================================================================
--- trunk/reactos/boot/armllb/boot.s (added)
+++ trunk/reactos/boot/armllb/boot.s [iso-8859-1] Mon Feb 1 19:33:24 2010
@@ -1,0 +1,39 @@
+/*
+ * PROJECT: ReactOS Boot Loader
+ * LICENSE: BSD - See COPYING.ARM in the top level directory
+ * FILE: boot/armllb/boot.s
+ * PURPOSE: Implements the entry point for ARM machines
+ * PROGRAMMERS: ReactOS Portable Systems Group
+ */
+
+ .title "ARM LLB Entry Point"
+ .include "ntoskrnl/include/internal/arm/kxarm.h"
+ .include "ntoskrnl/include/internal/arm/ksarm.h"
+
+ NESTED_ENTRY _start
+ PROLOG_END _start
+
+#ifdef _OMAP3_
+ /*
+ * On OMAP3, the boot is directly from TI BootROM that reads NAND flash.
+ * First word is size of program to load.
+ * Second word is load address of program. Since DDR is not initialized,
+ * we load to SDRAM at 40200000h. Max 64K.
+ */
+ .word 0x8000
+ .word 0x40200000
+#endif
+
+ /* Load C entrypoint and setup LLB stack */
+ ldr lr, L_LlbStartup
+ ldr sp, L_BootStackEnd
+ bx lr
+ ENTRY_END _start
+
+L_BootStackEnd:
+ .long 0x2000000
+
+L_LlbStartup:
+ .long LlbStartup
+
+/* EOF */
Propchange: trunk/reactos/boot/armllb/boot.s
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/reactos/boot/armllb/crtsupp.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/armllb/crtsupp.c?rev=…
==============================================================================
--- trunk/reactos/boot/armllb/crtsupp.c (added)
+++ trunk/reactos/boot/armllb/crtsupp.c [iso-8859-1] Mon Feb 1 19:33:24 2010
@@ -1,0 +1,47 @@
+/*
+ * PROJECT: ReactOS Boot Loader
+ * LICENSE: BSD - See COPYING.ARM in the top level directory
+ * FILE: boot/armllb/crtsupp.c
+ * PURPOSE: CRT Support Code
+ * PROGRAMMERS: ReactOS Portable Systems Group
+ */
+
+#include "precomp.h"
+
+int
+putchar(int c)
+{
+ /* Write to the serial port */
+// LlbSerialPutChar(c);
+
+ /* Write to the screen too */
+ LlbVideoPutChar(c);
+ return 0;
+}
+
+int
+puts(const char* string)
+{
+ while (*string) putchar(*string++);
+ return 0;
+}
+
+int printf(const char *fmt, ...)
+{
+ va_list args;
+ unsigned int i;
+ char printbuffer[1024];
+
+ va_start (args, fmt);
+
+ /* For this to work, printbuffer must be larger than
+ * anything we ever want to print.
+ */
+ i = vsprintf (printbuffer, fmt, args);
+ va_end (args);
+
+ /* Print the string */
+ return puts(printbuffer);
+}
+
+/* EOF */
Propchange: trunk/reactos/boot/armllb/crtsupp.c
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/reactos/boot/armllb/hw/omap3/hwinfo.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/armllb/hw/omap3/hwinf…
==============================================================================
--- trunk/reactos/boot/armllb/hw/omap3/hwinfo.c (added)
+++ trunk/reactos/boot/armllb/hw/omap3/hwinfo.c [iso-8859-1] Mon Feb 1 19:33:24 2010
@@ -1,0 +1,78 @@
+/*
+ * PROJECT: ReactOS Boot Loader
+ * LICENSE: BSD - See COPYING.ARM in the top level directory
+ * FILE: boot/armllb/hw/omap3/hwinfo.c
+ * PURPOSE: LLB Hardware Info Routines for OMAP3
+ * PROGRAMMERS: ReactOS Portable Systems Group
+ */
+
+#include "precomp.h"
+
+ULONG
+NTAPI
+LlbHwGetScreenWidth(VOID)
+{
+ return 1280;
+}
+
+ULONG
+NTAPI
+LlbHwGetScreenHeight(VOID)
+{
+ return 720;
+}
+
+PVOID
+NTAPI
+LlbHwGetFrameBuffer(VOID)
+{
+ return (PVOID)0x80500000;
+}
+
+ULONG
+NTAPI
+LlbHwGetBoardType(VOID)
+{
+ return MACH_TYPE_OMAP3_BEAGLE;
+}
+
+ULONG
+NTAPI
+LlbHwGetPClk(VOID)
+{
+ return 48000000;
+}
+
+ULONG
+NTAPI
+LlbHwGetTmr0Base(VOID)
+{
+ return 0x48318000;
+}
+
+ULONG
+NTAPI
+LlbHwGetUartBase(IN ULONG Port)
+{
+ if (Port == 1)
+ {
+ return 0x4806A000;
+ }
+ else if (Port == 2)
+ {
+ return 0x4806C000;
+ }
+ else if (Port == 3)
+ {
+ return 0x49020000;
+ }
+}
+
+ULONG
+NTAPI
+LlbHwGetSerialUart(VOID)
+{
+ return 3;
+}
+
+/* EOF */
Propchange: trunk/reactos/boot/armllb/hw/omap3/hwinfo.c
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: trunk/reactos/boot/armllb/hw/omap3/hwinfo.c
------------------------------------------------------------------------------
svn:executable = *
Added: trunk/reactos/boot/armllb/hw/omap3/hwinit.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/armllb/hw/omap3/hwini…
==============================================================================
--- trunk/reactos/boot/armllb/hw/omap3/hwinit.c (added)
+++ trunk/reactos/boot/armllb/hw/omap3/hwinit.c [iso-8859-1] Mon Feb 1 19:33:24 2010
@@ -1,0 +1,18 @@
+/*
+ * PROJECT: ReactOS Boot Loader
+ * LICENSE: BSD - See COPYING.ARM in the top level directory
+ * FILE: boot/armllb/hw/omap3/hwinit.c
+ * PURPOSE: LLB Hardware Initialization Routines for OMAP3
+ * PROGRAMMERS: ReactOS Portable Systems Group
+ */
+
+#include "precomp.h"
+
+VOID
+NTAPI
+LlbHwInitialize(VOID)
+{
+
+}
+
+/* EOF */
Propchange: trunk/reactos/boot/armllb/hw/omap3/hwinit.c
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: trunk/reactos/boot/armllb/hw/omap3/hwinit.c
------------------------------------------------------------------------------
svn:executable = *
Added: trunk/reactos/boot/armllb/hw/serial.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/armllb/hw/serial.c?re…
==============================================================================
--- trunk/reactos/boot/armllb/hw/serial.c (added)
+++ trunk/reactos/boot/armllb/hw/serial.c [iso-8859-1] Mon Feb 1 19:33:24 2010
@@ -1,0 +1,25 @@
+/*
+ * PROJECT: ReactOS Boot Loader
+ * LICENSE: BSD - See COPYING.ARM in the top level directory
+ * FILE: boot/armllb/hw/serial.c
+ * PURPOSE: LLB Serial Port Routines
+ * PROGRAMMERS: ReactOS Portable Systems Group
+ */
+
+#include "precomp.h"
+
+VOID
+NTAPI
+LlbSerialPutChar(IN CHAR c)
+{
+ /* Properly support new-lines */
+ if (c == '\n') LlbSerialPutChar('\r');
+
+ /* Wait for ready */
+ while (!LlbHwUartTxReady());
+
+ /* Send character */
+ LlbHwUartSendChar(c);
+}
+
+/* EOF */
Propchange: trunk/reactos/boot/armllb/hw/serial.c
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: trunk/reactos/boot/armllb/hw/serial.c
------------------------------------------------------------------------------
svn:executable = *
Added: trunk/reactos/boot/armllb/hw/versatile/hwclcd.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/armllb/hw/versatile/h…
==============================================================================
--- trunk/reactos/boot/armllb/hw/versatile/hwclcd.c (added)
+++ trunk/reactos/boot/armllb/hw/versatile/hwclcd.c [iso-8859-1] Mon Feb 1 19:33:24 2010
@@ -1,0 +1,77 @@
+/*
+ * PROJECT: ReactOS Boot Loader
+ * LICENSE: BSD - See COPYING.ARM in the top level directory
+ * FILE: boot/armllb/hw/versatile/hwclcd.c
+ * PURPOSE: LLB CLCD Routines for Versatile
+ * PROGRAMMERS: ReactOS Portable Systems Group
+ */
+
+#include "precomp.h"
+
+#define LCDTIMING0_PPL(x) ((((x) / 16 - 1) & 0x3f) << 2)
+#define LCDTIMING1_LPP(x) (((x) & 0x3ff) - 1)
+#define LCDCONTROL_LCDPWR (1 << 11)
+#define LCDCONTROL_LCDEN (1)
+#define LCDCONTROL_LCDBPP(x) (((x) & 7) << 1)
+#define LCDCONTROL_LCDTFT (1 << 5)
+
+#define PL110_LCDTIMING0 (PVOID)0x10120000
+#define PL110_LCDTIMING1 (PVOID)0x10120004
+#define PL110_LCDTIMING2 (PVOID)0x10120008
+#define PL110_LCDUPBASE (PVOID)0x10120010
+#define PL110_LCDLPBASE (PVOID)0x10120014
+#define PL110_LCDCONTROL (PVOID)0x10120018
+
+PUSHORT LlbHwVideoBuffer;
+
+VOID
+NTAPI
+LlbHwVersaClcdInitialize(VOID)
+{
+ /* Set framebuffer address */
+ WRITE_REGISTER_ULONG(PL110_LCDUPBASE, (ULONG)LlbHwGetFrameBuffer());
+ WRITE_REGISTER_ULONG(PL110_LCDLPBASE, (ULONG)LlbHwGetFrameBuffer());
+
+ /* Initialize timings to 1024x720 */
+ WRITE_REGISTER_ULONG(PL110_LCDTIMING0, LCDTIMING0_PPL(LlbHwGetScreenWidth()));
+ WRITE_REGISTER_ULONG(PL110_LCDTIMING1, LCDTIMING1_LPP(LlbHwGetScreenHeight()));
+
+ /* Enable the TFT/LCD Display */
+ WRITE_REGISTER_ULONG(PL110_LCDCONTROL,
+ LCDCONTROL_LCDEN |
+ LCDCONTROL_LCDTFT |
+ LCDCONTROL_LCDPWR |
+ LCDCONTROL_LCDBPP(4));
+}
+
+ULONG
+NTAPI
+LlbHwGetScreenWidth(VOID)
+{
+ return 640;
+}
+
+ULONG
+NTAPI
+LlbHwGetScreenHeight(VOID)
+{
+ return 480;
+}
+
+PVOID
+NTAPI
+LlbHwGetFrameBuffer(VOID)
+{
+ return (PVOID)0x1000000;
+}
+
+ULONG
+NTAPI
+LlbHwVideoCreateColor(IN ULONG Red,
+ IN ULONG Green,
+ IN ULONG Blue)
+{
+ return (((Blue >> 3) << 11)| ((Green >> 2) << 5)| ((Red
>> 3) << 0));
+}
+
+/* EOF */
Propchange: trunk/reactos/boot/armllb/hw/versatile/hwclcd.c
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: trunk/reactos/boot/armllb/hw/versatile/hwclcd.c
------------------------------------------------------------------------------
svn:executable = *
Added: trunk/reactos/boot/armllb/hw/versatile/hwinfo.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/armllb/hw/versatile/h…
==============================================================================
--- trunk/reactos/boot/armllb/hw/versatile/hwinfo.c (added)
+++ trunk/reactos/boot/armllb/hw/versatile/hwinfo.c [iso-8859-1] Mon Feb 1 19:33:24 2010
@@ -1,0 +1,39 @@
+/*
+ * PROJECT: ReactOS Boot Loader
+ * LICENSE: BSD - See COPYING.ARM in the top level directory
+ * FILE: boot/armllb/hw/versatile/hwinfo.c
+ * PURPOSE: LLB Hardware Info Routines
+ * PROGRAMMERS: ReactOS Portable Systems Group
+ */
+
+#include "precomp.h"
+
+ULONG
+NTAPI
+LlbHwGetBoardType(VOID)
+{
+ return MACH_TYPE_VERSATILE_PB;
+}
+
+ULONG
+NTAPI
+LlbHwGetPClk(VOID)
+{
+ return 0x24000000;
+}
+
+ULONG
+NTAPI
+LlbHwGetTmr0Base(VOID)
+{
+ return 0x101E2000;
+}
+
+ULONG
+NTAPI
+LlbHwGetSerialUart(VOID)
+{
+ return 0;
+}
+
+/* EOF */
Propchange: trunk/reactos/boot/armllb/hw/versatile/hwinfo.c
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: trunk/reactos/boot/armllb/hw/versatile/hwinfo.c
------------------------------------------------------------------------------
svn:executable = *
Added: trunk/reactos/boot/armllb/hw/versatile/hwinit.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/armllb/hw/versatile/h…
==============================================================================
--- trunk/reactos/boot/armllb/hw/versatile/hwinit.c (added)
+++ trunk/reactos/boot/armllb/hw/versatile/hwinit.c [iso-8859-1] Mon Feb 1 19:33:24 2010
@@ -1,0 +1,22 @@
+/*
+ * PROJECT: ReactOS Boot Loader
+ * LICENSE: BSD - See COPYING.ARM in the top level directory
+ * FILE: boot/armllb/hw/versatile/hwinit.c
+ * PURPOSE: LLB Hardware Initialization Routines for Versatile
+ * PROGRAMMERS: ReactOS Portable Systems Group
+ */
+
+#include "precomp.h"
+
+VOID
+NTAPI
+LlbHwInitialize(VOID)
+{
+ /* Setup the CLCD (PL110) */
+ LlbHwVersaClcdInitialize();
+
+ /* Setup the UART (PL011) */
+ LlbHwVersaUartInitialize();
+}
+
+/* EOF */
Propchange: trunk/reactos/boot/armllb/hw/versatile/hwinit.c
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: trunk/reactos/boot/armllb/hw/versatile/hwinit.c
------------------------------------------------------------------------------
svn:executable = *
Added: trunk/reactos/boot/armllb/hw/versatile/hwuart.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/armllb/hw/versatile/h…
==============================================================================
--- trunk/reactos/boot/armllb/hw/versatile/hwuart.c (added)
+++ trunk/reactos/boot/armllb/hw/versatile/hwuart.c [iso-8859-1] Mon Feb 1 19:33:24 2010
@@ -1,0 +1,114 @@
+/*
+ * PROJECT: ReactOS Boot Loader
+ * LICENSE: BSD - See COPYING.ARM in the top level directory
+ * FILE: boot/armllb/hw/versatile/hwuart.c
+ * PURPOSE: LLB UART Initialization Routines for Versatile
+ * PROGRAMMERS: ReactOS Portable Systems Group
+ */
+
+#include "precomp.h"
+
+//
+// UART Registers
+//
+#define UART_PL01x_DR (LlbHwVersaUartBase + 0x00)
+#define UART_PL01x_RSR (LlbHwVersaUartBase + 0x04)
+#define UART_PL01x_ECR (LlbHwVersaUartBase + 0x04)
+#define UART_PL01x_FR (LlbHwVersaUartBase + 0x18)
+#define UART_PL011_IBRD (LlbHwVersaUartBase + 0x24)
+#define UART_PL011_FBRD (LlbHwVersaUartBase + 0x28)
+#define UART_PL011_LCRH (LlbHwVersaUartBase + 0x2C)
+#define UART_PL011_CR (LlbHwVersaUartBase + 0x30)
+#define UART_PL011_IMSC (LlbHwVersaUartBase + 0x38)
+
+//
+// LCR Values
+//
+#define UART_PL011_LCRH_WLEN_8 0x60
+#define UART_PL011_LCRH_FEN 0x10
+
+//
+// FCR Values
+//
+#define UART_PL011_CR_UARTEN 0x01
+#define UART_PL011_CR_TXE 0x100
+#define UART_PL011_CR_RXE 0x200
+
+//
+// LSR Values
+//
+#define UART_PL01x_FR_RXFE 0x10
+#define UART_PL01x_FR_TXFF 0x20
+
+static const ULONG LlbHwVersaUartBase = 0x101F1000;
+
+/* FUNCTIONS ******************************************************************/
+
+VOID
+LlbHwVersaUartInitialize(VOID)
+{
+ ULONG Divider, Remainder, Fraction, ClockRate, Baudrate;
+
+ /* Query peripheral rate, hardcore baudrate */
+ ClockRate = LlbHwGetPClk();
+ Baudrate = 115200;
+
+ /* Calculate baudrate clock divider and remainder */
+ Divider = ClockRate / (16 * Baudrate);
+ Remainder = ClockRate % (16 * Baudrate);
+
+ /* Calculate the fractional part */
+ Fraction = (8 * Remainder / Baudrate) >> 1;
+ Fraction += (8 * Remainder / Baudrate) & 1;
+
+ /* Disable interrupts */
+ WRITE_REGISTER_ULONG(UART_PL011_CR, 0);
+
+ /* Set the baud rate to 115200 bps */
+ WRITE_REGISTER_ULONG(UART_PL011_IBRD, Divider);
+ WRITE_REGISTER_ULONG(UART_PL011_FBRD, Fraction);
+
+ /* Set 8 bits for data, 1 stop bit, no parity, FIFO enabled */
+ WRITE_REGISTER_ULONG(UART_PL011_LCRH,
+ UART_PL011_LCRH_WLEN_8 | UART_PL011_LCRH_FEN);
+
+ /* Clear and enable FIFO */
+ WRITE_REGISTER_ULONG(UART_PL011_CR,
+ UART_PL011_CR_UARTEN |
+ UART_PL011_CR_TXE |
+ UART_PL011_CR_RXE);
+}
+
+VOID
+NTAPI
+LlbHwUartSendChar(IN CHAR Char)
+{
+ /* Send the character */
+ WRITE_REGISTER_ULONG(UART_PL01x_DR, Char);
+}
+
+BOOLEAN
+NTAPI
+LlbHwUartTxReady(VOID)
+{
+ /* TX output buffer is ready? */
+ return (READ_REGISTER_ULONG(UART_PL01x_FR) & UART_PL01x_FR_TXFF);
+}
+
+ULONG
+NTAPI
+LlbHwGetUartBase(IN ULONG Port)
+{
+ if (Port == 0)
+ {
+ return 0x101F1000;
+ }
+ else if (Port == 1)
+ {
+ return 0x101F2000;
+ }
+
+ return 0;
+}
+
+/* EOF */
Propchange: trunk/reactos/boot/armllb/hw/versatile/hwuart.c
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: trunk/reactos/boot/armllb/hw/versatile/hwuart.c
------------------------------------------------------------------------------
svn:executable = *
Added: trunk/reactos/boot/armllb/hw/video.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/armllb/hw/video.c?rev…
==============================================================================
--- trunk/reactos/boot/armllb/hw/video.c (added)
+++ trunk/reactos/boot/armllb/hw/video.c [iso-8859-1] Mon Feb 1 19:33:24 2010
@@ -1,0 +1,370 @@
+/*
+ * PROJECT: ReactOS Boot Loader
+ * LICENSE: BSD - See COPYING.ARM in the top level directory
+ * FILE: boot/armllb/hw/video.c
+ * PURPOSE: LLB Video Output Routines
+ * PROGRAMMERS: ReactOS Portable Systems Group
+ */
+
+#include "precomp.h"
+
+CHAR LlbHwBootFont[] =
+{
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x7e,0x81,0xa5,0x81,0xbd,0x99,0x81,0x7e,
+ 0x7e,0xff,0xdb,0xff,0xc3,0xe7,0xff,0x7e,
+ 0x6c,0xfe,0xfe,0xfe,0x7c,0x38,0x10,0x00,
+ 0x10,0x38,0x7c,0xfe,0x7c,0x38,0x10,0x00,
+ 0x38,0x7c,0x38,0xfe,0xfe,0x7c,0x38,0x7c,
+ 0x10,0x10,0x38,0x7c,0xfe,0x7c,0x38,0x7c,
+ 0x00,0x00,0x18,0x3c,0x3c,0x18,0x00,0x00,
+ 0xff,0xff,0xe7,0xc3,0xc3,0xe7,0xff,0xff,
+ 0x00,0x3c,0x66,0x42,0x42,0x66,0x3c,0x00,
+ 0xff,0xc3,0x99,0xbd,0xbd,0x99,0xc3,0xff,
+ 0x0f,0x07,0x0f,0x7d,0xcc,0xcc,0xcc,0x78,
+ 0x3c,0x66,0x66,0x66,0x3c,0x18,0x7e,0x18,
+ 0x3f,0x33,0x3f,0x30,0x30,0x70,0xf0,0xe0,
+ 0x7f,0x63,0x7f,0x63,0x63,0x67,0xe6,0xc0,
+ 0x99,0x5a,0x3c,0xe7,0xe7,0x3c,0x5a,0x99,
+ 0x80,0xe0,0xf8,0xfe,0xf8,0xe0,0x80,0x00,
+ 0x02,0x0e,0x3e,0xfe,0x3e,0x0e,0x02,0x00,
+ 0x18,0x3c,0x7e,0x18,0x18,0x7e,0x3c,0x18,
+ 0x66,0x66,0x66,0x66,0x66,0x00,0x66,0x00,
+ 0x7f,0xdb,0xdb,0x7b,0x1b,0x1b,0x1b,0x00,
+ 0x3e,0x63,0x38,0x6c,0x6c,0x38,0xcc,0x78,
+ 0x00,0x00,0x00,0x00,0x7e,0x7e,0x7e,0x00,
+ 0x18,0x3c,0x7e,0x18,0x7e,0x3c,0x18,0xff,
+ 0x18,0x3c,0x7e,0x18,0x18,0x18,0x18,0x00,
+ 0x18,0x18,0x18,0x18,0x7e,0x3c,0x18,0x00,
+ 0x00,0x18,0x0c,0xfe,0x0c,0x18,0x00,0x00,
+ 0x00,0x30,0x60,0xfe,0x60,0x30,0x00,0x00,
+ 0x00,0x00,0xc0,0xc0,0xc0,0xfe,0x00,0x00,
+ 0x00,0x24,0x66,0xff,0x66,0x24,0x00,0x00,
+ 0x00,0x18,0x3c,0x7e,0xff,0xff,0x00,0x00,
+ 0x00,0xff,0xff,0x7e,0x3c,0x18,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x30,0x78,0x78,0x30,0x30,0x00,0x30,0x00,
+ 0x6c,0x6c,0x6c,0x00,0x00,0x00,0x00,0x00,
+ 0x6c,0x6c,0xfe,0x6c,0xfe,0x6c,0x6c,0x00,
+ 0x30,0x7c,0xc0,0x78,0x0c,0xf8,0x30,0x00,
+ 0x00,0xc6,0xcc,0x18,0x30,0x66,0xc6,0x00,
+ 0x38,0x6c,0x38,0x76,0xdc,0xcc,0x76,0x00,
+ 0x60,0x60,0xc0,0x00,0x00,0x00,0x00,0x00,
+ 0x18,0x30,0x60,0x60,0x60,0x30,0x18,0x00,
+ 0x60,0x30,0x18,0x18,0x18,0x30,0x60,0x00,
+ 0x00,0x66,0x3c,0xff,0x3c,0x66,0x00,0x00,
+ 0x00,0x30,0x30,0xfc,0x30,0x30,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x60,
+ 0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,
+ 0x06,0x0c,0x18,0x30,0x60,0xc0,0x80,0x00,
+ 0x7c,0xc6,0xce,0xde,0xf6,0xe6,0x7c,0x00,
+ 0x30,0x70,0x30,0x30,0x30,0x30,0xfc,0x00,
+ 0x78,0xcc,0x0c,0x38,0x60,0xcc,0xfc,0x00,
+ 0x78,0xcc,0x0c,0x38,0x0c,0xcc,0x78,0x00,
+ 0x1c,0x3c,0x6c,0xcc,0xfe,0x0c,0x1e,0x00,
+ 0xfc,0xc0,0xf8,0x0c,0x0c,0xcc,0x78,0x00,
+ 0x38,0x60,0xc0,0xf8,0xcc,0xcc,0x78,0x00,
+ 0xfc,0xcc,0x0c,0x18,0x30,0x30,0x30,0x00,
+ 0x78,0xcc,0xcc,0x78,0xcc,0xcc,0x78,0x00,
+ 0x78,0xcc,0xcc,0x7c,0x0c,0x18,0x70,0x00,
+ 0x00,0x30,0x30,0x00,0x00,0x30,0x30,0x00,
+ 0x00,0x30,0x30,0x00,0x00,0x30,0x30,0x60,
+ 0x18,0x30,0x60,0xc0,0x60,0x30,0x18,0x00,
+ 0x00,0x00,0xfc,0x00,0x00,0xfc,0x00,0x00,
+ 0x60,0x30,0x18,0x0c,0x18,0x30,0x60,0x00,
+ 0x78,0xcc,0x0c,0x18,0x30,0x00,0x30,0x00,
+ 0x7c,0xc6,0xde,0xde,0xde,0xc0,0x78,0x00,
+ 0x30,0x78,0xcc,0xcc,0xfc,0xcc,0xcc,0x00,
+ 0xfc,0x66,0x66,0x7c,0x66,0x66,0xfc,0x00,
+ 0x3c,0x66,0xc0,0xc0,0xc0,0x66,0x3c,0x00,
+ 0xf8,0x6c,0x66,0x66,0x66,0x6c,0xf8,0x00,
+ 0xfe,0x62,0x68,0x78,0x68,0x62,0xfe,0x00,
+ 0xfe,0x62,0x68,0x78,0x68,0x60,0xf0,0x00,
+ 0x3c,0x66,0xc0,0xc0,0xce,0x66,0x3e,0x00,
+ 0xcc,0xcc,0xcc,0xfc,0xcc,0xcc,0xcc,0x00,
+ 0x78,0x30,0x30,0x30,0x30,0x30,0x78,0x00,
+ 0x1e,0x0c,0x0c,0x0c,0xcc,0xcc,0x78,0x00,
+ 0xe6,0x66,0x6c,0x78,0x6c,0x66,0xe6,0x00,
+ 0xf0,0x60,0x60,0x60,0x62,0x66,0xfe,0x00,
+ 0xc6,0xee,0xfe,0xfe,0xd6,0xc6,0xc6,0x00,
+ 0xc6,0xe6,0xf6,0xde,0xce,0xc6,0xc6,0x00,
+ 0x38,0x6c,0xc6,0xc6,0xc6,0x6c,0x38,0x00,
+ 0xfc,0x66,0x66,0x7c,0x60,0x60,0xf0,0x00,
+ 0x78,0xcc,0xcc,0xcc,0xdc,0x78,0x1c,0x00,
+ 0xfc,0x66,0x66,0x7c,0x6c,0x66,0xe6,0x00,
+ 0x78,0xcc,0xe0,0x70,0x1c,0xcc,0x78,0x00,
+ 0xfc,0xb4,0x30,0x30,0x30,0x30,0x78,0x00,
+ 0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xfc,0x00,
+ 0xcc,0xcc,0xcc,0xcc,0xcc,0x78,0x30,0x00,
+ 0xc6,0xc6,0xc6,0xd6,0xfe,0xee,0xc6,0x00,
+ 0xc6,0xc6,0x6c,0x38,0x38,0x6c,0xc6,0x00,
+ 0xcc,0xcc,0xcc,0x78,0x30,0x30,0x78,0x00,
+ 0xfe,0xc6,0x8c,0x18,0x32,0x66,0xfe,0x00,
+ 0x78,0x60,0x60,0x60,0x60,0x60,0x78,0x00,
+ 0xc0,0x60,0x30,0x18,0x0c,0x06,0x02,0x00,
+ 0x78,0x18,0x18,0x18,0x18,0x18,0x78,0x00,
+ 0x10,0x38,0x6c,0xc6,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,
+ 0x30,0x30,0x18,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x78,0x0c,0x7c,0xcc,0x76,0x00,
+ 0xe0,0x60,0x60,0x7c,0x66,0x66,0xdc,0x00,
+ 0x00,0x00,0x78,0xcc,0xc0,0xcc,0x78,0x00,
+ 0x1c,0x0c,0x0c,0x7c,0xcc,0xcc,0x76,0x00,
+ 0x00,0x00,0x78,0xcc,0xfc,0xc0,0x78,0x00,
+ 0x38,0x6c,0x60,0xf0,0x60,0x60,0xf0,0x00,
+ 0x00,0x00,0x76,0xcc,0xcc,0x7c,0x0c,0xf8,
+ 0xe0,0x60,0x6c,0x76,0x66,0x66,0xe6,0x00,
+ 0x30,0x00,0x70,0x30,0x30,0x30,0x78,0x00,
+ 0x0c,0x00,0x0c,0x0c,0x0c,0xcc,0xcc,0x78,
+ 0xe0,0x60,0x66,0x6c,0x78,0x6c,0xe6,0x00,
+ 0x70,0x30,0x30,0x30,0x30,0x30,0x78,0x00,
+ 0x00,0x00,0xcc,0xfe,0xfe,0xd6,0xc6,0x00,
+ 0x00,0x00,0xf8,0xcc,0xcc,0xcc,0xcc,0x00,
+ 0x00,0x00,0x78,0xcc,0xcc,0xcc,0x78,0x00,
+ 0x00,0x00,0xdc,0x66,0x66,0x7c,0x60,0xf0,
+ 0x00,0x00,0x76,0xcc,0xcc,0x7c,0x0c,0x1e,
+ 0x00,0x00,0xdc,0x76,0x66,0x60,0xf0,0x00,
+ 0x00,0x00,0x7c,0xc0,0x78,0x0c,0xf8,0x00,
+ 0x10,0x30,0x7c,0x30,0x30,0x34,0x18,0x00,
+ 0x00,0x00,0xcc,0xcc,0xcc,0xcc,0x76,0x00,
+ 0x00,0x00,0xcc,0xcc,0xcc,0x78,0x30,0x00,
+ 0x00,0x00,0xc6,0xd6,0xfe,0xfe,0x6c,0x00,
+ 0x00,0x00,0xc6,0x6c,0x38,0x6c,0xc6,0x00,
+ 0x00,0x00,0xcc,0xcc,0xcc,0x7c,0x0c,0xf8,
+ 0x00,0x00,0xfc,0x98,0x30,0x64,0xfc,0x00,
+ 0x1c,0x30,0x30,0xe0,0x30,0x30,0x1c,0x00,
+ 0x18,0x18,0x18,0x00,0x18,0x18,0x18,0x00,
+ 0xe0,0x30,0x30,0x1c,0x30,0x30,0xe0,0x00,
+ 0x76,0xdc,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x00,0x10,0x38,0x6c,0xc6,0xc6,0xfe,0x00,
+ 0x78,0xcc,0xc0,0xcc,0x78,0x18,0x0c,0x78,
+ 0x00,0xcc,0x00,0xcc,0xcc,0xcc,0x7e,0x00,
+ 0x1c,0x00,0x78,0xcc,0xfc,0xc0,0x78,0x00,
+ 0x7e,0xc3,0x3c,0x06,0x3e,0x66,0x3f,0x00,
+ 0xcc,0x00,0x78,0x0c,0x7c,0xcc,0x7e,0x00,
+ 0xe0,0x00,0x78,0x0c,0x7c,0xcc,0x7e,0x00,
+ 0x30,0x30,0x78,0x0c,0x7c,0xcc,0x7e,0x00,
+ 0x00,0x00,0x78,0xc0,0xc0,0x78,0x0c,0x38,
+ 0x7e,0xc3,0x3c,0x66,0x7e,0x60,0x3c,0x00,
+ 0xcc,0x00,0x78,0xcc,0xfc,0xc0,0x78,0x00,
+ 0xe0,0x00,0x78,0xcc,0xfc,0xc0,0x78,0x00,
+ 0xcc,0x00,0x70,0x30,0x30,0x30,0x78,0x00,
+ 0x7c,0xc6,0x38,0x18,0x18,0x18,0x3c,0x00,
+ 0xe0,0x00,0x70,0x30,0x30,0x30,0x78,0x00,
+ 0xc6,0x38,0x6c,0xc6,0xfe,0xc6,0xc6,0x00,
+ 0x30,0x30,0x00,0x78,0xcc,0xfc,0xcc,0x00,
+ 0x1c,0x00,0xfc,0x60,0x78,0x60,0xfc,0x00,
+ 0x00,0x00,0x7f,0x0c,0x7f,0xcc,0x7f,0x00,
+ 0x3e,0x6c,0xcc,0xfe,0xcc,0xcc,0xce,0x00,
+ 0x78,0xcc,0x00,0x78,0xcc,0xcc,0x78,0x00,
+ 0x00,0xcc,0x00,0x78,0xcc,0xcc,0x78,0x00,
+ 0x00,0xe0,0x00,0x78,0xcc,0xcc,0x78,0x00,
+ 0x78,0xcc,0x00,0xcc,0xcc,0xcc,0x7e,0x00,
+ 0x00,0xe0,0x00,0xcc,0xcc,0xcc,0x7e,0x00,
+ 0x00,0xcc,0x00,0xcc,0xcc,0x7c,0x0c,0xf8,
+ 0xc3,0x18,0x3c,0x66,0x66,0x3c,0x18,0x00,
+ 0xcc,0x00,0xcc,0xcc,0xcc,0xcc,0x78,0x00,
+ 0x18,0x18,0x7e,0xc0,0xc0,0x7e,0x18,0x18,
+ 0x38,0x6c,0x64,0xf0,0x60,0xe6,0xfc,0x00,
+ 0xcc,0xcc,0x78,0xfc,0x30,0xfc,0x30,0x30,
+ 0xf8,0xcc,0xcc,0xfa,0xc6,0xcf,0xc6,0xc7,
+ 0x0e,0x1b,0x18,0x3c,0x18,0x18,0xd8,0x70,
+ 0x1c,0x00,0x78,0x0c,0x7c,0xcc,0x7e,0x00,
+ 0x38,0x00,0x70,0x30,0x30,0x30,0x78,0x00,
+ 0x00,0x1c,0x00,0x78,0xcc,0xcc,0x78,0x00,
+ 0x00,0x1c,0x00,0xcc,0xcc,0xcc,0x7e,0x00,
+ 0x00,0xf8,0x00,0xf8,0xcc,0xcc,0xcc,0x00,
+ 0xfc,0x00,0xcc,0xec,0xfc,0xdc,0xcc,0x00,
+ 0x3c,0x6c,0x6c,0x3e,0x00,0x7e,0x00,0x00,
+ 0x38,0x6c,0x6c,0x38,0x00,0x7c,0x00,0x00,
+ 0x30,0x00,0x30,0x60,0xc0,0xcc,0x78,0x00,
+ 0x00,0x00,0x00,0xfc,0xc0,0xc0,0x00,0x00,
+ 0x00,0x00,0x00,0xfc,0x0c,0x0c,0x00,0x00,
+ 0xc3,0xc6,0xcc,0xde,0x33,0x66,0xcc,0x0f,
+ 0xc3,0xc6,0xcc,0xdb,0x37,0x6f,0xcf,0x03,
+ 0x18,0x18,0x00,0x18,0x18,0x18,0x18,0x00,
+ 0x00,0x33,0x66,0xcc,0x66,0x33,0x00,0x00,
+ 0x00,0xcc,0x66,0x33,0x66,0xcc,0x00,0x00,
+ 0x22,0x88,0x22,0x88,0x22,0x88,0x22,0x88,
+ 0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,
+ 0xdb,0x77,0xdb,0xee,0xdb,0x77,0xdb,0xee,
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0xf8,0x18,0x18,0x18,
+ 0x18,0x18,0xf8,0x18,0xf8,0x18,0x18,0x18,
+ 0x36,0x36,0x36,0x36,0xf6,0x36,0x36,0x36,
+ 0x00,0x00,0x00,0x00,0xfe,0x36,0x36,0x36,
+ 0x00,0x00,0xf8,0x18,0xf8,0x18,0x18,0x18,
+ 0x36,0x36,0xf6,0x06,0xf6,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x36,0x36,0x36,0x36,
+ 0x00,0x00,0xfe,0x06,0xf6,0x36,0x36,0x36,
+ 0x36,0x36,0xf6,0x06,0xfe,0x00,0x00,0x00,
+ 0x36,0x36,0x36,0x36,0xfe,0x00,0x00,0x00,
+ 0x18,0x18,0xf8,0x18,0xf8,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xf8,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x1f,0x00,0x00,0x00,
+ 0x18,0x18,0x18,0x18,0xff,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0xff,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x1f,0x18,0x18,0x18,
+ 0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00,
+ 0x18,0x18,0x18,0x18,0xff,0x18,0x18,0x18,
+ 0x18,0x18,0x1f,0x18,0x1f,0x18,0x18,0x18,
+ 0x36,0x36,0x36,0x36,0x37,0x36,0x36,0x36,
+ 0x36,0x36,0x37,0x30,0x3f,0x00,0x00,0x00,
+ 0x00,0x00,0x3f,0x30,0x37,0x36,0x36,0x36,
+ 0x36,0x36,0xf7,0x00,0xff,0x00,0x00,0x00,
+ 0x00,0x00,0xff,0x00,0xf7,0x36,0x36,0x36,
+ 0x36,0x36,0x37,0x30,0x37,0x36,0x36,0x36,
+ 0x00,0x00,0xff,0x00,0xff,0x00,0x00,0x00,
+ 0x36,0x36,0xf7,0x00,0xf7,0x36,0x36,0x36,
+ 0x18,0x18,0xff,0x00,0xff,0x00,0x00,0x00,
+ 0x36,0x36,0x36,0x36,0xff,0x00,0x00,0x00,
+ 0x00,0x00,0xff,0x00,0xff,0x18,0x18,0x18,
+ 0x00,0x00,0x00,0x00,0xff,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0x3f,0x00,0x00,0x00,
+ 0x18,0x18,0x1f,0x18,0x1f,0x00,0x00,0x00,
+ 0x00,0x00,0x1f,0x18,0x1f,0x18,0x18,0x18,
+ 0x00,0x00,0x00,0x00,0x3f,0x36,0x36,0x36,
+ 0x36,0x36,0x36,0x36,0xff,0x36,0x36,0x36,
+ 0x18,0x18,0xff,0x18,0xff,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0xf8,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x1f,0x18,0x18,0x18,
+ 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
+ 0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xff,
+ 0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,
+ 0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,0x0f,
+ 0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x76,0xdc,0xc8,0xdc,0x76,0x00,
+ 0x00,0x78,0xcc,0xf8,0xcc,0xf8,0xc0,0xc0,
+ 0x00,0xfc,0xcc,0xc0,0xc0,0xc0,0xc0,0x00,
+ 0x00,0xfe,0x6c,0x6c,0x6c,0x6c,0x6c,0x00,
+ 0xfc,0xcc,0x60,0x30,0x60,0xcc,0xfc,0x00,
+ 0x00,0x00,0x7e,0xd8,0xd8,0xd8,0x70,0x00,
+ 0x00,0x66,0x66,0x66,0x66,0x7c,0x60,0xc0,
+ 0x00,0x76,0xdc,0x18,0x18,0x18,0x18,0x00,
+ 0xfc,0x30,0x78,0xcc,0xcc,0x78,0x30,0xfc,
+ 0x38,0x6c,0xc6,0xfe,0xc6,0x6c,0x38,0x00,
+ 0x38,0x6c,0xc6,0xc6,0x6c,0x6c,0xee,0x00,
+ 0x1c,0x30,0x18,0x7c,0xcc,0xcc,0x78,0x00,
+ 0x00,0x00,0x7e,0xdb,0xdb,0x7e,0x00,0x00,
+ 0x06,0x0c,0x7e,0xdb,0xdb,0x7e,0x60,0xc0,
+ 0x38,0x60,0xc0,0xf8,0xc0,0x60,0x38,0x00,
+ 0x78,0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0x00,
+ 0x00,0xfc,0x00,0xfc,0x00,0xfc,0x00,0x00,
+ 0x30,0x30,0xfc,0x30,0x30,0x00,0xfc,0x00,
+ 0x60,0x30,0x18,0x30,0x60,0x00,0xfc,0x00,
+ 0x18,0x30,0x60,0x30,0x18,0x00,0xfc,0x00,
+ 0x0e,0x1b,0x1b,0x18,0x18,0x18,0x18,0x18,
+ 0x18,0x18,0x18,0x18,0x18,0xd8,0xd8,0x70,
+ 0x30,0x30,0x00,0xfc,0x00,0x30,0x30,0x00,
+ 0x00,0x76,0xdc,0x00,0x76,0xdc,0x00,0x00,
+ 0x38,0x6c,0x6c,0x38,0x00,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,
+ 0x0f,0x0c,0x0c,0x0c,0xec,0x6c,0x3c,0x1c,
+ 0x78,0x6c,0x6c,0x6c,0x6c,0x00,0x00,0x00,
+ 0x70,0x18,0x30,0x60,0x78,0x00,0x00,0x00,
+ 0x00,0x00,0x3c,0x3c,0x3c,0x3c,0x00,0x00,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+};
+
+ULONG ScreenCursor;
+
+VOID
+NTAPI
+LlbVideoDrawChar(IN CHAR c,
+ IN ULONG cx,
+ IN ULONG cy,
+ IN USHORT Color,
+ IN USHORT BackColor)
+{
+ PUSHORT Buffer;
+ PCHAR Pixels;
+ CHAR Line;
+ ULONG x, y, ScreenWidth;
+ PUSHORT VideoBuffer;
+
+ /* Get screen width and frame buffer */
+ ScreenWidth = LlbHwGetScreenWidth();
+ VideoBuffer = LlbHwGetFrameBuffer();
+
+ /* Compute starting address on-screen and in the character-array */
+ buffer = VideoBuffer + ScreenWidth * cy + cx;
+ pixels = LlbHwBootFont + c * 8;
+
+ /* Loop y pixels */
+ for (y = 0; y < 8; y++)
+ {
+ /* Loop x pixels */
+ Line = *Pixels++;
+ for (x = 7; x >= 0; x--)
+ {
+ /* Draw either a character or background pixel */
+ Buffer[x] = (Line & 1) ? Color : BackColor;
+ Line >>= 1;
+ }
+
+ /* Next line */
+ Buffer += ScreenWidth;
+ }
+}
+
+VOID
+NTAPI
+LlbVideoClearScreen(VOID)
+{
+ ULONG ScreenSize, p;
+ ULONG BackColor;
+ PUSHORT VideoBuffer;
+
+ /* Get frame buffer and reset cursor position */
+ VideoBuffer = LlbHwGetFrameBuffer();
+ ScreenCursor = 0;
+
+ /* Backcolor on this machine */
+ BackColor = LlbHwVideoCreateColor(14, 0, 82);
+ BackColor = (BackColor << 16) | BackColor;
+
+ /* Screen size on this machine */
+ ScreenSize = LlbHwGetScreenWidth() * LlbHwGetScreenHeight();
+
+ /* Clear the screen with the given color */
+ for (p = 0; p < ScreenSize * 2; p += 4)
+ {
+ *(PULONG)((PCHAR)VideoBuffer + p) = BackColor;
+ }
+}
+
+VOID
+NTAPI
+LlbVideoPutChar(IN CHAR c)
+{
+ ULONG cx, cy, CharsPerLine, BackColor;
+
+ /* Forecolor on this machine */
+ BackColor = LlbHwVideoCreateColor(14, 0, 82);
+
+ /* Amount of characters in a line */
+ CharsPerLine = LlbHwGetScreenWidth() / 8;
+
+ /* Handle new line and scrolling */
+ if (c == '\n')
+ {
+ /* Move a line down */
+ ScreenCursor += CharsPerLine - (ScreenCursor % CharsPerLine);
+
+ /* FIXME: Scrolling */
+ }
+ else
+ {
+ /* Calculate character position from pixel position */
+ cy = (ScreenCursor / CharsPerLine) * 8;
+ cx = (ScreenCursor % CharsPerLine) * 8;
+
+ /* Draw the character and increment the cursor */
+ LlbVideoDrawChar(c, cx, cy, 0xFFFF, BackColor);
+ ScreenCursor++;
+ }
+}
+
+/* EOF */
Propchange: trunk/reactos/boot/armllb/hw/video.c
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/reactos/boot/armllb/inc/hw.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/armllb/inc/hw.h?rev=4…
==============================================================================
--- trunk/reactos/boot/armllb/inc/hw.h (added)
+++ trunk/reactos/boot/armllb/inc/hw.h [iso-8859-1] Mon Feb 1 19:33:24 2010
@@ -1,0 +1,89 @@
+/*
+ * PROJECT: ReactOS Boot Loader
+ * LICENSE: BSD - See COPYING.ARM in the top level directory
+ * FILE: boot/armllb/inc/hw.h
+ * PURPOSE: LLB Hardware Functions
+ * PROGRAMMERS: ReactOS Portable Systems Group
+ */
+
+VOID
+NTAPI
+LlbHwInitialize(
+ VOID
+);
+
+ULONG
+NTAPI
+LlbHwGetScreenWidth(
+ VOID
+);
+
+ULONG
+NTAPI
+LlbHwGetScreenHeight(
+ VOID
+);
+
+ULONG
+NTAPI
+LlbHwVideoCreateColor(
+ IN ULONG Red,
+ IN ULONG Green,
+ IN ULONG Blue
+);
+
+PVOID
+NTAPI
+LlbHwGetFrameBuffer(
+ VOID
+);
+
+ULONG
+NTAPI
+LlbHwGetBoardType(
+ VOID
+);
+
+ULONG
+NTAPI
+LlbHwGetPClk(
+ VOID
+);
+
+ULONG
+NTAPI
+LlbHwGetTmr0Base(
+ VOID
+);
+
+ULONG
+NTAPI
+LlbHwGetUartBase(
+ IN ULONG Port
+);
+
+ULONG
+NTAPI
+LlbHwGetSerialUart(
+ VOID
+);
+
+VOID
+NTAPI
+LlbHwUartSendChar(
+ IN CHAR Char
+);
+
+BOOLEAN
+NTAPI
+LlbHwUartTxReady(
+ VOID
+);
+
+#ifdef _VERSATILE_
+#include "versa.h"
+#elif _OMAP3_
+#include "omap3.h"
+#endif
+
+/* EOF */
Propchange: trunk/reactos/boot/armllb/inc/hw.h
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: trunk/reactos/boot/armllb/inc/hw.h
------------------------------------------------------------------------------
svn:executable = *
Added: trunk/reactos/boot/armllb/inc/machtype.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/armllb/inc/machtype.h…
==============================================================================
--- trunk/reactos/boot/armllb/inc/machtype.h (added)
+++ trunk/reactos/boot/armllb/inc/machtype.h [iso-8859-1] Mon Feb 1 19:33:24 2010
@@ -1,0 +1,27 @@
+/*
+ * PROJECT: ReactOS Boot Loader
+ * LICENSE: BSD - See COPYING.ARM in the top level directory
+ * FILE: boot/armllb/inc/machtype.h
+ * PURPOSE: Standard machine type definitions defined by Linux/U-boot
+ * PROGRAMMERS: ReactOS Portable Systems Group
+ */
+
+//
+// Marvell Feroceon-based SoC:
+// Buffalo Linkstation, KuroBox Pro, D-Link DS323 and others
+//
+#define MACH_TYPE_FEROCEON 526
+
+//
+// ARM Versatile PB:
+// qemu-system-arm -M versatilepb, RealView Development Boards and others
+//
+#define MACH_TYPE_VERSATILE_PB 387
+
+//
+// TI Beagle Board, OMAP3530 SoC
+// qemu-system-arm -M beagle, Beagle Board
+//
+#define MACH_TYPE_OMAP3_BEAGLE 1546
+
+/* EOF */
Propchange: trunk/reactos/boot/armllb/inc/machtype.h
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/reactos/boot/armllb/inc/osloader.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/armllb/inc/osloader.h…
==============================================================================
--- trunk/reactos/boot/armllb/inc/osloader.h (added)
+++ trunk/reactos/boot/armllb/inc/osloader.h [iso-8859-1] Mon Feb 1 19:33:24 2010
@@ -1,0 +1,57 @@
+/*
+ * PROJECT: ReactOS Boot Loader
+ * LICENSE: BSD - See COPYING.ARM in the top level directory
+ * FILE: boot/armllb/inc/osloader.h
+ * PURPOSE: Shared header between LLB and OS Loader
+ * PROGRAMMERS: ReactOS Portable Systems Group
+ */
+
+//
+// OS Loader Main Routine
+//
+typedef
+VOID (*OSLOADER_INIT)(
+ IN PVOID BoardInit
+);
+
+//
+// Type of memory detected by LLB
+//
+typedef enum
+{
+ BiosMemoryUsable = 1,
+ BiosMemoryBootLoader,
+ BiosMemoryBootStrap,
+ BiosMemoryReserved
+} BIOS_MEMORY_TYPE;
+
+//
+// Firmware Memory Map
+//
+typedef struct
+{
+ LONGLONG BaseAddress;
+ LONGLONG Length;
+ ULONG Type;
+ ULONG Reserved;
+} BIOS_MEMORY_MAP, *PBIOS_MEMORY_MAP;
+
+//
+// Information sent from LLB to OS Loader
+//
+#define ARM_BOARD_CONFIGURATION_MAJOR_VERSION 1
+#define ARM_BOARD_CONFIGURATION_MINOR_VERSION 1
+typedef struct _ARM_BOARD_CONFIGURATION_BLOCK
+{
+ ULONG MajorVersion;
+ ULONG MinorVersion;
+ ULONG BoardType;
+ ULONG ClockRate;
+ ULONG TimerRegisterBase;
+ ULONG UartRegisterBase;
+ ULONG MemoryMapEntryCount;
+ PBIOS_MEMORY_MAP MemoryMap;
+ CHAR CommandLine[256];
+} ARM_BOARD_CONFIGURATION_BLOCK, *PARM_BOARD_CONFIGURATION_BLOCK;
+
+/* EOF */
Propchange: trunk/reactos/boot/armllb/inc/osloader.h
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/reactos/boot/armllb/inc/precomp.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/armllb/inc/precomp.h?…
==============================================================================
--- trunk/reactos/boot/armllb/inc/precomp.h (added)
+++ trunk/reactos/boot/armllb/inc/precomp.h [iso-8859-1] Mon Feb 1 19:33:24 2010
@@ -1,0 +1,18 @@
+/*
+ * PROJECT: ReactOS Boot Loader
+ * LICENSE: BSD - See COPYING.ARM in the top level directory
+ * FILE: boot/armllb/inc/precomp.h
+ * PURPOSE: Precompiled header for LLB
+ * PROGRAMMERS: ReactOS Portable Systems Group
+ */
+
+#include "ntdef.h"
+#include "stdio.h"
+#include "ioaccess.h"
+#include "machtype.h"
+#include "osloader.h"
+#include "hw.h"
+#include "serial.h"
+#include "video.h"
+
+/* EOF */
Propchange: trunk/reactos/boot/armllb/inc/precomp.h
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: trunk/reactos/boot/armllb/inc/precomp.h
------------------------------------------------------------------------------
svn:executable = *
Added: trunk/reactos/boot/armllb/inc/serial.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/armllb/inc/serial.h?r…
==============================================================================
--- trunk/reactos/boot/armllb/inc/serial.h (added)
+++ trunk/reactos/boot/armllb/inc/serial.h [iso-8859-1] Mon Feb 1 19:33:24 2010
@@ -1,0 +1,15 @@
+/*
+ * PROJECT: ReactOS Boot Loader
+ * LICENSE: BSD - See COPYING.ARM in the top level directory
+ * FILE: boot/armllb/inc/serial.h
+ * PURPOSE: LLB Serial Port Functions
+ * PROGRAMMERS: ReactOS Portable Systems Group
+ */
+
+VOID
+NTAPI
+LlbSerialPutChar(
+ IN CHAR c
+);
+
+/* EOF */
Propchange: trunk/reactos/boot/armllb/inc/serial.h
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: trunk/reactos/boot/armllb/inc/serial.h
------------------------------------------------------------------------------
svn:executable = *
Added: trunk/reactos/boot/armllb/inc/versa.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/armllb/inc/versa.h?re…
==============================================================================
--- trunk/reactos/boot/armllb/inc/versa.h (added)
+++ trunk/reactos/boot/armllb/inc/versa.h [iso-8859-1] Mon Feb 1 19:33:24 2010
@@ -1,0 +1,21 @@
+/*
+ * PROJECT: ReactOS Boot Loader
+ * LICENSE: BSD - See COPYING.ARM in the top level directory
+ * FILE: boot/armllb/inc/versa.h
+ * PURPOSE: LLB Board-Specific Hardware Functions for Versatile
+ * PROGRAMMERS: ReactOS Portable Systems Group
+ */
+
+VOID
+NTAPI
+LlbHwVersaUartInitialize(
+ VOID
+);
+
+VOID
+NTAPI
+LlbHwVersaClcdInitialize(
+ VOID
+);
+
+/* EOF */
Propchange: trunk/reactos/boot/armllb/inc/versa.h
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: trunk/reactos/boot/armllb/inc/versa.h
------------------------------------------------------------------------------
svn:executable = *
Added: trunk/reactos/boot/armllb/inc/video.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/armllb/inc/video.h?re…
==============================================================================
--- trunk/reactos/boot/armllb/inc/video.h (added)
+++ trunk/reactos/boot/armllb/inc/video.h [iso-8859-1] Mon Feb 1 19:33:24 2010
@@ -1,0 +1,21 @@
+/*
+ * PROJECT: ReactOS Boot Loader
+ * LICENSE: BSD - See COPYING.ARM in the top level directory
+ * FILE: boot/armllb/inc/video.h
+ * PURPOSE: LLB Videl Output Functions
+ * PROGRAMMERS: ReactOS Portable Systems Group
+ */
+
+VOID
+NTAPI
+LlbVideoClearScreen(
+ VOID
+);
+
+VOID
+NTAPI
+LlbVideoPutChar(
+ IN CHAR c
+);
+
+/* EOF */
Propchange: trunk/reactos/boot/armllb/inc/video.h
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: trunk/reactos/boot/armllb/inc/video.h
------------------------------------------------------------------------------
svn:executable = *
Added: trunk/reactos/boot/armllb/main.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/armllb/main.c?rev=453…
==============================================================================
--- trunk/reactos/boot/armllb/main.c (added)
+++ trunk/reactos/boot/armllb/main.c [iso-8859-1] Mon Feb 1 19:33:24 2010
@@ -1,0 +1,25 @@
+/*
+ * PROJECT: ReactOS Boot Loader
+ * LICENSE: BSD - See COPYING.ARM in the top level directory
+ * FILE: boot/armllb/main.c
+ * PURPOSE: Main LLB Code
+ * PROGRAMMERS: ReactOS Portable Systems Group
+ */
+
+#include "precomp.h"
+
+VOID
+LlbStartup(VOID)
+{
+ /* Initialize hardware components */
+ LlbHwInitialize();
+
+ /* Clean up the screen */
+ LlbVideoClearScreen();
+
+ /* Print header */
+ printf("ReactOS ARM Low-Level Boot Loader [" __DATE__ " "__TIME__
"]\n\n");
+ while (TRUE);
+}
+
+/* EOF */
Propchange: trunk/reactos/boot/armllb/main.c
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: trunk/reactos/boot/armllb/main.c
------------------------------------------------------------------------------
svn:executable = *
Added: trunk/reactos/boot/armllb/os/loader.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/armllb/os/loader.c?re…
==============================================================================
--- trunk/reactos/boot/armllb/os/loader.c (added)
+++ trunk/reactos/boot/armllb/os/loader.c [iso-8859-1] Mon Feb 1 19:33:24 2010
@@ -1,0 +1,65 @@
+/*
+ * PROJECT: ReactOS Boot Loader
+ * LICENSE: BSD - See COPYING.ARM in the top level directory
+ * FILE: boot/armllb/os/loader.c
+ * PURPOSE: OS Loader Code for LLB
+ * PROGRAMMERS: ReactOS Portable Systems Group
+ */
+
+#include "precomp.h"
+
+BIOS_MEMORY_MAP MemoryMap[32];
+ARM_BOARD_CONFIGURATION_BLOCK ArmBlock;
+
+VOID
+NTAPI
+AllocateMemoryEntry(IN BIOS_MEMORY_TYPE Type,
+ IN ULONG BaseAddress,
+ IN ULONG Length)
+{
+ PBIOS_MEMORY_MAP Entry;
+
+ /* Get the next memory entry */
+ Entry = MemoryMap;
+ while (Entry->Length) Entry++;
+
+ /* Fill it out */
+ Entry->Length = Length;
+ Entry->BaseAddress = BaseAddress;
+ Entry->Type = Type;
+
+ /* Block count */
+ ArmBlock.MemoryMapEntryCount++;
+}
+
+VOID
+NTAPI
+LlbSetCommandLine(IN PCHAR CommandLine)
+{
+ /* Copy the command line in the ARM block */
+ strcpy(ArmBlock.CommandLine, CommandLine);
+}
+
+VOID
+NTAPI
+LlbBuildArmBlock(VOID)
+{
+ /* Write version number */
+ ArmBlock.MajorVersion = ARM_BOARD_CONFIGURATION_MAJOR_VERSION;
+ ArmBlock.MinorVersion = ARM_BOARD_CONFIGURATION_MINOR_VERSION;
+
+ /* Get arch type */
+ ArmBlock.BoardType = LlbHwGetBoardType();
+
+ /* Get peripheral clock rate */
+ ArmBlock.ClockRate = LlbHwGetPClk();
+
+ /* Get timer and serial port base addresses */
+ ArmBlock.TimerRegisterBase = LlbHwGetTmr0Base();
+ ArmBlock.UartRegisterBase = LlbHwGetUartBase(LlbHwGetSerialUart());
+
+ /* Now load the memory map */
+ ArmBlock.MemoryMap = MemoryMap;
+}
+
+/* EOF */
Propchange: trunk/reactos/boot/armllb/os/loader.c
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: trunk/reactos/boot/armllb/os/loader.c
------------------------------------------------------------------------------
svn:executable = *
Modified: trunk/reactos/boot/boot.rbuild
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/boot/boot.rbuild?rev=45372…
==============================================================================
--- trunk/reactos/boot/boot.rbuild [iso-8859-1] (original)
+++ trunk/reactos/boot/boot.rbuild [iso-8859-1] Mon Feb 1 19:33:24 2010
@@ -4,6 +4,11 @@
<directory name="freeldr">
<xi:include href="freeldr/freeldr.rbuild" />
</directory>
+ <if property="ARCH" value="arm">
+ <directory name="armllb">
+ <xi:include href="armllb/armllb.rbuild" />
+ </directory>
+ </if>
<directory name="bootdata">
<xi:include href="bootdata/bootdata.rbuild" />
</directory>