libpayload: Drop PowerPC architecture
This was never completed / working and we have the working ARMv7 port for an architecture template, so get rid of this dead code. Change-Id: Ic2c1267ee5546dd6e1b63220c263b2fa86c8ae33 Signed-off-by: Stefan Reinauer <reinauer@google.com> Reviewed-on: https://gerrit.chromium.org/gerrit/56065 Reviewed-by: Patrick Georgi <patrick@georgi-clan.de> Reviewed-by: Ronald G. Minnich <rminnich@chromium.org> Commit-Queue: Stefan Reinauer <reinauer@chromium.org> Reviewed-on: http://review.coreboot.org/4235 Tested-by: build bot (Jenkins) Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
This commit is contained in:
parent
5f5d914876
commit
b82a74c7ff
18 changed files with 0 additions and 964 deletions
|
@ -72,11 +72,6 @@ config ARCH_ARMV7
|
||||||
help
|
help
|
||||||
Support the x86 architecture
|
Support the x86 architecture
|
||||||
|
|
||||||
config ARCH_POWERPC
|
|
||||||
bool "PowerPC"
|
|
||||||
help
|
|
||||||
Support the PowerPC architecture
|
|
||||||
|
|
||||||
config ARCH_X86
|
config ARCH_X86
|
||||||
bool "x86"
|
bool "x86"
|
||||||
help
|
help
|
||||||
|
|
|
@ -92,7 +92,6 @@ include util/kconfig/Makefile
|
||||||
include $(HAVE_DOTCONFIG)
|
include $(HAVE_DOTCONFIG)
|
||||||
|
|
||||||
ARCHDIR-$(CONFIG_ARCH_ARMV7) := armv7
|
ARCHDIR-$(CONFIG_ARCH_ARMV7) := armv7
|
||||||
ARCHDIR-$(CONFIG_ARCH_POWERPC) := powerpc
|
|
||||||
ARCHDIR-$(CONFIG_ARCH_X86) := x86
|
ARCHDIR-$(CONFIG_ARCH_X86) := x86
|
||||||
|
|
||||||
ARCH-y := $(ARCHDIR-y)
|
ARCH-y := $(ARCHDIR-y)
|
||||||
|
@ -100,7 +99,6 @@ ARCH-y := $(ARCHDIR-y)
|
||||||
# If architecture folder name is different from GCC binutils architecture name,
|
# If architecture folder name is different from GCC binutils architecture name,
|
||||||
# override here.
|
# override here.
|
||||||
ARCH-$(CONFIG_ARCH_ARMV7) := armv7
|
ARCH-$(CONFIG_ARCH_ARMV7) := armv7
|
||||||
ARCH-$(CONFIG_ARCH_POWERPC) := powerpc
|
|
||||||
ARCH-$(CONFIG_ARCH_X86) := i386
|
ARCH-$(CONFIG_ARCH_X86) := i386
|
||||||
|
|
||||||
CC := $(CC_$(ARCH-y))
|
CC := $(CC_$(ARCH-y))
|
||||||
|
|
|
@ -33,7 +33,6 @@ export KERNELVERSION := 0.2.0
|
||||||
|
|
||||||
ARCHDIR-$(CONFIG_ARCH_ARMV7) := armv7
|
ARCHDIR-$(CONFIG_ARCH_ARMV7) := armv7
|
||||||
ARCHDIR-$(CONFIG_ARCH_X86) := x86
|
ARCHDIR-$(CONFIG_ARCH_X86) := x86
|
||||||
ARCHDIR-$(CONFIG_ARCH_POWERPC) := powerpc
|
|
||||||
DESTDIR ?= install
|
DESTDIR ?= install
|
||||||
|
|
||||||
real-target: lib
|
real-target: lib
|
||||||
|
|
|
@ -28,5 +28,4 @@
|
||||||
##
|
##
|
||||||
|
|
||||||
source "arch/armv7/Config.in"
|
source "arch/armv7/Config.in"
|
||||||
source "arch/powerpc/Config.in"
|
|
||||||
source "arch/x86/Config.in"
|
source "arch/x86/Config.in"
|
||||||
|
|
|
@ -1,37 +0,0 @@
|
||||||
##
|
|
||||||
## This file is part of the libpayload project.
|
|
||||||
##
|
|
||||||
## Copyright (c) 2012 Google Inc.
|
|
||||||
##
|
|
||||||
## Redistribution and use in source and binary forms, with or without
|
|
||||||
## modification, are permitted provided that the following conditions
|
|
||||||
## are met:
|
|
||||||
## 1. Redistributions of source code must retain the above copyright
|
|
||||||
## notice, this list of conditions and the following disclaimer.
|
|
||||||
## 2. 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.
|
|
||||||
## 3. 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 AND CONTRIBUTORS ``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 OR CONTRIBUTORS 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.
|
|
||||||
##
|
|
||||||
|
|
||||||
if ARCH_POWERPC
|
|
||||||
|
|
||||||
config ARCH_SPECIFIC_OPTIONS # dummy
|
|
||||||
def_bool y
|
|
||||||
select BIG_ENDIAN
|
|
||||||
select IO_ADDRESS_SPACE
|
|
||||||
|
|
||||||
endif
|
|
|
@ -1,34 +0,0 @@
|
||||||
##
|
|
||||||
## This file is part of the libpayload project.
|
|
||||||
##
|
|
||||||
## Copyright (C) 2008 Advanced Micro Devices, Inc.
|
|
||||||
##
|
|
||||||
## Redistribution and use in source and binary forms, with or without
|
|
||||||
## modification, are permitted provided that the following conditions
|
|
||||||
## are met:
|
|
||||||
## 1. Redistributions of source code must retain the above copyright
|
|
||||||
## notice, this list of conditions and the following disclaimer.
|
|
||||||
## 2. 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.
|
|
||||||
## 3. 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 AND CONTRIBUTORS ``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 OR CONTRIBUTORS 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.
|
|
||||||
##
|
|
||||||
|
|
||||||
head.o-y := head.S
|
|
||||||
libc-y += main.c sysinfo.c
|
|
||||||
libc-y += timer.c coreboot.c util.S
|
|
||||||
libc-y += exec.S virtual.c
|
|
||||||
|
|
|
@ -1,171 +0,0 @@
|
||||||
/*
|
|
||||||
* This file is part of the libpayload project.
|
|
||||||
*
|
|
||||||
* Copyright (C) 2008 Advanced Micro Devices, Inc.
|
|
||||||
* Copyright (C) 2009 coresystems GmbH
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* 2. 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.
|
|
||||||
* 3. 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 AND CONTRIBUTORS ``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 OR CONTRIBUTORS 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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <libpayload-config.h>
|
|
||||||
#include <libpayload.h>
|
|
||||||
#include <coreboot_tables.h>
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Some of this is x86 specific, and the rest of it is generic. Right now,
|
|
||||||
* since we only support x86, we'll avoid trying to make lots of infrastructure
|
|
||||||
* we don't need. If in the future, we want to use coreboot on some other
|
|
||||||
* architecture, then take out the generic parsing code and move it elsewhere.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* === Parsing code === */
|
|
||||||
/* This is the generic parsing code. */
|
|
||||||
|
|
||||||
static void cb_parse_memory(unsigned char *ptr, struct sysinfo_t *info)
|
|
||||||
{
|
|
||||||
struct cb_memory *mem = (struct cb_memory *)ptr;
|
|
||||||
int count = MEM_RANGE_COUNT(mem);
|
|
||||||
int i;
|
|
||||||
|
|
||||||
if (count > SYSINFO_MAX_MEM_RANGES)
|
|
||||||
count = SYSINFO_MAX_MEM_RANGES;
|
|
||||||
|
|
||||||
info->n_memranges = 0;
|
|
||||||
|
|
||||||
for (i = 0; i < count; i++) {
|
|
||||||
struct cb_memory_range *range =
|
|
||||||
(struct cb_memory_range *)MEM_RANGE_PTR(mem, i);
|
|
||||||
|
|
||||||
#ifdef CONFIG_MEMMAP_RAM_ONLY
|
|
||||||
if (range->type != CB_MEM_RAM)
|
|
||||||
continue;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
info->memrange[info->n_memranges].base =
|
|
||||||
UNPACK_CB64(range->start);
|
|
||||||
|
|
||||||
info->memrange[info->n_memranges].size =
|
|
||||||
UNPACK_CB64(range->size);
|
|
||||||
|
|
||||||
info->memrange[info->n_memranges].type = range->type;
|
|
||||||
|
|
||||||
info->n_memranges++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void cb_parse_serial(unsigned char *ptr, struct sysinfo_t *info)
|
|
||||||
{
|
|
||||||
struct cb_serial *ser = (struct cb_serial *)ptr;
|
|
||||||
if (ser->type != CB_SERIAL_TYPE_IO_MAPPED)
|
|
||||||
return;
|
|
||||||
info->ser_ioport = ser->baseaddr;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef CONFIG_NVRAM
|
|
||||||
static void cb_parse_optiontable(unsigned char *ptr, struct sysinfo_t *info)
|
|
||||||
{
|
|
||||||
info->option_table = (struct cb_cmos_option_table *)ptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void cb_parse_checksum(unsigned char *ptr, struct sysinfo_t *info)
|
|
||||||
{
|
|
||||||
struct cb_cmos_checksum *cmos_cksum = (struct cb_cmos_checksum *)ptr;
|
|
||||||
info->cmos_range_start = cmos_cksum->range_start;
|
|
||||||
info->cmos_range_end = cmos_cksum->range_end;
|
|
||||||
info->cmos_checksum_location = cmos_cksum->location;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static int cb_parse_header(void *addr, int len, struct sysinfo_t *info)
|
|
||||||
{
|
|
||||||
struct cb_header *header;
|
|
||||||
unsigned char *ptr = (unsigned char *)addr;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 0; i < len; i += 16, ptr += 16) {
|
|
||||||
header = (struct cb_header *)ptr;
|
|
||||||
if (!strncmp((const char *)header->signature, "LBIO", 4))
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* We walked the entire space and didn't find anything. */
|
|
||||||
if (i >= len)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
if (!header->table_bytes)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
/* Make sure the checksums match. */
|
|
||||||
if (ipchksum((u16 *) header, sizeof(*header)) != 0)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
if (ipchksum((u16 *) (ptr + sizeof(*header)),
|
|
||||||
header->table_bytes) != header->table_checksum)
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
/* Now, walk the tables. */
|
|
||||||
ptr += header->header_bytes;
|
|
||||||
|
|
||||||
for (i = 0; i < header->table_entries; i++) {
|
|
||||||
struct cb_record *rec = (struct cb_record *)ptr;
|
|
||||||
|
|
||||||
/* We only care about a few tags here (maybe more later). */
|
|
||||||
switch (rec->tag) {
|
|
||||||
case CB_TAG_FORWARD:
|
|
||||||
return cb_parse_header((void *)(unsigned long)((struct cb_forward *)rec)->forward, len, info);
|
|
||||||
continue;
|
|
||||||
case CB_TAG_MEMORY:
|
|
||||||
cb_parse_memory(ptr, info);
|
|
||||||
break;
|
|
||||||
case CB_TAG_SERIAL:
|
|
||||||
cb_parse_serial(ptr, info);
|
|
||||||
break;
|
|
||||||
#ifdef CONFIG_NVRAM
|
|
||||||
case CB_TAG_CMOS_OPTION_TABLE:
|
|
||||||
cb_parse_optiontable(ptr, info);
|
|
||||||
break;
|
|
||||||
case CB_TAG_OPTION_CHECKSUM:
|
|
||||||
cb_parse_checksum(ptr, info);
|
|
||||||
break;
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
ptr += rec->size;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* == Architecture specific == */
|
|
||||||
/* This is the x86 specific stuff. */
|
|
||||||
|
|
||||||
int get_coreboot_info(struct sysinfo_t *info)
|
|
||||||
{
|
|
||||||
int ret = cb_parse_header(phys_to_virt(0x00000000), 0x1000, info);
|
|
||||||
|
|
||||||
if (ret != 1)
|
|
||||||
ret = cb_parse_header(phys_to_virt(0x000f0000), 0x1000, info);
|
|
||||||
|
|
||||||
return (ret == 1) ? 0 : -1;
|
|
||||||
}
|
|
|
@ -1,100 +0,0 @@
|
||||||
/*
|
|
||||||
* This file is part of the libpayload project.
|
|
||||||
*
|
|
||||||
* Copyright (C) 2008 Advanced Micro Devices, Inc.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* 2. 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.
|
|
||||||
* 3. 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 AND CONTRIBUTORS ``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 OR CONTRIBUTORS 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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* calling syntax: i386_do_exec(long addr, int argc, char **argv, int *ret) */
|
|
||||||
|
|
||||||
/* This implements the payload API detailed here:
|
|
||||||
* http://www.coreboot.org/Payload_API
|
|
||||||
*/
|
|
||||||
|
|
||||||
.align 4
|
|
||||||
.text
|
|
||||||
|
|
||||||
.globl powerpc_do_exec
|
|
||||||
.type powerpc_do_exec,@function
|
|
||||||
|
|
||||||
powerpc_do_exec:
|
|
||||||
#if 0
|
|
||||||
pushl %ebp
|
|
||||||
movl %esp, %ebp
|
|
||||||
pushl %eax
|
|
||||||
|
|
||||||
/* Put the run address in %eax */
|
|
||||||
movl 8(%ebp), %eax
|
|
||||||
|
|
||||||
/* Save off the rest of the registers */
|
|
||||||
|
|
||||||
pushl %esi
|
|
||||||
pushl %ecx
|
|
||||||
pushl %ebp
|
|
||||||
|
|
||||||
/* Push the argc and argv pointers on to the stack */
|
|
||||||
|
|
||||||
movl 12(%ebp), %esi
|
|
||||||
movl 16(%ebp), %ecx
|
|
||||||
|
|
||||||
pushl %esi
|
|
||||||
pushl %ecx
|
|
||||||
|
|
||||||
/* Move a "magic" number on the stack - the other
|
|
||||||
* payload will use this as a clue that the argc
|
|
||||||
* and argv are sane
|
|
||||||
*/
|
|
||||||
|
|
||||||
movl $12345678, %ecx
|
|
||||||
pushl %ecx
|
|
||||||
|
|
||||||
/* Jump to the code */
|
|
||||||
call *%eax
|
|
||||||
|
|
||||||
/* %eax has the return value */
|
|
||||||
|
|
||||||
/* Skip over the argc/argv stuff still on the stack */
|
|
||||||
addl $12, %esp
|
|
||||||
|
|
||||||
/* Get back %ebp */
|
|
||||||
popl %ebp
|
|
||||||
|
|
||||||
/* Get the pointer to the return value
|
|
||||||
* and save the return value in it
|
|
||||||
*/
|
|
||||||
|
|
||||||
movl 20(%ebp), %ecx
|
|
||||||
movl %eax, (%eax)
|
|
||||||
|
|
||||||
/* Get the rest of the saved registers */
|
|
||||||
popl %ecx
|
|
||||||
popl %esi
|
|
||||||
popl %eax
|
|
||||||
|
|
||||||
/* Restore the stack pointer */
|
|
||||||
movl %ebp,%esp
|
|
||||||
popl %ebp
|
|
||||||
ret
|
|
||||||
#endif
|
|
|
@ -1,87 +0,0 @@
|
||||||
/*
|
|
||||||
* This file is part of the libpayload project.
|
|
||||||
*
|
|
||||||
* Copyright (C) 2008 Advanced Micro Devices, Inc.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* 2. 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.
|
|
||||||
* 3. 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 AND CONTRIBUTORS ``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 OR CONTRIBUTORS 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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
.globl _entry, _leave
|
|
||||||
.text
|
|
||||||
.align 4
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Our entry point - assume that the CPU is in 32 bit protected mode and
|
|
||||||
* all segments are in a flat model. That's our operating mode, so we won't
|
|
||||||
* change anything.
|
|
||||||
*/
|
|
||||||
_entry:
|
|
||||||
#if 0
|
|
||||||
call _init
|
|
||||||
|
|
||||||
/* We're back - go back to the bootloader. */
|
|
||||||
ret
|
|
||||||
.align 4
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This function saves off the previous stack and switches us to our
|
|
||||||
* own execution environment.
|
|
||||||
*/
|
|
||||||
_init:
|
|
||||||
/* No interrupts, please. */
|
|
||||||
cli
|
|
||||||
|
|
||||||
/* Store current stack pointer. */
|
|
||||||
movl %esp, %esi
|
|
||||||
|
|
||||||
/* Store EAX and EBX */
|
|
||||||
|
|
||||||
movl %eax,loader_eax
|
|
||||||
movl %ebx,loader_ebx
|
|
||||||
|
|
||||||
/* Setup new stack. */
|
|
||||||
movl $_stack, %ebx
|
|
||||||
|
|
||||||
movl %ebx, %esp
|
|
||||||
|
|
||||||
/* Save old stack pointer. */
|
|
||||||
pushl %esi
|
|
||||||
|
|
||||||
/* Let's rock. */
|
|
||||||
call start_main
|
|
||||||
|
|
||||||
#endif
|
|
||||||
/* %eax has the return value - pass it on unmolested */
|
|
||||||
_leave:
|
|
||||||
#if 0
|
|
||||||
/* Get old stack pointer. */
|
|
||||||
popl %ebx
|
|
||||||
|
|
||||||
/* Restore old stack. */
|
|
||||||
movl %ebx, %esp
|
|
||||||
|
|
||||||
/* Return to the original context. */
|
|
||||||
ret
|
|
||||||
#endif
|
|
|
@ -1,73 +0,0 @@
|
||||||
/*
|
|
||||||
* This file is part of the libpayload project.
|
|
||||||
*
|
|
||||||
* Copyright (C) 2008 Advanced Micro Devices, Inc.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* 2. 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.
|
|
||||||
* 3. 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 AND CONTRIBUTORS ``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 OR CONTRIBUTORS 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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <libpayload.h>
|
|
||||||
|
|
||||||
unsigned long loader_eax; /**< The value of EAX passed from the loader */
|
|
||||||
unsigned long loader_ebx; /**< The value of EBX passed from the loader */
|
|
||||||
|
|
||||||
unsigned int main_argc; /**< The argc value to pass to main() */
|
|
||||||
|
|
||||||
/** The argv value to pass to main() */
|
|
||||||
char *main_argv[MAX_ARGC_COUNT];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This is our C entry function - set up the system
|
|
||||||
* and jump into the payload entry point.
|
|
||||||
*/
|
|
||||||
void start_main(void);
|
|
||||||
void start_main(void)
|
|
||||||
{
|
|
||||||
extern int main(int argc, char **argv);
|
|
||||||
|
|
||||||
/* Optionally set up the consoles. */
|
|
||||||
#ifndef CONFIG_SKIP_CONSOLE_INIT
|
|
||||||
console_init();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Gather system information. */
|
|
||||||
lib_get_sysinfo();
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Any other system init that has to happen before the
|
|
||||||
* user gets control goes here.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Go to the entry point.
|
|
||||||
* In the future we may care about the return value.
|
|
||||||
*/
|
|
||||||
|
|
||||||
(void) main(main_argc, (main_argc != 0) ? main_argv : NULL);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Returning here will go to the _leave function to return
|
|
||||||
* us to the original context.
|
|
||||||
*/
|
|
||||||
}
|
|
|
@ -1,80 +0,0 @@
|
||||||
/*
|
|
||||||
* This file is part of the libpayload project.
|
|
||||||
*
|
|
||||||
* Copyright (C) 2008 Advanced Micro Devices, Inc.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* 2. 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.
|
|
||||||
* 3. 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 AND CONTRIBUTORS ``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 OR CONTRIBUTORS 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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <libpayload-config.h>
|
|
||||||
#include <libpayload.h>
|
|
||||||
#include <coreboot_tables.h>
|
|
||||||
#include <multiboot_tables.h>
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This is a global structure that is used through the library - we set it
|
|
||||||
* up initially with some dummy values - hopefully they will be overridden.
|
|
||||||
*/
|
|
||||||
struct sysinfo_t lib_sysinfo = {
|
|
||||||
.cpu_khz = 200,
|
|
||||||
#ifdef CONFIG_SERIAL_CONSOLE
|
|
||||||
.ser_ioport = CONFIG_SERIAL_IOBASE,
|
|
||||||
#else
|
|
||||||
.ser_ioport = 0x3f8,
|
|
||||||
#endif
|
|
||||||
};
|
|
||||||
|
|
||||||
int lib_get_sysinfo(void)
|
|
||||||
{
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
/* Get the CPU speed (for delays). */
|
|
||||||
lib_sysinfo.cpu_khz = get_cpu_speed();
|
|
||||||
|
|
||||||
#ifdef CONFIG_MULTIBOOT
|
|
||||||
/* Get the information from the multiboot tables,
|
|
||||||
* if they exist */
|
|
||||||
get_multiboot_info(&lib_sysinfo);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Get information from the coreboot tables,
|
|
||||||
* if they exist */
|
|
||||||
|
|
||||||
ret = get_coreboot_info(&lib_sysinfo);
|
|
||||||
|
|
||||||
if (!lib_sysinfo.n_memranges) {
|
|
||||||
/* If we can't get a good memory range, use the default. */
|
|
||||||
lib_sysinfo.n_memranges = 2;
|
|
||||||
|
|
||||||
lib_sysinfo.memrange[0].base = 0;
|
|
||||||
lib_sysinfo.memrange[0].size = 640 * 1024;
|
|
||||||
lib_sysinfo.memrange[0].type = CB_MEM_RAM;
|
|
||||||
|
|
||||||
lib_sysinfo.memrange[1].base = 1024 * 1024;
|
|
||||||
lib_sysinfo.memrange[1].size = 31 * 1024 * 1024;
|
|
||||||
lib_sysinfo.memrange[1].type = CB_MEM_RAM;
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
|
@ -1,65 +0,0 @@
|
||||||
/*
|
|
||||||
* This file is part of the libpayload project.
|
|
||||||
*
|
|
||||||
* Copyright (C) 2008 Advanced Micro Devices, Inc.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* 2. 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.
|
|
||||||
* 3. 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 AND CONTRIBUTORS ``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 OR CONTRIBUTORS 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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @file i386/timer.c
|
|
||||||
* i386 specific timer routines
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <libpayload.h>
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @ingroup arch
|
|
||||||
* Global variable containing the speed of the processor in KHz.
|
|
||||||
*/
|
|
||||||
u32 cpu_khz;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Calculate the speed of the processor for use in delays.
|
|
||||||
*
|
|
||||||
* @return The CPU speed in kHz.
|
|
||||||
*/
|
|
||||||
unsigned int get_cpu_speed(void)
|
|
||||||
{
|
|
||||||
/* FIXME */
|
|
||||||
cpu_khz = 200 * 1024;
|
|
||||||
return cpu_khz;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint64_t timer_hz(void)
|
|
||||||
{
|
|
||||||
/* FIXME */
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint64_t timer_raw_value(void)
|
|
||||||
{
|
|
||||||
/* FIXME */
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,40 +0,0 @@
|
||||||
/*
|
|
||||||
* This file is part of the libpayload project.
|
|
||||||
*
|
|
||||||
* Copyright (C) 2008 Advanced Micro Devices, Inc.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* 2. 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.
|
|
||||||
* 3. 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 AND CONTRIBUTORS ``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 OR CONTRIBUTORS 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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
.globl halt
|
|
||||||
.text
|
|
||||||
.align 4
|
|
||||||
|
|
||||||
/* This function puts the system into a halt. */
|
|
||||||
halt:
|
|
||||||
#if 0
|
|
||||||
cli
|
|
||||||
hlt
|
|
||||||
jmp halt
|
|
||||||
#endif
|
|
|
@ -1,37 +0,0 @@
|
||||||
/*
|
|
||||||
* This file is part of the libpayload project.
|
|
||||||
*
|
|
||||||
* Copyright (C) 2008 coresystems GmbH
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* 2. 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.
|
|
||||||
* 3. 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 AND CONTRIBUTORS ``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 OR CONTRIBUTORS 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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
unsigned long virtual_offset = 0;
|
|
||||||
|
|
||||||
int getpagesize(void)
|
|
||||||
{
|
|
||||||
return 4096;
|
|
||||||
}
|
|
|
@ -75,13 +75,6 @@ if [ "$CONFIG_ARCH_ARMV7" = "y" ]; then
|
||||||
_ARCH=armv7
|
_ARCH=armv7
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$CONFIG_ARCH_POWERPC" = "y" ]; then
|
|
||||||
_ARCHINCDIR=$_INCDIR/powerpc
|
|
||||||
_ARCHLIBDIR=$_LIBDIR/powerpc
|
|
||||||
_ARCHEXTRA=""
|
|
||||||
_ARCH=powerpc
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$CONFIG_ARCH_X86" = "y" ]; then
|
if [ "$CONFIG_ARCH_X86" = "y" ]; then
|
||||||
_ARCHINCDIR=$_INCDIR/x86
|
_ARCHINCDIR=$_INCDIR/x86
|
||||||
_ARCHLIBDIR=$_LIBDIR/x86
|
_ARCHLIBDIR=$_LIBDIR/x86
|
||||||
|
|
|
@ -1,123 +0,0 @@
|
||||||
/*
|
|
||||||
* This file is part of the libpayload project.
|
|
||||||
*
|
|
||||||
* Copyright (C) 2008 Advanced Micro Devices, Inc.
|
|
||||||
* Copyright (C) 2008-2009 coresystems GmbH
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* 2. 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.
|
|
||||||
* 3. 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 AND CONTRIBUTORS ``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 OR CONTRIBUTORS 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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _ARCH_IO_H
|
|
||||||
#define _ARCH_IO_H
|
|
||||||
|
|
||||||
extern uint32_t isa_io_base;
|
|
||||||
|
|
||||||
#define readb(_a) (*(volatile unsigned char *) (_a))
|
|
||||||
#define readw(_a) (*(volatile unsigned short *) (_a))
|
|
||||||
#define readl(_a) (*(volatile unsigned long *) (_a))
|
|
||||||
|
|
||||||
#define writeb(_v, _a) (*(volatile unsigned char *) (_a) = (_v))
|
|
||||||
#define writew(_v, _a) (*(volatile unsigned short *) (_a) = (_v))
|
|
||||||
#define writel(_v, _a) (*(volatile unsigned long *) (_a) = (_v))
|
|
||||||
|
|
||||||
static inline unsigned long inl(int port)
|
|
||||||
{
|
|
||||||
volatile unsigned char *addr = (volatile unsigned char *)(isa_io_base + port);
|
|
||||||
unsigned long val;
|
|
||||||
__asm__ __volatile__("lhbrx %0,0,%1; eieio":"=r"(val):
|
|
||||||
"r"(addr), "m"(*addr));
|
|
||||||
return val;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline unsigned short inw(int port)
|
|
||||||
{
|
|
||||||
volatile unsigned char *addr = (volatile unsigned char *)(isa_io_base + port);
|
|
||||||
unsigned short val;
|
|
||||||
__asm__ __volatile__("lwbrx %0,0,%1; eieio":"=r"(val):"r"(addr), "m"(*addr));
|
|
||||||
return val;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline unsigned char inb(int port)
|
|
||||||
{
|
|
||||||
volatile unsigned char *addr = (volatile unsigned char *)(isa_io_base + port);
|
|
||||||
unsigned char val;
|
|
||||||
__asm__ __volatile__("lbz%U1%X1 %0,%1; eieio":"=r"(val):"m"(*addr));
|
|
||||||
return val;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void outl(unsigned long val, int port)
|
|
||||||
{
|
|
||||||
volatile unsigned char *addr = (volatile unsigned char *)(isa_io_base + port);
|
|
||||||
__asm__ __volatile__("stb%U0%X0 %1,%0; eieio":"=m"(*addr):"r"(val));
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void outw(unsigned short val, int port)
|
|
||||||
{
|
|
||||||
volatile unsigned char *addr = (volatile unsigned char *)(isa_io_base + port);
|
|
||||||
__asm__ __volatile__("sthbrx %1,0,%2; eieio":"=m"(*addr):"r"(val),"r"(addr));
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void outb(unsigned char val, int port)
|
|
||||||
{
|
|
||||||
volatile unsigned char *addr = (volatile unsigned char *)(isa_io_base + port);
|
|
||||||
__asm__ __volatile__("stwbrx %1,0,%2; eieio":"=m"(*addr):"r"(val), "r"(addr));
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void outsl(int port, const void *addr, unsigned long count)
|
|
||||||
{
|
|
||||||
volatile unsigned char *addr = (volatile unsigned char *)(isa_io_base + port);
|
|
||||||
//__asm__ __volatile__("rep; outsl" : "+S"(addr), "+c"(count) : "d"(port));
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void outsw(int port, const void *addr, unsigned long count)
|
|
||||||
{
|
|
||||||
volatile unsigned char *addr = (volatile unsigned char *)(isa_io_base + port);
|
|
||||||
//__asm__ __volatile__("rep; outsw" : "+S"(addr), "+c"(count) : "d"(port));
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void outsb(int port, const void *addr, unsigned long count)
|
|
||||||
{
|
|
||||||
volatile unsigned char *addr = (volatile unsigned char *)(isa_io_base + port);
|
|
||||||
//__asm__ __volatile__("rep; outsb" : "+S"(addr), "+c"(count) : "d"(port));
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void insl(int port, void *addr, unsigned long count)
|
|
||||||
{
|
|
||||||
volatile unsigned char *addr = (volatile unsigned char *)(isa_io_base + port);
|
|
||||||
//__asm__ __volatile__("rep; insl" : "+D"(addr), "+c"(count) : "d"(port));
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void insw(int port, void *addr, unsigned long count)
|
|
||||||
{
|
|
||||||
volatile unsigned char *addr = (volatile unsigned char *)(isa_io_base + port);
|
|
||||||
//__asm__ __volatile__("rep; insw" : "+D"(addr), "+c"(count) : "d"(port));
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void insb(int port, void *addr, unsigned long count)
|
|
||||||
{
|
|
||||||
volatile unsigned char *addr = (volatile unsigned char *)(isa_io_base + port);
|
|
||||||
//__asm__ __volatile__("rep; insb" : "+D"(addr), "+c"(count) : "d"(port));
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,60 +0,0 @@
|
||||||
/*
|
|
||||||
* This file is part of the libpayload project.
|
|
||||||
*
|
|
||||||
* Copyright (C) 2007 Uwe Hermann <uwe@hermann-uwe.de>
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* 2. 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.
|
|
||||||
* 3. 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 AND CONTRIBUTORS ``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 OR CONTRIBUTORS 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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _ARCH_TYPES_H
|
|
||||||
#define _ARCH_TYPES_H
|
|
||||||
|
|
||||||
typedef unsigned char uint8_t;
|
|
||||||
typedef unsigned char u8;
|
|
||||||
typedef signed char int8_t;
|
|
||||||
typedef signed char s8;
|
|
||||||
|
|
||||||
typedef unsigned short uint16_t;
|
|
||||||
typedef unsigned short u16;
|
|
||||||
typedef signed short int16_t;
|
|
||||||
typedef signed short s16;
|
|
||||||
|
|
||||||
typedef unsigned int uint32_t;
|
|
||||||
typedef unsigned int u32;
|
|
||||||
typedef signed int int32_t;
|
|
||||||
typedef signed int s32;
|
|
||||||
|
|
||||||
typedef unsigned long long uint64_t;
|
|
||||||
typedef unsigned long long u64;
|
|
||||||
typedef signed long long int64_t;
|
|
||||||
typedef signed long long s64;
|
|
||||||
|
|
||||||
typedef long time_t;
|
|
||||||
typedef long suseconds_t;
|
|
||||||
|
|
||||||
#ifndef NULL
|
|
||||||
#define NULL ((void *)0)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,41 +0,0 @@
|
||||||
/*
|
|
||||||
* This file is part of the libpayload project.
|
|
||||||
*
|
|
||||||
* Copyright (C) 2008 coresystems GmbH
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
* 1. Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* 2. 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.
|
|
||||||
* 3. 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 AND CONTRIBUTORS ``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 OR CONTRIBUTORS 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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _ARCH_VIRTUAL_H
|
|
||||||
#define _ARCH_VIRTUAL_H
|
|
||||||
|
|
||||||
extern unsigned long virtual_offset;
|
|
||||||
|
|
||||||
#define virt_to_phys(virt) ((unsigned long) (virt) + virtual_offset)
|
|
||||||
#define phys_to_virt(phys) ((void *) ((unsigned long) (phys) - virtual_offset))
|
|
||||||
|
|
||||||
#define virt_to_bus(addr) virt_to_phys(addr)
|
|
||||||
#define bus_to_virt(addr) phys_to_virt(addr)
|
|
||||||
|
|
||||||
#endif
|
|
Loading…
Reference in a new issue