mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-24 13:43:28 +00:00
* Patch by Yasushi Shoji, 07 Apr 2004:
- add support for microblaze processors - add support for AtmarkTechno "suzaku" board
This commit is contained in:
parent
998eaaecd4
commit
507bbe3e80
40 changed files with 2042 additions and 11 deletions
|
@ -1,7 +1,11 @@
|
|||
======================================================================
|
||||
Changes for U-Boot 1.1.1:
|
||||
======================================================================
|
||||
|
||||
|
||||
* Patch by Yasushi Shoji, 07 Apr 2004:
|
||||
- add support for microblaze processors
|
||||
- add support for AtmarkTechno "suzaku" board
|
||||
|
||||
* Configure PPChameleon board to use redundand environment in flash
|
||||
|
||||
* Configure PPChameleon board to use JFFS2 NAND support.
|
||||
|
|
14
Makefile
14
Makefile
|
@ -75,6 +75,9 @@ endif
|
|||
ifeq ($(ARCH),m68k)
|
||||
CROSS_COMPILE = m68k-elf-
|
||||
endif
|
||||
ifeq ($(ARCH),microblaze)
|
||||
CROSS_COMPILE = mb-
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
|
@ -1250,6 +1253,17 @@ ADNPESC1_config: unconfig
|
|||
@./mkconfig -a ADNPESC1 nios nios adnpesc1 ssv
|
||||
|
||||
|
||||
#========================================================================
|
||||
# MicroBlaze
|
||||
#========================================================================
|
||||
#########################################################################
|
||||
## Microblaze
|
||||
#########################################################################
|
||||
suzaku_config: unconfig
|
||||
@ >include/config.h
|
||||
@echo "#define CONFIG_SUZAKU 1" >> include/config.h
|
||||
@./mkconfig -a $(@:_config=) microblaze microblaze suzaku AtmarkTechno
|
||||
|
||||
#########################################################################
|
||||
## MIPS32 AU1X00
|
||||
#########################################################################
|
||||
|
|
9
README
9
README
|
@ -240,6 +240,10 @@ The following options need to be configured:
|
|||
CONFIG_ARM7
|
||||
CONFIG_PXA250
|
||||
|
||||
MicroBlaze based CPUs:
|
||||
----------------------
|
||||
CONFIG_MICROBLZE
|
||||
|
||||
|
||||
- Board Type: Define exactly one of
|
||||
|
||||
|
@ -292,6 +296,11 @@ The following options need to be configured:
|
|||
CONFIG_LUBBOCK, CONFIG_SHANNON, CONFIG_SMDK2400,
|
||||
CONFIG_SMDK2410, CONFIG_TRAB, CONFIG_VCMA9,
|
||||
|
||||
MicroBlaze based boards:
|
||||
------------------------
|
||||
|
||||
CONFIG_SUZAKU
|
||||
|
||||
|
||||
- CPU Module Type: (if CONFIG_COGENT is defined)
|
||||
Define exactly one of
|
||||
|
|
40
board/AtmarkTechno/suzaku/Makefile
Normal file
40
board/AtmarkTechno/suzaku/Makefile
Normal file
|
@ -0,0 +1,40 @@
|
|||
#
|
||||
# (C) Copyright 2003
|
||||
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
|
||||
#
|
||||
# See file CREDITS for list of people who contributed to this
|
||||
# project.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as
|
||||
# published by the Free Software Foundation; either version 2 of
|
||||
# the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||
# MA 02111-1307 USA
|
||||
#
|
||||
|
||||
include $(TOPDIR)/config.mk
|
||||
|
||||
LIB = lib$(BOARD).a
|
||||
|
||||
OBJS = $(BOARD).o flash.o
|
||||
|
||||
$(LIB): .depend $(OBJS)
|
||||
$(AR) crv $@ $(OBJS)
|
||||
|
||||
#########################################################################
|
||||
|
||||
.depend: Makefile $(SOBJS:.o=.S) $(OBJS:.o=.c)
|
||||
$(CC) -M $(CFLAGS) $(SOBJS:.o=.S) $(OBJS:.o=.c) > $@
|
||||
|
||||
sinclude .depend
|
||||
|
||||
#########################################################################
|
29
board/AtmarkTechno/suzaku/config.mk
Normal file
29
board/AtmarkTechno/suzaku/config.mk
Normal file
|
@ -0,0 +1,29 @@
|
|||
#
|
||||
# (C) Copyright 2004 Atmark Techno, Inc.
|
||||
#
|
||||
# Yasushi SHOJI <yashi@atmark-techno.com>
|
||||
#
|
||||
# See file CREDITS for list of people who contributed to this
|
||||
# project.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as
|
||||
# published by the Free Software Foundation; either version 2 of
|
||||
# the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||
# MA 02111-1307 USA
|
||||
#
|
||||
|
||||
TEXT_BASE = 0x80F00000
|
||||
|
||||
PLATFORM_CPPFLAGS += -mno-xl-soft-mul
|
||||
PLATFORM_CPPFLAGS += -mno-xl-soft-div
|
||||
PLATFORM_CPPFLAGS += -mxl-barrel-shift
|
46
board/AtmarkTechno/suzaku/flash.c
Normal file
46
board/AtmarkTechno/suzaku/flash.c
Normal file
|
@ -0,0 +1,46 @@
|
|||
/*
|
||||
* (C) Copyright 2004 Atmark Techno, Inc.
|
||||
*
|
||||
* Yasushi SHOJI <yashi@atmark-techno.com>
|
||||
*
|
||||
* See file CREDITS for list of people who contributed to this
|
||||
* project.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||
* MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
|
||||
flash_info_t flash_info[CFG_MAX_FLASH_BANKS];
|
||||
|
||||
unsigned long flash_init(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void flash_print_info(flash_info_t *info)
|
||||
{
|
||||
}
|
||||
|
||||
int flash_erase(flash_info_t *info, int s_first, int s_last)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int write_buff(flash_info_t *info, uchar *src, ulong addr, ulong cnt)
|
||||
{
|
||||
return 0;
|
||||
}
|
36
board/AtmarkTechno/suzaku/suzaku.c
Normal file
36
board/AtmarkTechno/suzaku/suzaku.c
Normal file
|
@ -0,0 +1,36 @@
|
|||
/*
|
||||
* (C) Copyright 2004 Atmark Techno, Inc.
|
||||
*
|
||||
* Yasushi SHOJI <yashi@atmark-techno.com>
|
||||
*
|
||||
* See file CREDITS for list of people who contributed to this
|
||||
* project.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||
* MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
|
||||
void board_init(void)
|
||||
{
|
||||
serial_init();
|
||||
|
||||
main_loop();
|
||||
}
|
||||
|
||||
void do_reset(void)
|
||||
{
|
||||
}
|
65
board/AtmarkTechno/suzaku/u-boot.lds
Normal file
65
board/AtmarkTechno/suzaku/u-boot.lds
Normal file
|
@ -0,0 +1,65 @@
|
|||
/*
|
||||
* (C) Copyright 2004 Atmark Techno, Inc.
|
||||
*
|
||||
* Yasushi SHOJI <yashi@atmark-techno.com>
|
||||
*
|
||||
* See file CREDITS for list of people who contributed to this
|
||||
* project.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||
* MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
OUTPUT_ARCH(microblaze)
|
||||
ENTRY(_start)
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
.text ALIGN(0x4):
|
||||
{
|
||||
__text_start = .;
|
||||
cpu/microblaze/start.o (.text)
|
||||
*(.text)
|
||||
__text_end = .;
|
||||
}
|
||||
|
||||
.rodata ALIGN(0x4):
|
||||
{
|
||||
__rodata_start = .;
|
||||
*(.rodata)
|
||||
__rodata_end = .;
|
||||
}
|
||||
|
||||
.data ALIGN(0x4):
|
||||
{
|
||||
__data_start = .;
|
||||
*(.data)
|
||||
__data_end = .;
|
||||
}
|
||||
|
||||
.u_boot_cmd ALIGN(0x4):
|
||||
{
|
||||
__u_boot_cmd_start = .;
|
||||
*(.u_boot_cmd)
|
||||
__u_boot_cmd_end = .;
|
||||
}
|
||||
|
||||
.bss ALIGN(0x4):
|
||||
{
|
||||
__bss_start = .;
|
||||
*(.bss)
|
||||
__bss_start = .;
|
||||
}
|
||||
}
|
|
@ -141,7 +141,7 @@ SECTIONS
|
|||
}
|
||||
|
||||
. = 0xFFFF8000;
|
||||
.ppcenv :
|
||||
.ppcenv :
|
||||
{
|
||||
common/environment.o(.ppcenv);
|
||||
}
|
||||
|
|
|
@ -242,6 +242,8 @@ int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|||
if (hdr->ih_arch != IH_CPU_NIOS)
|
||||
#elif defined(__M68K__)
|
||||
if (hdr->ih_arch != IH_CPU_M68K)
|
||||
#elif defined(__microblaze__)
|
||||
if (hdr->ih_arch != IH_CPU_MICROBLAZE)
|
||||
#else
|
||||
# error Unknown CPU type
|
||||
#endif
|
||||
|
@ -1185,6 +1187,7 @@ print_type (image_header_t *hdr)
|
|||
case IH_CPU_SPARC: arch = "SPARC"; break;
|
||||
case IH_CPU_SPARC64: arch = "SPARC 64 Bit"; break;
|
||||
case IH_CPU_M68K: arch = "M68K"; break;
|
||||
case IH_CPU_MICROBLAZE: arch = "Microblaze"; break;
|
||||
default: arch = "Unknown Architecture"; break;
|
||||
}
|
||||
|
||||
|
|
43
cpu/microblaze/Makefile
Normal file
43
cpu/microblaze/Makefile
Normal file
|
@ -0,0 +1,43 @@
|
|||
#
|
||||
# (C) Copyright 2000
|
||||
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
|
||||
#
|
||||
# See file CREDITS for list of people who contributed to this
|
||||
# project.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as
|
||||
# published by the Free Software Foundation; either version 2 of
|
||||
# the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||
# MA 02111-1307 USA
|
||||
#
|
||||
|
||||
include $(TOPDIR)/config.mk
|
||||
|
||||
LIB = lib$(CPU).a
|
||||
|
||||
START = start.o
|
||||
OBJS = cpu.o interrupts.o
|
||||
|
||||
all: .depend $(START) $(LIB)
|
||||
|
||||
$(LIB): $(OBJS)
|
||||
$(AR) crv $@ $(OBJS)
|
||||
|
||||
#########################################################################
|
||||
|
||||
.depend: Makefile $(START:.o=.S) $(OBJS:.o=.c) $(AOBJS:.o=.S)
|
||||
$(CC) -M $(CFLAGS) $(START:.o=.S) $(OBJS:.o=.c) $(AOBJS:.o=.S) > $@
|
||||
|
||||
sinclude .depend
|
||||
|
||||
#########################################################################
|
25
cpu/microblaze/cpu.c
Normal file
25
cpu/microblaze/cpu.c
Normal file
|
@ -0,0 +1,25 @@
|
|||
/*
|
||||
* (C) Copyright 2004 Atmark Techno, Inc.
|
||||
*
|
||||
* Yasushi SHOJI <yashi@atmark-techno.com>
|
||||
*
|
||||
* See file CREDITS for list of people who contributed to this
|
||||
* project.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||
* MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
/* EMPTY FILE */
|
32
cpu/microblaze/interrupts.c
Normal file
32
cpu/microblaze/interrupts.c
Normal file
|
@ -0,0 +1,32 @@
|
|||
/*
|
||||
* (C) Copyright 2004 Atmark Techno, Inc.
|
||||
*
|
||||
* Yasushi SHOJI <yashi@atmark-techno.com>
|
||||
*
|
||||
* See file CREDITS for list of people who contributed to this
|
||||
* project.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||
* MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
void enable_interrupts(void)
|
||||
{
|
||||
}
|
||||
|
||||
int disable_interrupts(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
36
cpu/microblaze/start.S
Normal file
36
cpu/microblaze/start.S
Normal file
|
@ -0,0 +1,36 @@
|
|||
/*
|
||||
* (C) Copyright 2004 Atmark Techno, Inc.
|
||||
*
|
||||
* Yasushi SHOJI <yashi@atmark-techno.com>
|
||||
*
|
||||
* See file CREDITS for list of people who contributed to this
|
||||
* project.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||
* MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
|
||||
.text
|
||||
.global _start
|
||||
_start:
|
||||
|
||||
addi r1, r0, CFG_SDRAM_BASE /* init stack pointer */
|
||||
addi r1, r1, CFG_SDRAM_SIZE /* set sp to high up */
|
||||
|
||||
brai board_init
|
||||
|
||||
1: bri 1b
|
|
@ -39,7 +39,8 @@ OBJS = 3c589.o 5701rls.o ali512x.o \
|
|||
ps2ser.o ps2mult.o pc_keyb.o keyboard.o \
|
||||
rtl8019.o rtl8139.o \
|
||||
s3c24x0_i2c.o sed13806.o sed156x.o \
|
||||
serial.o serial_max3100.o serial_pl011.o serial_pl010.o \
|
||||
serial.o serial_max3100.o serial_pl010.o serial_pl011.o \
|
||||
serial_xuartlite.o \
|
||||
smc91111.o smiLynxEM.o status_led.o sym53c8xx.o \
|
||||
ti_pci1410a.o tigon3.o w83c553f.o omap1510_i2c.o \
|
||||
usbdcore.o usbdcore_ep0.o usbdcore_omap1510.o usbtty.o \
|
||||
|
|
72
drivers/serial_xuartlite.c
Normal file
72
drivers/serial_xuartlite.c
Normal file
|
@ -0,0 +1,72 @@
|
|||
/*
|
||||
* (C) Copyright 2004 Atmark Techno, Inc.
|
||||
*
|
||||
* Yasushi SHOJI <yashi@atmark-techno.com>
|
||||
*
|
||||
* See file CREDITS for list of people who contributed to this
|
||||
* project.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||
* MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
#include <asm/serial_xuartlite.h>
|
||||
|
||||
/* FIXME: we should convert these to in32 and out32 */
|
||||
#define IO_WORD(offset) (*(volatile unsigned long *)(offset))
|
||||
#define IO_SERIAL(offset) IO_WORD(CONFIG_SERIAL_BASE + (offset))
|
||||
|
||||
#define IO_SERIAL_RX_FIFO IO_SERIAL(XUL_RX_FIFO_OFFSET)
|
||||
#define IO_SERIAL_TX_FIFO IO_SERIAL(XUL_TX_FIFO_OFFSET)
|
||||
#define IO_SERIAL_STATUS IO_SERIAL(XUL_STATUS_REG_OFFSET)
|
||||
#define IO_SERIAL_CONTROL IO_SERIAL(XUL_CONTROL_REG_OFFSET)
|
||||
|
||||
int serial_init(void)
|
||||
{
|
||||
/* FIXME: Nothing for now. We should initialize fifo, etc */
|
||||
return 0;
|
||||
}
|
||||
|
||||
void serial_setbrg(void)
|
||||
{
|
||||
/* FIXME: what's this for? */
|
||||
}
|
||||
|
||||
void serial_putc(const char c)
|
||||
{
|
||||
if (c == '\n') serial_putc('\r');
|
||||
while (IO_SERIAL_STATUS & XUL_SR_TX_FIFO_FULL);
|
||||
IO_SERIAL_TX_FIFO = (unsigned char) (c & 0xff);
|
||||
return 0;
|
||||
}
|
||||
|
||||
void serial_puts(const char * s)
|
||||
{
|
||||
while (*s) {
|
||||
serial_putc(*s++);
|
||||
}
|
||||
}
|
||||
|
||||
int serial_getc(void)
|
||||
{
|
||||
while (!(IO_SERIAL_STATUS & XUL_SR_RX_FIFO_VALID_DATA));
|
||||
return IO_SERIAL_RX_FIFO & 0xff;
|
||||
}
|
||||
|
||||
int serial_tstc(void)
|
||||
{
|
||||
return (IO_SERIAL_STATUS & XUL_SR_RX_FIFO_VALID_DATA);
|
||||
}
|
|
@ -45,6 +45,10 @@ ifeq ($(ARCH),m68k)
|
|||
LOAD_ADDR = 0x20000 -L $(clibdir)
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),microblaze)
|
||||
LOAD_ADDR = 0x80F00000
|
||||
endif
|
||||
|
||||
include $(TOPDIR)/config.mk
|
||||
|
||||
SREC = hello_world.srec
|
||||
|
|
|
@ -94,6 +94,18 @@ gd_t *global_data;
|
|||
" move.l (%%a0), %%a0\n" \
|
||||
" jmp (%%a0)\n" \
|
||||
: : "i"(offsetof(gd_t, jt)), "i"(XF_ ## x * sizeof(void *)) : "a0");
|
||||
#elif defined(CONFIG_MICROBLZE)
|
||||
/*
|
||||
* r31 holds the pointer to the global_data. r5 is a call-clobbered.
|
||||
*/
|
||||
#define EXPORT_FUNC(x) \
|
||||
asm volatile ( \
|
||||
" .globl " #x "\n" \
|
||||
#x ":\n" \
|
||||
" lwi r5, r31, %0\n" \
|
||||
" lwi r5, r5, %1\n" \
|
||||
" bra r5\n" \
|
||||
: : "i"(offsetof(gd_t, jt)), "i"(XF_ ## x * sizeof(void *)) : "r5");
|
||||
#else
|
||||
#error stubs definition missing for this architecture
|
||||
#endif
|
||||
|
|
|
@ -182,8 +182,8 @@ static int read_nand_cached(u32 off, u32 size, u_char *buf)
|
|||
if (!nand_cache) {
|
||||
/* This memory never gets freed but 'cause
|
||||
it's a bootloader, nobody cares */
|
||||
nand_cache = malloc(NAND_CACHE_SIZE);
|
||||
if (!nand_cache) {
|
||||
nand_cache = malloc(NAND_CACHE_SIZE);
|
||||
if (!nand_cache) {
|
||||
printf("read_nand_cached: can't alloc cache size %d bytes\n",
|
||||
NAND_CACHE_SIZE);
|
||||
return -1;
|
||||
|
@ -241,7 +241,7 @@ static void *get_node_mem(u32 off)
|
|||
return ret;
|
||||
}
|
||||
|
||||
static void put_fl_mem(void *buf)
|
||||
static void put_fl_mem(void *buf)
|
||||
{
|
||||
free(buf);
|
||||
}
|
||||
|
@ -258,7 +258,7 @@ static inline void *get_node_mem(u32 off)
|
|||
return (void*)off;
|
||||
}
|
||||
|
||||
static inline void put_fl_mem(void *buf)
|
||||
static inline void put_fl_mem(void *buf)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -414,7 +414,7 @@ static int compare_dirents(struct b_node *new, struct b_node *old)
|
|||
struct jffs2_raw_dirent ojOld;
|
||||
struct jffs2_raw_dirent *jNew =
|
||||
(struct jffs2_raw_dirent *)get_fl_mem(new->offset, sizeof(ojNew), &ojNew);
|
||||
struct jffs2_raw_dirent *jOld =
|
||||
struct jffs2_raw_dirent *jOld =
|
||||
(struct jffs2_raw_dirent *)get_fl_mem(old->offset, sizeof(ojOld), &ojOld);
|
||||
int cmp;
|
||||
|
||||
|
@ -511,7 +511,7 @@ jffs2_1pass_read_inode(struct b_lists *pL, u32 inode, char *dest)
|
|||
* we will live with it.
|
||||
*/
|
||||
for (b = pL->frag.listHead; b != NULL; b = b->next) {
|
||||
jNode = (struct jffs2_raw_inode *) get_fl_mem(b->offset,
|
||||
jNode = (struct jffs2_raw_inode *) get_fl_mem(b->offset,
|
||||
sizeof(struct jffs2_raw_inode), NULL);
|
||||
if ((inode == jNode->ino)) {
|
||||
/* get actual file length from the newest node */
|
||||
|
|
63
include/asm-microblaze/arch-microblaze/xio.h
Normal file
63
include/asm-microblaze/arch-microblaze/xio.h
Normal file
|
@ -0,0 +1,63 @@
|
|||
/*
|
||||
* xio.h
|
||||
*
|
||||
* Defines XIo functions for Xilinx OCP in terms of Linux primitives
|
||||
*
|
||||
* Author: MontaVista Software, Inc.
|
||||
* source@mvista.com
|
||||
*
|
||||
* 2002 (c) MontaVista, Software, Inc. This file is licensed under the terms
|
||||
* of the GNU General Public License version 2. This program is licensed
|
||||
* "as is" without any warranty of any kind, whether express or implied.
|
||||
*/
|
||||
|
||||
#ifndef XIO_H
|
||||
#define XIO_H
|
||||
|
||||
#include "xbasic_types.h"
|
||||
#include <asm/io.h>
|
||||
|
||||
typedef u32 XIo_Address;
|
||||
|
||||
extern inline u8
|
||||
XIo_In8(XIo_Address InAddress)
|
||||
{
|
||||
return (u8) in_8((volatile unsigned char *) InAddress);
|
||||
}
|
||||
extern inline u16
|
||||
XIo_In16(XIo_Address InAddress)
|
||||
{
|
||||
return (u16) in_be16((volatile unsigned short *) InAddress);
|
||||
}
|
||||
extern inline u32
|
||||
XIo_In32(XIo_Address InAddress)
|
||||
{
|
||||
return (u32) in_be32((volatile unsigned *) InAddress);
|
||||
}
|
||||
extern inline void
|
||||
XIo_Out8(XIo_Address OutAddress, u8 Value)
|
||||
{
|
||||
out_8((volatile unsigned char *) OutAddress, Value);
|
||||
}
|
||||
extern inline void
|
||||
XIo_Out16(XIo_Address OutAddress, u16 Value)
|
||||
{
|
||||
out_be16((volatile unsigned short *) OutAddress, Value);
|
||||
}
|
||||
extern inline void
|
||||
XIo_Out32(XIo_Address OutAddress, u32 Value)
|
||||
{
|
||||
out_be32((volatile unsigned *) OutAddress, Value);
|
||||
}
|
||||
|
||||
#define XIo_ToLittleEndian16(s,d) (*(u16*)(d) = cpu_to_le16((u16)(s)))
|
||||
#define XIo_ToLittleEndian32(s,d) (*(u32*)(d) = cpu_to_le32((u32)(s)))
|
||||
#define XIo_ToBigEndian16(s,d) (*(u16*)(d) = cpu_to_be16((u16)(s)))
|
||||
#define XIo_ToBigEndian32(s,d) (*(u32*)(d) = cpu_to_be32((u32)(s)))
|
||||
|
||||
#define XIo_FromLittleEndian16(s,d) (*(u16*)(d) = le16_to_cpu((u16)(s)))
|
||||
#define XIo_FromLittleEndian32(s,d) (*(u32*)(d) = le32_to_cpu((u32)(s)))
|
||||
#define XIo_FromBigEndian16(s,d) (*(u16*)(d) = be16_to_cpu((u16)(s)))
|
||||
#define XIo_FromBigEndian32(s,d) (*(u32*)(d) = be32_to_cpu((u32)(s)))
|
||||
|
||||
#endif /* XIO_H */
|
392
include/asm-microblaze/bitops.h
Normal file
392
include/asm-microblaze/bitops.h
Normal file
|
@ -0,0 +1,392 @@
|
|||
#ifndef _MICROBLAZE_BITOPS_H
|
||||
#define _MICROBLAZE_BITOPS_H
|
||||
|
||||
/*
|
||||
* Copyright 1992, Linus Torvalds.
|
||||
*/
|
||||
|
||||
#include <linux/config.h>
|
||||
#include <asm/byteorder.h> /* swab32 */
|
||||
#include <asm/system.h> /* save_flags */
|
||||
|
||||
#ifdef __KERNEL__
|
||||
/*
|
||||
* Function prototypes to keep gcc -Wall happy
|
||||
*/
|
||||
|
||||
/*
|
||||
* The __ functions are not atomic
|
||||
*/
|
||||
|
||||
extern void set_bit(int nr, volatile void * addr);
|
||||
extern void __set_bit(int nr, volatile void * addr);
|
||||
|
||||
extern void clear_bit(int nr, volatile void * addr);
|
||||
#define __clear_bit(nr, addr) clear_bit(nr, addr)
|
||||
|
||||
extern void change_bit(int nr, volatile void * addr);
|
||||
extern void __change_bit(int nr, volatile void * addr);
|
||||
extern int test_and_set_bit(int nr, volatile void * addr);
|
||||
extern int __test_and_set_bit(int nr, volatile void * addr);
|
||||
extern int test_and_clear_bit(int nr, volatile void * addr);
|
||||
extern int __test_and_clear_bit(int nr, volatile void * addr);
|
||||
extern int test_and_change_bit(int nr, volatile void * addr);
|
||||
extern int __test_and_change_bit(int nr, volatile void * addr);
|
||||
extern int __constant_test_bit(int nr, const volatile void * addr);
|
||||
extern int __test_bit(int nr, volatile void * addr);
|
||||
extern int find_first_zero_bit(void * addr, unsigned size);
|
||||
extern int find_next_zero_bit (void * addr, int size, int offset);
|
||||
|
||||
/*
|
||||
* ffz = Find First Zero in word. Undefined if no zero exists,
|
||||
* so code should check against ~0UL first..
|
||||
*/
|
||||
extern __inline__ unsigned long ffz(unsigned long word)
|
||||
{
|
||||
unsigned long result = 0;
|
||||
|
||||
while(word & 1) {
|
||||
result++;
|
||||
word >>= 1;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
extern __inline__ void set_bit(int nr, volatile void * addr)
|
||||
{
|
||||
int * a = (int *) addr;
|
||||
int mask;
|
||||
unsigned long flags;
|
||||
|
||||
a += nr >> 5;
|
||||
mask = 1 << (nr & 0x1f);
|
||||
save_flags_cli(flags);
|
||||
*a |= mask;
|
||||
restore_flags(flags);
|
||||
}
|
||||
|
||||
extern __inline__ void __set_bit(int nr, volatile void * addr)
|
||||
{
|
||||
int * a = (int *) addr;
|
||||
int mask;
|
||||
|
||||
a += nr >> 5;
|
||||
mask = 1 << (nr & 0x1f);
|
||||
*a |= mask;
|
||||
}
|
||||
|
||||
/*
|
||||
* clear_bit() doesn't provide any barrier for the compiler.
|
||||
*/
|
||||
#define smp_mb__before_clear_bit() barrier()
|
||||
#define smp_mb__after_clear_bit() barrier()
|
||||
|
||||
extern __inline__ void clear_bit(int nr, volatile void * addr)
|
||||
{
|
||||
int * a = (int *) addr;
|
||||
int mask;
|
||||
unsigned long flags;
|
||||
|
||||
a += nr >> 5;
|
||||
mask = 1 << (nr & 0x1f);
|
||||
save_flags_cli(flags);
|
||||
*a &= ~mask;
|
||||
restore_flags(flags);
|
||||
}
|
||||
|
||||
extern __inline__ void change_bit(int nr, volatile void * addr)
|
||||
{
|
||||
int mask;
|
||||
unsigned long flags;
|
||||
unsigned long *ADDR = (unsigned long *) addr;
|
||||
|
||||
ADDR += nr >> 5;
|
||||
mask = 1 << (nr & 31);
|
||||
save_flags_cli(flags);
|
||||
*ADDR ^= mask;
|
||||
restore_flags(flags);
|
||||
}
|
||||
|
||||
extern __inline__ void __change_bit(int nr, volatile void * addr)
|
||||
{
|
||||
int mask;
|
||||
unsigned long *ADDR = (unsigned long *) addr;
|
||||
|
||||
ADDR += nr >> 5;
|
||||
mask = 1 << (nr & 31);
|
||||
*ADDR ^= mask;
|
||||
}
|
||||
|
||||
extern __inline__ int test_and_set_bit(int nr, volatile void * addr)
|
||||
{
|
||||
int mask, retval;
|
||||
volatile unsigned int *a = (volatile unsigned int *) addr;
|
||||
unsigned long flags;
|
||||
|
||||
a += nr >> 5;
|
||||
mask = 1 << (nr & 0x1f);
|
||||
save_flags_cli(flags);
|
||||
retval = (mask & *a) != 0;
|
||||
*a |= mask;
|
||||
restore_flags(flags);
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
extern __inline__ int __test_and_set_bit(int nr, volatile void * addr)
|
||||
{
|
||||
int mask, retval;
|
||||
volatile unsigned int *a = (volatile unsigned int *) addr;
|
||||
|
||||
a += nr >> 5;
|
||||
mask = 1 << (nr & 0x1f);
|
||||
retval = (mask & *a) != 0;
|
||||
*a |= mask;
|
||||
return retval;
|
||||
}
|
||||
|
||||
extern __inline__ int test_and_clear_bit(int nr, volatile void * addr)
|
||||
{
|
||||
int mask, retval;
|
||||
volatile unsigned int *a = (volatile unsigned int *) addr;
|
||||
unsigned long flags;
|
||||
|
||||
a += nr >> 5;
|
||||
mask = 1 << (nr & 0x1f);
|
||||
save_flags_cli(flags);
|
||||
retval = (mask & *a) != 0;
|
||||
*a &= ~mask;
|
||||
restore_flags(flags);
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
extern __inline__ int __test_and_clear_bit(int nr, volatile void * addr)
|
||||
{
|
||||
int mask, retval;
|
||||
volatile unsigned int *a = (volatile unsigned int *) addr;
|
||||
|
||||
a += nr >> 5;
|
||||
mask = 1 << (nr & 0x1f);
|
||||
retval = (mask & *a) != 0;
|
||||
*a &= ~mask;
|
||||
return retval;
|
||||
}
|
||||
|
||||
extern __inline__ int test_and_change_bit(int nr, volatile void * addr)
|
||||
{
|
||||
int mask, retval;
|
||||
volatile unsigned int *a = (volatile unsigned int *) addr;
|
||||
unsigned long flags;
|
||||
|
||||
a += nr >> 5;
|
||||
mask = 1 << (nr & 0x1f);
|
||||
save_flags_cli(flags);
|
||||
retval = (mask & *a) != 0;
|
||||
*a ^= mask;
|
||||
restore_flags(flags);
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
extern __inline__ int __test_and_change_bit(int nr, volatile void * addr)
|
||||
{
|
||||
int mask, retval;
|
||||
volatile unsigned int *a = (volatile unsigned int *) addr;
|
||||
|
||||
a += nr >> 5;
|
||||
mask = 1 << (nr & 0x1f);
|
||||
retval = (mask & *a) != 0;
|
||||
*a ^= mask;
|
||||
return retval;
|
||||
}
|
||||
|
||||
/*
|
||||
* This routine doesn't need to be atomic.
|
||||
*/
|
||||
extern __inline__ int __constant_test_bit(int nr, const volatile void * addr)
|
||||
{
|
||||
return ((1UL << (nr & 31)) & (((const volatile unsigned int *) addr)[nr >> 5])) != 0;
|
||||
}
|
||||
|
||||
extern __inline__ int __test_bit(int nr, volatile void * addr)
|
||||
{
|
||||
int * a = (int *) addr;
|
||||
int mask;
|
||||
|
||||
a += nr >> 5;
|
||||
mask = 1 << (nr & 0x1f);
|
||||
return ((mask & *a) != 0);
|
||||
}
|
||||
|
||||
#define test_bit(nr,addr) \
|
||||
(__builtin_constant_p(nr) ? \
|
||||
__constant_test_bit((nr),(addr)) : \
|
||||
__test_bit((nr),(addr)))
|
||||
|
||||
#define find_first_zero_bit(addr, size) \
|
||||
find_next_zero_bit((addr), (size), 0)
|
||||
|
||||
extern __inline__ int find_next_zero_bit (void * addr, int size, int offset)
|
||||
{
|
||||
unsigned long *p = ((unsigned long *) addr) + (offset >> 5);
|
||||
unsigned long result = offset & ~31UL;
|
||||
unsigned long tmp;
|
||||
|
||||
if (offset >= size)
|
||||
return size;
|
||||
size -= result;
|
||||
offset &= 31UL;
|
||||
if (offset) {
|
||||
tmp = *(p++);
|
||||
tmp |= ~0UL >> (32-offset);
|
||||
if (size < 32)
|
||||
goto found_first;
|
||||
if (~tmp)
|
||||
goto found_middle;
|
||||
size -= 32;
|
||||
result += 32;
|
||||
}
|
||||
while (size & ~31UL) {
|
||||
if (~(tmp = *(p++)))
|
||||
goto found_middle;
|
||||
result += 32;
|
||||
size -= 32;
|
||||
}
|
||||
if (!size)
|
||||
return result;
|
||||
tmp = *p;
|
||||
|
||||
found_first:
|
||||
tmp |= ~0UL >> size;
|
||||
found_middle:
|
||||
return result + ffz(tmp);
|
||||
}
|
||||
|
||||
#define ffs(x) generic_ffs(x)
|
||||
|
||||
/*
|
||||
* hweightN: returns the hamming weight (i.e. the number
|
||||
* of bits set) of a N-bit word
|
||||
*/
|
||||
|
||||
#define hweight32(x) generic_hweight32(x)
|
||||
#define hweight16(x) generic_hweight16(x)
|
||||
#define hweight8(x) generic_hweight8(x)
|
||||
|
||||
|
||||
extern __inline__ int ext2_set_bit(int nr, volatile void * addr)
|
||||
{
|
||||
int mask, retval;
|
||||
unsigned long flags;
|
||||
volatile unsigned char *ADDR = (unsigned char *) addr;
|
||||
|
||||
ADDR += nr >> 3;
|
||||
mask = 1 << (nr & 0x07);
|
||||
save_flags_cli(flags);
|
||||
retval = (mask & *ADDR) != 0;
|
||||
*ADDR |= mask;
|
||||
restore_flags(flags);
|
||||
return retval;
|
||||
}
|
||||
|
||||
extern __inline__ int ext2_clear_bit(int nr, volatile void * addr)
|
||||
{
|
||||
int mask, retval;
|
||||
unsigned long flags;
|
||||
volatile unsigned char *ADDR = (unsigned char *) addr;
|
||||
|
||||
ADDR += nr >> 3;
|
||||
mask = 1 << (nr & 0x07);
|
||||
save_flags_cli(flags);
|
||||
retval = (mask & *ADDR) != 0;
|
||||
*ADDR &= ~mask;
|
||||
restore_flags(flags);
|
||||
return retval;
|
||||
}
|
||||
|
||||
extern __inline__ int ext2_test_bit(int nr, const volatile void * addr)
|
||||
{
|
||||
int mask;
|
||||
const volatile unsigned char *ADDR = (const unsigned char *) addr;
|
||||
|
||||
ADDR += nr >> 3;
|
||||
mask = 1 << (nr & 0x07);
|
||||
return ((mask & *ADDR) != 0);
|
||||
}
|
||||
|
||||
#define ext2_find_first_zero_bit(addr, size) \
|
||||
ext2_find_next_zero_bit((addr), (size), 0)
|
||||
|
||||
extern __inline__ unsigned long ext2_find_next_zero_bit(void *addr, unsigned long size, unsigned long offset)
|
||||
{
|
||||
unsigned long *p = ((unsigned long *) addr) + (offset >> 5);
|
||||
unsigned long result = offset & ~31UL;
|
||||
unsigned long tmp;
|
||||
|
||||
if (offset >= size)
|
||||
return size;
|
||||
size -= result;
|
||||
offset &= 31UL;
|
||||
if(offset) {
|
||||
/* We hold the little endian value in tmp, but then the
|
||||
* shift is illegal. So we could keep a big endian value
|
||||
* in tmp, like this:
|
||||
*
|
||||
* tmp = __swab32(*(p++));
|
||||
* tmp |= ~0UL >> (32-offset);
|
||||
*
|
||||
* but this would decrease preformance, so we change the
|
||||
* shift:
|
||||
*/
|
||||
tmp = *(p++);
|
||||
tmp |= __swab32(~0UL >> (32-offset));
|
||||
if(size < 32)
|
||||
goto found_first;
|
||||
if(~tmp)
|
||||
goto found_middle;
|
||||
size -= 32;
|
||||
result += 32;
|
||||
}
|
||||
while(size & ~31UL) {
|
||||
if(~(tmp = *(p++)))
|
||||
goto found_middle;
|
||||
result += 32;
|
||||
size -= 32;
|
||||
}
|
||||
if(!size)
|
||||
return result;
|
||||
tmp = *p;
|
||||
|
||||
found_first:
|
||||
/* tmp is little endian, so we would have to swab the shift,
|
||||
* see above. But then we have to swab tmp below for ffz, so
|
||||
* we might as well do this here.
|
||||
*/
|
||||
return result + ffz(__swab32(tmp) | (~0UL << size));
|
||||
found_middle:
|
||||
return result + ffz(__swab32(tmp));
|
||||
}
|
||||
|
||||
/* Bitmap functions for the minix filesystem. */
|
||||
#define minix_test_and_set_bit(nr,addr) test_and_set_bit(nr,addr)
|
||||
#define minix_set_bit(nr,addr) set_bit(nr,addr)
|
||||
#define minix_test_and_clear_bit(nr,addr) test_and_clear_bit(nr,addr)
|
||||
#define minix_test_bit(nr,addr) test_bit(nr,addr)
|
||||
#define minix_find_first_zero_bit(addr,size) find_first_zero_bit(addr,size)
|
||||
|
||||
/**
|
||||
* hweightN - returns the hamming weight of a N-bit word
|
||||
* @x: the word to weigh
|
||||
*
|
||||
* The Hamming Weight of a number is the total number of bits set in it.
|
||||
*/
|
||||
|
||||
#define hweight32(x) generic_hweight32(x)
|
||||
#define hweight16(x) generic_hweight16(x)
|
||||
#define hweight8(x) generic_hweight8(x)
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
#endif /* _MICROBLAZE_BITOPS_H */
|
53
include/asm-microblaze/byteorder.h
Normal file
53
include/asm-microblaze/byteorder.h
Normal file
|
@ -0,0 +1,53 @@
|
|||
/*
|
||||
* include/asm-microblaze/byteorder.h -- Endian id and conversion ops
|
||||
*
|
||||
* Copyright (C) 2003 John Williams <jwilliams@itee.uq.edu.au>
|
||||
* Copyright (C) 2001 NEC Corporation
|
||||
* Copyright (C) 2001 Miles Bader <miles@gnu.org>
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU General
|
||||
* Public License. See the file COPYING in the main directory of this
|
||||
* archive for more details.
|
||||
*
|
||||
* Written by Miles Bader <miles@gnu.org>
|
||||
* Microblaze port by John Williams
|
||||
*/
|
||||
|
||||
#ifndef __MICROBLAZE_BYTEORDER_H__
|
||||
#define __MICROBLAZE_BYTEORDER_H__
|
||||
|
||||
#include <asm/types.h>
|
||||
|
||||
#ifdef __GNUC__
|
||||
|
||||
/* This is effectively a dupe of the arch-independent byteswap
|
||||
code in include/linux/byteorder/swab.h, however we force a cast
|
||||
of the result up to 32 bits. This in turn forces the compiler
|
||||
to explicitly clear the high 16 bits, which it wasn't doing otherwise.
|
||||
|
||||
I think this is a symptom of a bug in mb-gcc. JW 20040303
|
||||
*/
|
||||
static __inline__ __const__ __u16 ___arch__swab16 (__u16 half_word)
|
||||
{
|
||||
/* 32 bit temp to cast result, forcing clearing of high word */
|
||||
__u32 temp;
|
||||
|
||||
temp = ((half_word & 0x00FFU) << 8) | ((half_word & 0xFF00U) >> 8);
|
||||
|
||||
return (__u16) temp;
|
||||
}
|
||||
|
||||
#define __arch__swab16(x) ___arch__swab16(x)
|
||||
|
||||
/* Microblaze has no arch-specific endian conversion insns */
|
||||
|
||||
#if !defined(__STRICT_ANSI__) || defined(__KERNEL__)
|
||||
# define __BYTEORDER_HAS_U64__
|
||||
# define __SWAB_64_THRU_32__
|
||||
#endif
|
||||
|
||||
#endif /* __GNUC__ */
|
||||
|
||||
#include <linux/byteorder/big_endian.h>
|
||||
|
||||
#endif /* __MICROBLAZE_BYTEORDER_H__ */
|
58
include/asm-microblaze/global_data.h
Normal file
58
include/asm-microblaze/global_data.h
Normal file
|
@ -0,0 +1,58 @@
|
|||
/*
|
||||
* (C) Copyright 2004 Atmark Techno, Inc.
|
||||
*
|
||||
* Yasushi SHOJI <yashi@atmark-techno.com>
|
||||
*
|
||||
* See file CREDITS for list of people who contributed to this
|
||||
* project.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||
* MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#ifndef __ASM_GBL_DATA_H
|
||||
#define __ASM_GBL_DATA_H
|
||||
/*
|
||||
* The following data structure is placed in some memory wich is
|
||||
* available very early after boot (like DPRAM on MPC8xx/MPC82xx, or
|
||||
* some locked parts of the data cache) to allow for a minimum set of
|
||||
* global variables during system initialization (until we have set
|
||||
* up the memory controller so that we can use RAM).
|
||||
*
|
||||
* Keep it *SMALL* and remember to set CFG_GBL_DATA_SIZE > sizeof(gd_t)
|
||||
*/
|
||||
|
||||
typedef struct global_data {
|
||||
bd_t *bd;
|
||||
unsigned long flags;
|
||||
unsigned long baudrate;
|
||||
unsigned long have_console; /* serial_init() was called */
|
||||
unsigned long reloc_off; /* Relocation Offset */
|
||||
unsigned long env_addr; /* Address of Environment struct */
|
||||
unsigned long env_valid; /* Checksum of Environment valid? */
|
||||
unsigned long fb_base; /* base address of frame buffer */
|
||||
void **jt; /* jump table */
|
||||
} gd_t;
|
||||
|
||||
/*
|
||||
* Global Data Flags
|
||||
*/
|
||||
#define GD_FLG_RELOC 0x00001 /* Code was relocated to RAM */
|
||||
#define GD_FLG_DEVINIT 0x00002 /* Devices have been initialized */
|
||||
#define GD_FLG_SILENT 0x00004 /* Silent mode */
|
||||
|
||||
#define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("r31")
|
||||
|
||||
#endif /* __ASM_GBL_DATA_H */
|
128
include/asm-microblaze/io.h
Normal file
128
include/asm-microblaze/io.h
Normal file
|
@ -0,0 +1,128 @@
|
|||
/*
|
||||
* include/asm-microblaze/io.h -- Misc I/O operations
|
||||
*
|
||||
* Copyright (C) 2003 John Williams <jwilliams@itee.uq.edu.au>
|
||||
* Copyright (C) 2001,02 NEC Corporation
|
||||
* Copyright (C) 2001,02 Miles Bader <miles@gnu.org>
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU General
|
||||
* Public License. See the file COPYING in the main directory of this
|
||||
* archive for more details.
|
||||
*
|
||||
* Written by Miles Bader <miles@gnu.org>
|
||||
* Microblaze port by John Williams
|
||||
*/
|
||||
|
||||
#ifndef __MICROBLAZE_IO_H__
|
||||
#define __MICROBLAZE_IO_H__
|
||||
|
||||
#define IO_SPACE_LIMIT 0xFFFFFFFF
|
||||
|
||||
#define readb(addr) \
|
||||
({ unsigned char __v = (*(volatile unsigned char *) (addr)); __v; })
|
||||
#define readw(addr) \
|
||||
({ unsigned short __v = (*(volatile unsigned short *) (addr)); __v; })
|
||||
#define readl(addr) \
|
||||
({ unsigned long __v = (*(volatile unsigned long *) (addr)); __v; })
|
||||
|
||||
#define writeb(b, addr) \
|
||||
(void)((*(volatile unsigned char *) (addr)) = (b))
|
||||
#define writew(b, addr) \
|
||||
(void)((*(volatile unsigned short *) (addr)) = (b))
|
||||
#define writel(b, addr) \
|
||||
(void)((*(volatile unsigned int *) (addr)) = (b))
|
||||
|
||||
#define memset_io(a,b,c) memset((void *)(a),(b),(c))
|
||||
#define memcpy_fromio(a,b,c) memcpy((a),(void *)(b),(c))
|
||||
#define memcpy_toio(a,b,c) memcpy((void *)(a),(b),(c))
|
||||
|
||||
#define inb(addr) readb (addr)
|
||||
#define inw(addr) readw (addr)
|
||||
#define inl(addr) readl (addr)
|
||||
#define outb(x, addr) ((void) writeb (x, addr))
|
||||
#define outw(x, addr) ((void) writew (x, addr))
|
||||
#define outl(x, addr) ((void) writel (x, addr))
|
||||
|
||||
/* Some #definitions to keep strange Xilinx code happy */
|
||||
#define in_8(addr) readb (addr)
|
||||
#define in_be16(addr) readw (addr)
|
||||
#define in_be32(addr) readl (addr)
|
||||
|
||||
#define out_8(addr,x ) outb (x,addr)
|
||||
#define out_be16(addr,x ) outw (x,addr)
|
||||
#define out_be32(addr,x ) outl (x,addr)
|
||||
|
||||
|
||||
#define inb_p(port) inb((port))
|
||||
#define outb_p(val, port) outb((val), (port))
|
||||
#define inw_p(port) inw((port))
|
||||
#define outw_p(val, port) outw((val), (port))
|
||||
#define inl_p(port) inl((port))
|
||||
#define outl_p(val, port) outl((val), (port))
|
||||
|
||||
/* Some defines to keep the MTD flash drivers happy */
|
||||
|
||||
#define __raw_readb readb
|
||||
#define __raw_readw readw
|
||||
#define __raw_readl readl
|
||||
#define __raw_writeb writeb
|
||||
#define __raw_writew writew
|
||||
#define __raw_writel writel
|
||||
|
||||
static inline void io_insb (unsigned long port, void *dst, unsigned long count)
|
||||
{
|
||||
unsigned char *p = dst;
|
||||
while (count--)
|
||||
*p++ = inb (port);
|
||||
}
|
||||
static inline void io_insw (unsigned long port, void *dst, unsigned long count)
|
||||
{
|
||||
unsigned short *p = dst;
|
||||
while (count--)
|
||||
*p++ = inw (port);
|
||||
}
|
||||
static inline void io_insl (unsigned long port, void *dst, unsigned long count)
|
||||
{
|
||||
unsigned long *p = dst;
|
||||
while (count--)
|
||||
*p++ = inl (port);
|
||||
}
|
||||
|
||||
static inline void
|
||||
io_outsb (unsigned long port, const void *src, unsigned long count)
|
||||
{
|
||||
const unsigned char *p = src;
|
||||
while (count--)
|
||||
outb (*p++, port);
|
||||
}
|
||||
static inline void
|
||||
io_outsw (unsigned long port, const void *src, unsigned long count)
|
||||
{
|
||||
const unsigned short *p = src;
|
||||
while (count--)
|
||||
outw (*p++, port);
|
||||
}
|
||||
static inline void
|
||||
io_outsl (unsigned long port, const void *src, unsigned long count)
|
||||
{
|
||||
const unsigned long *p = src;
|
||||
while (count--)
|
||||
outl (*p++, port);
|
||||
}
|
||||
|
||||
#define outsb(a,b,l) io_outsb(a,b,l)
|
||||
#define outsw(a,b,l) io_outsw(a,b,l)
|
||||
#define outsl(a,b,l) io_outsl(a,b,l)
|
||||
|
||||
#define insb(a,b,l) io_insb(a,b,l)
|
||||
#define insw(a,b,l) io_insw(a,b,l)
|
||||
#define insl(a,b,l) io_insl(a,b,l)
|
||||
|
||||
|
||||
#define iounmap(addr) ((void)0)
|
||||
#define ioremap(physaddr, size) (physaddr)
|
||||
#define ioremap_nocache(physaddr, size) (physaddr)
|
||||
#define ioremap_writethrough(physaddr, size) (physaddr)
|
||||
#define ioremap_fullcache(physaddr, size) (physaddr)
|
||||
|
||||
#endif /* __MICROBLAZE_IO_H__ */
|
29
include/asm-microblaze/platform.h
Normal file
29
include/asm-microblaze/platform.h
Normal file
|
@ -0,0 +1,29 @@
|
|||
/*
|
||||
* (C) Copyright 2004 Atmark Techno, Inc.
|
||||
*
|
||||
* Yasushi SHOJI <yashi@atmark-techno.com>
|
||||
*
|
||||
* See file CREDITS for list of people who contributed to this
|
||||
* project.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||
* MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#ifdef CONFIG_SUZAKU
|
||||
#include <asm/suzaku.h>
|
||||
#endif
|
76
include/asm-microblaze/posix_types.h
Normal file
76
include/asm-microblaze/posix_types.h
Normal file
|
@ -0,0 +1,76 @@
|
|||
/*
|
||||
* include/asm-microblaze/posix_types.h -- Kernel versions of standard types
|
||||
*
|
||||
* Copyright (C) 2003 John Williams <jwilliams@itee.uq.edu.au>
|
||||
* Copyright (C) 2001,2002 NEC Corporation
|
||||
* Copyright (C) 2001,2002 Miles Bader <miles@gnu.org>
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU General
|
||||
* Public License. See the file COPYING in the main directory of this
|
||||
* archive for more details.
|
||||
*
|
||||
* Written by Miles Bader <miles@gnu.org>
|
||||
* Microblaze port by John Williams
|
||||
*/
|
||||
|
||||
#ifndef __MICROBLAZE_POSIX_TYPES_H__
|
||||
#define __MICROBLAZE_POSIX_TYPES_H__
|
||||
|
||||
#include <asm/bitops.h>
|
||||
|
||||
|
||||
typedef unsigned int __kernel_dev_t;
|
||||
typedef unsigned long __kernel_ino_t;
|
||||
typedef unsigned long long __kernel_ino64_t;
|
||||
typedef unsigned int __kernel_mode_t;
|
||||
typedef unsigned int __kernel_nlink_t;
|
||||
typedef long __kernel_off_t;
|
||||
typedef long long __kernel_loff_t;
|
||||
typedef int __kernel_pid_t;
|
||||
typedef unsigned short __kernel_ipc_pid_t;
|
||||
typedef unsigned int __kernel_uid_t;
|
||||
typedef unsigned int __kernel_gid_t;
|
||||
typedef unsigned int __kernel_size_t;
|
||||
typedef int __kernel_ssize_t;
|
||||
typedef int __kernel_ptrdiff_t;
|
||||
typedef long __kernel_time_t;
|
||||
typedef long __kernel_suseconds_t;
|
||||
typedef long __kernel_clock_t;
|
||||
typedef int __kernel_daddr_t;
|
||||
typedef char * __kernel_caddr_t;
|
||||
typedef unsigned short __kernel_uid16_t;
|
||||
typedef unsigned short __kernel_gid16_t;
|
||||
typedef unsigned int __kernel_uid32_t;
|
||||
typedef unsigned int __kernel_gid32_t;
|
||||
|
||||
typedef unsigned short __kernel_old_uid_t;
|
||||
typedef unsigned short __kernel_old_gid_t;
|
||||
|
||||
|
||||
typedef struct {
|
||||
#if defined(__KERNEL__) || defined(__USE_ALL)
|
||||
int val[2];
|
||||
#else /* !defined(__KERNEL__) && !defined(__USE_ALL) */
|
||||
int __val[2];
|
||||
#endif /* !defined(__KERNEL__) && !defined(__USE_ALL) */
|
||||
} __kernel_fsid_t;
|
||||
|
||||
|
||||
#if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2)
|
||||
|
||||
#undef __FD_SET
|
||||
#define __FD_SET(fd, fd_set) \
|
||||
__set_bit (fd, (void *)&((__kernel_fd_set *)fd_set)->fds_bits)
|
||||
#undef __FD_CLR
|
||||
#define __FD_CLR(fd, fd_set) \
|
||||
__clear_bit (fd, (void *)&((__kernel_fd_set *)fd_set)->fds_bits)
|
||||
#undef __FD_ISSET
|
||||
#define __FD_ISSET(fd, fd_set) \
|
||||
__test_bit (fd, (void *)&((__kernel_fd_set *)fd_set)->fds_bits)
|
||||
#undef __FD_ZERO
|
||||
#define __FD_ZERO(fd_set) \
|
||||
memset (fd_set, 0, sizeof (*(fd_set *)fd_set))
|
||||
|
||||
#endif /* defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2) */
|
||||
|
||||
#endif /* __MICROBLAZE_POSIX_TYPES_H__ */
|
116
include/asm-microblaze/ptrace.h
Normal file
116
include/asm-microblaze/ptrace.h
Normal file
|
@ -0,0 +1,116 @@
|
|||
/*
|
||||
* include/asm-microblaze/ptrace.h -- Access to CPU registers
|
||||
*
|
||||
* Copyright (C) 2003 John Williams <jwilliams@itee.uq.edu.au>
|
||||
* Copyright (C) 2001,2002 NEC Corporation
|
||||
* Copyright (C) 2001,2002 Miles Bader <miles@gnu.org>
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU General
|
||||
* Public License. See the file COPYING in the main directory of this
|
||||
* archive for more details.
|
||||
*
|
||||
* Written by Miles Bader <miles@gnu.org>
|
||||
* Microblaze port by John Williams
|
||||
*/
|
||||
|
||||
#ifndef __MICROBLAZE_PTRACE_H__
|
||||
#define __MICROBLAZE_PTRACE_H__
|
||||
|
||||
|
||||
/* Microblaze general purpose registers with special meanings. */
|
||||
#define GPR_ZERO 0 /* constant zero */
|
||||
#define GPR_ASM 18 /* reserved for assembler */
|
||||
#define GPR_SP 1 /* stack pointer */
|
||||
#define GPR_GP 2 /* global data pointer */
|
||||
#define GPR_EP 30 /* `element pointer' */
|
||||
#define GPR_LP 15 /* link pointer (current return address) */
|
||||
|
||||
/* These aren't official names, but they make some code more descriptive. */
|
||||
#define GPR_ARG0 5
|
||||
#define GPR_ARG1 6
|
||||
#define GPR_ARG2 7
|
||||
#define GPR_ARG3 8
|
||||
#define GPR_ARG4 9
|
||||
#define GPR_ARG5 10
|
||||
#define GPR_RVAL0 3
|
||||
#define GPR_RVAL1 4
|
||||
#define GPR_RVAL GPR_RVAL0
|
||||
|
||||
#define NUM_GPRS 32
|
||||
|
||||
/* `system' registers. */
|
||||
/* Note these are old v850 values, microblaze has many fewer */
|
||||
#define SR_EIPC 0
|
||||
#define SR_EIPSW 1
|
||||
#define SR_FEPC 2
|
||||
#define SR_FEPSW 3
|
||||
#define SR_ECR 4
|
||||
#define SR_PSW 5
|
||||
#define SR_CTPC 16
|
||||
#define SR_CTPSW 17
|
||||
#define SR_DBPC 18
|
||||
#define SR_DBPSW 19
|
||||
#define SR_CTBP 20
|
||||
#define SR_DIR 21
|
||||
#define SR_ASID 23
|
||||
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
typedef unsigned long microblaze_reg_t;
|
||||
|
||||
/* How processor state is stored on the stack during a syscall/signal.
|
||||
If you change this structure, change the associated assembly-language
|
||||
macros below too (PT_*)! */
|
||||
struct pt_regs
|
||||
{
|
||||
/* General purpose registers. */
|
||||
microblaze_reg_t gpr[NUM_GPRS];
|
||||
|
||||
microblaze_reg_t pc; /* program counter */
|
||||
microblaze_reg_t psw; /* program status word */
|
||||
|
||||
microblaze_reg_t kernel_mode; /* 1 if in `kernel mode', 0 if user mode */
|
||||
microblaze_reg_t single_step; /* 1 if in single step mode */
|
||||
};
|
||||
|
||||
|
||||
#define instruction_pointer(regs) ((regs)->pc)
|
||||
#define user_mode(regs) (!(regs)->kernel_mode)
|
||||
|
||||
/* When a struct pt_regs is used to save user state for a system call in
|
||||
the kernel, the system call is stored in the space for R0 (since it's
|
||||
never used otherwise, R0 being a constant 0). Non-system-calls
|
||||
simply store 0 there. */
|
||||
#define PT_REGS_SYSCALL(regs) (regs)->gpr[0]
|
||||
#define PT_REGS_SET_SYSCALL(regs, val) ((regs)->gpr[0] = (val))
|
||||
|
||||
#endif /* !__ASSEMBLY__ */
|
||||
|
||||
|
||||
/* The number of bytes used to store each register. */
|
||||
#define _PT_REG_SIZE 4
|
||||
|
||||
/* Offset of a general purpose register in a stuct pt_regs. */
|
||||
#define PT_GPR(num) ((num) * _PT_REG_SIZE)
|
||||
|
||||
/* Offsets of various special registers & fields in a struct pt_regs. */
|
||||
#define NUM_SPECIAL 4
|
||||
#define PT_PC ((NUM_GPRS + 0) * _PT_REG_SIZE)
|
||||
#define PT_PSW ((NUM_GPRS + 1) * _PT_REG_SIZE)
|
||||
#define PT_KERNEL_MODE ((NUM_GPRS + 2) * _PT_REG_SIZE)
|
||||
#define PT_SINGLESTEP ((NUM_GPRS + 3) * _PT_REG_SIZE)
|
||||
|
||||
#define PT_SYSCALL PT_GPR(0)
|
||||
|
||||
/* Size of struct pt_regs, including alignment. */
|
||||
#define PT_SIZE ((NUM_GPRS + NUM_SPECIAL) * _PT_REG_SIZE)
|
||||
|
||||
/* These are `magic' values for PTRACE_PEEKUSR that return info about where
|
||||
a process is located in memory. */
|
||||
#define PT_TEXT_ADDR (PT_SIZE + 1)
|
||||
#define PT_TEXT_LEN (PT_SIZE + 2)
|
||||
#define PT_DATA_ADDR (PT_SIZE + 3)
|
||||
#define PT_DATA_LEN (PT_SIZE + 4)
|
||||
|
||||
#endif /* __MICROBLAZE_PTRACE_H__ */
|
25
include/asm-microblaze/serial_xuartlite.h
Normal file
25
include/asm-microblaze/serial_xuartlite.h
Normal file
|
@ -0,0 +1,25 @@
|
|||
/*
|
||||
* (C) Copyright 2004 Atmark Techno, Inc.
|
||||
*
|
||||
* Yasushi SHOJI <yashi@atmark-techno.com>
|
||||
*
|
||||
* See file CREDITS for list of people who contributed to this
|
||||
* project.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||
* MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include <asm/arch/xuartlite_l.h>
|
31
include/asm-microblaze/string.h
Normal file
31
include/asm-microblaze/string.h
Normal file
|
@ -0,0 +1,31 @@
|
|||
/*
|
||||
* include/asm-microblaze/string.h -- Architecture specific string routines
|
||||
*
|
||||
* Copyright (C) 2003 John Williams <jwilliams@itee.uq.edu.au>
|
||||
* Copyright (C) 2001,2002 NEC Corporation
|
||||
* Copyright (C) 2001,2002 Miles Bader <miles@gnu.org>
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU General
|
||||
* Public License. See the file COPYING in the main directory of this
|
||||
* archive for more details.
|
||||
*
|
||||
* Written by Miles Bader <miles@gnu.org>
|
||||
* Microblaze port by John Williams
|
||||
*/
|
||||
|
||||
#ifndef __MICROBLAZE_STRING_H__
|
||||
#define __MICROBLAZE_STRING_H__
|
||||
|
||||
#if 0
|
||||
#define __HAVE_ARCH_BCOPY
|
||||
#define __HAVE_ARCH_MEMCPY
|
||||
#define __HAVE_ARCH_MEMSET
|
||||
#define __HAVE_ARCH_MEMMOVE
|
||||
|
||||
extern void *memcpy (void *, const void *, __kernel_size_t);
|
||||
extern void bcopy (const char *, char *, int);
|
||||
extern void *memset (void *, int, __kernel_size_t);
|
||||
extern void *memmove (void *, const void *, __kernel_size_t);
|
||||
#endif
|
||||
|
||||
#endif /* __MICROBLAZE_STRING_H__ */
|
25
include/asm-microblaze/suzaku.h
Normal file
25
include/asm-microblaze/suzaku.h
Normal file
|
@ -0,0 +1,25 @@
|
|||
/*
|
||||
* (C) Copyright 2004 Atmark Techno, Inc.
|
||||
*
|
||||
* Yasushi SHOJI <yashi@atmark-techno.com>
|
||||
*
|
||||
* See file CREDITS for list of people who contributed to this
|
||||
* project.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||
* MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
/* EMPTY FILE */
|
161
include/asm-microblaze/system.h
Normal file
161
include/asm-microblaze/system.h
Normal file
|
@ -0,0 +1,161 @@
|
|||
/*
|
||||
* include/asm-microblaze/system.h -- Low-level interrupt/thread ops
|
||||
*
|
||||
* Copyright (C) 2003 John Williams (jwilliams@itee.uq.edu.au)
|
||||
* based upon microblaze version
|
||||
* Copyright (C) 2001 NEC Corporation
|
||||
* Copyright (C) 2001 Miles Bader <miles@gnu.org>
|
||||
*
|
||||
* This file is subject to the terms and conditions of the GNU General
|
||||
* Public License. See the file COPYING in the main directory of this
|
||||
* archive for more details.
|
||||
*
|
||||
* Written by Miles Bader <miles@gnu.org>
|
||||
* Microblaze port by John Williams
|
||||
* Microblaze port by John Williams
|
||||
*/
|
||||
|
||||
#ifndef __MICROBLAZE_SYSTEM_H__
|
||||
#define __MICROBLAZE_SYSTEM_H__
|
||||
|
||||
#if 0
|
||||
#include <linux/linkage.h>
|
||||
#endif
|
||||
#include <asm/ptrace.h>
|
||||
|
||||
#define prepare_to_switch() do { } while (0)
|
||||
|
||||
/*
|
||||
* switch_to(n) should switch tasks to task ptr, first checking that
|
||||
* ptr isn't the current task, in which case it does nothing.
|
||||
*/
|
||||
struct thread_struct;
|
||||
extern void *switch_thread (struct thread_struct *last,
|
||||
struct thread_struct *next);
|
||||
#define switch_to(prev,next,last) do { \
|
||||
if (prev != next) { \
|
||||
(last) = switch_thread (&prev->thread, &next->thread); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
|
||||
/* Enable/disable interrupts. */
|
||||
#define __sti() \
|
||||
{ \
|
||||
register unsigned tmp; \
|
||||
__asm__ __volatile__ (" \
|
||||
mfs %0, rmsr; \
|
||||
ori %0, %0, 2; \
|
||||
mts rmsr, %0" \
|
||||
: "=r" (tmp) \
|
||||
: \
|
||||
: "memory"); \
|
||||
}
|
||||
|
||||
#define __cli() \
|
||||
{ \
|
||||
register unsigned tmp; \
|
||||
__asm__ __volatile__ (" \
|
||||
mfs %0, rmsr; \
|
||||
andi %0, %0, ~2; \
|
||||
mts rmsr, %0" \
|
||||
: "=r" (tmp) \
|
||||
: \
|
||||
: "memory"); \
|
||||
}
|
||||
|
||||
#define __save_flags(flags) \
|
||||
__asm__ __volatile__ ("mfs %0, rmsr" : "=r" (flags))
|
||||
#define __restore_flags(flags) \
|
||||
__asm__ __volatile__ ("mts rmsr, %0" :: "r" (flags))
|
||||
|
||||
#define __save_flags_cli(flags) \
|
||||
{ \
|
||||
register unsigned tmp; \
|
||||
__asm__ __volatile__ (" \
|
||||
mfs %0, rmsr; \
|
||||
andi %1, %0, ~2; \
|
||||
mts rmsr, %1;" \
|
||||
: "=r" (flags), "=r" (tmp) \
|
||||
: \
|
||||
: "memory"); \
|
||||
}
|
||||
|
||||
#define __save_flags_sti(flags) \
|
||||
{ \
|
||||
register unsigned tmp; \
|
||||
__asm__ __volatile__ (" \
|
||||
mfs %0, rmsr; \
|
||||
ori %1, %0, 2; \
|
||||
mts rmsr, %1;" \
|
||||
: "=r" (flags) ,"=r" (tmp) \
|
||||
: \
|
||||
: "memory"); \
|
||||
}
|
||||
|
||||
/* For spinlocks etc */
|
||||
#define local_irq_save(flags) __save_flags_cli (flags)
|
||||
#define local_irq_set(flags) __save_flags_sti (flags)
|
||||
#define local_irq_restore(flags) __restore_flags (flags)
|
||||
#define local_irq_disable() __cli ()
|
||||
#define local_irq_enable() __sti ()
|
||||
|
||||
#define cli() __cli ()
|
||||
#define sti() __sti ()
|
||||
#define save_flags(flags) __save_flags (flags)
|
||||
#define restore_flags(flags) __restore_flags (flags)
|
||||
#define save_flags_cli(flags) __save_flags_cli (flags)
|
||||
|
||||
/*
|
||||
* Force strict CPU ordering.
|
||||
* Not really required on microblaze...
|
||||
*/
|
||||
#define nop() __asm__ __volatile__ ("nop")
|
||||
#define mb() __asm__ __volatile__ ("nop" ::: "memory")
|
||||
#define rmb() mb ()
|
||||
#define wmb() mb ()
|
||||
#define set_mb(var, value) do { var = value; mb(); } while (0)
|
||||
#define set_wmb(var, value) do { var = value; wmb (); } while (0)
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
#define smp_mb() mb ()
|
||||
#define smp_rmb() rmb ()
|
||||
#define smp_wmb() wmb ()
|
||||
#else
|
||||
#define smp_mb() barrier ()
|
||||
#define smp_rmb() barrier ()
|
||||
#define smp_wmb() barrier ()
|
||||
#endif
|
||||
|
||||
#define xchg(ptr, with) \
|
||||
((__typeof__ (*(ptr)))__xchg ((unsigned long)(with), (ptr), sizeof (*(ptr))))
|
||||
#define tas(ptr) (xchg ((ptr), 1))
|
||||
|
||||
extern inline unsigned long __xchg (unsigned long with,
|
||||
__volatile__ void *ptr, int size)
|
||||
{
|
||||
unsigned long tmp, flags;
|
||||
|
||||
save_flags_cli (flags);
|
||||
|
||||
switch (size) {
|
||||
case 1:
|
||||
tmp = *(unsigned char *)ptr;
|
||||
*(unsigned char *)ptr = with;
|
||||
break;
|
||||
case 2:
|
||||
tmp = *(unsigned short *)ptr;
|
||||
*(unsigned short *)ptr = with;
|
||||
break;
|
||||
case 4:
|
||||
tmp = *(unsigned long *)ptr;
|
||||
*(unsigned long *)ptr = with;
|
||||
break;
|
||||
}
|
||||
|
||||
restore_flags (flags);
|
||||
|
||||
return tmp;
|
||||
}
|
||||
|
||||
#endif /* __MICROBLAZE_SYSTEM_H__ */
|
57
include/asm-microblaze/types.h
Normal file
57
include/asm-microblaze/types.h
Normal file
|
@ -0,0 +1,57 @@
|
|||
#ifndef _ASM_TYPES_H
|
||||
#define _ASM_TYPES_H
|
||||
|
||||
/*
|
||||
* This file is never included by application software unless
|
||||
* explicitly requested (e.g., via linux/types.h) in which case the
|
||||
* application is Linux specific so (user-) name space pollution is
|
||||
* not a major issue. However, for interoperability, libraries still
|
||||
* need to be careful to avoid a name clashes.
|
||||
*/
|
||||
|
||||
typedef unsigned short umode_t;
|
||||
|
||||
/*
|
||||
* __xx is ok: it doesn't pollute the POSIX namespace. Use these in the
|
||||
* header files exported to user space
|
||||
*/
|
||||
|
||||
typedef __signed__ char __s8;
|
||||
typedef unsigned char __u8;
|
||||
|
||||
typedef __signed__ short __s16;
|
||||
typedef unsigned short __u16;
|
||||
|
||||
typedef __signed__ int __s32;
|
||||
typedef unsigned int __u32;
|
||||
|
||||
#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
|
||||
typedef __signed__ long long __s64;
|
||||
typedef unsigned long long __u64;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* These aren't exported outside the kernel to avoid name space clashes
|
||||
*/
|
||||
#ifdef __KERNEL__
|
||||
|
||||
typedef signed char s8;
|
||||
typedef unsigned char u8;
|
||||
|
||||
typedef signed short s16;
|
||||
typedef unsigned short u16;
|
||||
|
||||
typedef signed int s32;
|
||||
typedef unsigned int u32;
|
||||
|
||||
typedef signed long long s64;
|
||||
typedef unsigned long long u64;
|
||||
|
||||
#define BITS_PER_LONG 32
|
||||
|
||||
/* Dma addresses are 32-bits wide. */
|
||||
|
||||
typedef u32 dma_addr_t;
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
#endif /* _ASM_TYPES_H */
|
42
include/asm-microblaze/u-boot.h
Normal file
42
include/asm-microblaze/u-boot.h
Normal file
|
@ -0,0 +1,42 @@
|
|||
/*
|
||||
* (C) Copyright 2004 Atmark Techno, Inc.
|
||||
*
|
||||
* Yasushi SHOJI <yashi@atmark-techno.com>
|
||||
*
|
||||
* See file CREDITS for list of people who contributed to this
|
||||
* project.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||
* MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#ifndef _U_BOOT_H_
|
||||
#define _U_BOOT_H_
|
||||
|
||||
typedef struct bd_info {
|
||||
unsigned long bi_memstart; /* start of DRAM memory */
|
||||
unsigned long bi_memsize; /* size of DRAM memory in bytes */
|
||||
unsigned long bi_flashstart; /* start of FLASH memory */
|
||||
unsigned long bi_flashsize; /* size of FLASH memory */
|
||||
unsigned long bi_flashoffset; /* reserved area for startup monitor */
|
||||
unsigned long bi_sramstart; /* start of SRAM memory */
|
||||
unsigned long bi_sramsize; /* size of SRAM memory */
|
||||
unsigned long bi_ip_addr; /* IP Address */
|
||||
unsigned char bi_enetaddr[6]; /* Ethernet adress */
|
||||
unsigned long bi_baudrate; /* Console Baudrate */
|
||||
} bd_t;
|
||||
|
||||
|
||||
#endif /* _U_BOOT_H_ */
|
90
include/configs/suzaku.h
Normal file
90
include/configs/suzaku.h
Normal file
|
@ -0,0 +1,90 @@
|
|||
/*
|
||||
* (C) Copyright 2004 Atmark Techno, Inc.
|
||||
*
|
||||
* Yasushi SHOJI <yashi@atmark-techno.com>
|
||||
*
|
||||
* See file CREDITS for list of people who contributed to this
|
||||
* project.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||
* MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#ifndef __CONFIG_H
|
||||
#define __CONFIG_H
|
||||
|
||||
/*
|
||||
* If we are developing, we might want to start armboot from ram
|
||||
* so we MUST NOT initialize critical regs like mem-timing ...
|
||||
*/
|
||||
#define CONFIG_INIT_CRITICAL /* undef for developing */
|
||||
|
||||
/*
|
||||
* High Level Configuration Options
|
||||
* (easy to change)
|
||||
*/
|
||||
|
||||
#define CONFIG_MICROBLZE 1 /* This is an MicroBlaze CPU */
|
||||
#define CONFIG_SUZAKU 1 /* on an SUZAKU Board */
|
||||
|
||||
/*-----------------------------------------------------------------------
|
||||
* Start addresses for the final memory configuration
|
||||
* (Set up by the startup code)
|
||||
* Please note that CFG_SDRAM_BASE _must_ start at 0
|
||||
*/
|
||||
#define CFG_SDRAM_BASE 0x80000000
|
||||
#define CFG_SDRAM_SIZE 0x01000000
|
||||
#define CFG_FLASH_BASE 0xfff00000
|
||||
#define CFG_RESET_ADDRESS 0xfff00100
|
||||
#define CFG_MONITOR_LEN (256 << 10) /* Reserve 256 kB for Monitor */
|
||||
#define CFG_MONITOR_BASE (CFG_SDRAM_BASE + CFG_SDRAM_SIZE - (1024 * 1024))
|
||||
#define CFG_MALLOC_LEN (256 << 10) /* Reserve 256 kB for malloc */
|
||||
|
||||
#define CONFIG_BAUDRATE 115200
|
||||
#define CFG_BAUDRATE_TABLE { 115200 }
|
||||
|
||||
#define CONFIG_COMMANDS (CONFIG__CMD_DFL)
|
||||
|
||||
/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
|
||||
#include <cmd_confdefs.h>
|
||||
|
||||
#define CFG_UART1_BASE (0xFFFF2000)
|
||||
#define CONFIG_SERIAL_BASE CFG_UART1_BASE
|
||||
|
||||
/*
|
||||
* Miscellaneous configurable options
|
||||
*/
|
||||
#define CFG_LONGHELP /* undef to save memory */
|
||||
#define CFG_PROMPT "SUZAKU> " /* Monitor Command Prompt */
|
||||
#define CFG_CBSIZE 256
|
||||
#define CFG_PBSIZE (CFG_CBSIZE+sizeof(CFG_PROMPT)+16) /* Print Buffer Size */
|
||||
#define CFG_MAXARGS 16 /* max number of command args */
|
||||
|
||||
#define CFG_LOAD_ADDR CFG_SDRAM_BASE /* default load address */
|
||||
|
||||
/*-----------------------------------------------------------------------
|
||||
* FLASH organization
|
||||
*/
|
||||
#define CFG_MAX_FLASH_BANKS 1 /* max number of memory banks */
|
||||
#define CFG_MAX_FLASH_SECT 1 /* max number of sectors on one chip */
|
||||
|
||||
/*-----------------------------------------------------------------------
|
||||
* NVRAM organization
|
||||
*/
|
||||
#define CFG_ENV_IS_NOWHERE 1
|
||||
#define CFG_ENV_SIZE 0x10000 /* Total Size of Environment Sector */
|
||||
#define CFG_ENV_SECT_SIZE 0x10000 /* see README - env sector total size */
|
||||
|
||||
#endif /* __CONFIG_H */
|
|
@ -64,8 +64,9 @@
|
|||
#define IH_CPU_SH 9 /* SuperH */
|
||||
#define IH_CPU_SPARC 10 /* Sparc */
|
||||
#define IH_CPU_SPARC64 11 /* Sparc 64 Bit */
|
||||
#define IH_CPU_M68K 12 /* M68K */
|
||||
#define IH_CPU_NIOS 13 /* Nios-32 */
|
||||
#define IH_CPU_M68K 12 /* M68K */
|
||||
#define IH_CPU_NIOS 13 /* Nios-32 */
|
||||
#define IH_CPU_MICROBLAZE 14 /* MicroBlaze */
|
||||
|
||||
/*
|
||||
* Image Types
|
||||
|
|
44
lib_microblaze/Makefile
Normal file
44
lib_microblaze/Makefile
Normal file
|
@ -0,0 +1,44 @@
|
|||
#
|
||||
# (C) Copyright 2003-2004
|
||||
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
|
||||
#
|
||||
# See file CREDITS for list of people who contributed to this
|
||||
# project.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as
|
||||
# published by the Free Software Foundation; either version 2 of
|
||||
# the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||
# MA 02111-1307 USA
|
||||
#
|
||||
|
||||
include $(TOPDIR)/config.mk
|
||||
|
||||
LIB = lib$(ARCH).a
|
||||
|
||||
AOBJS =
|
||||
|
||||
COBJS = board.o microblaze_linux.o time.o
|
||||
|
||||
OBJS = $(AOBJS) $(COBJS)
|
||||
|
||||
$(LIB): .depend $(OBJS)
|
||||
$(AR) crv $@ $(OBJS)
|
||||
|
||||
#########################################################################
|
||||
|
||||
.depend: Makefile $(AOBJS:.o=.S) $(COBJS:.o=.c)
|
||||
$(CC) -M $(CFLAGS) $(AOBJS:.o=.S) $(COBJS:.o=.c) > $@
|
||||
|
||||
sinclude .depend
|
||||
|
||||
#########################################################################
|
76
lib_microblaze/board.c
Normal file
76
lib_microblaze/board.c
Normal file
|
@ -0,0 +1,76 @@
|
|||
/*
|
||||
* (C) Copyright 2004 Atmark Techno, Inc.
|
||||
*
|
||||
* Yasushi SHOJI <yashi@atmark-techno.com>
|
||||
*
|
||||
* See file CREDITS for list of people who contributed to this
|
||||
* project.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||
* MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <command.h>
|
||||
#include <malloc.h>
|
||||
#include <version.h>
|
||||
|
||||
const char version_string[] =
|
||||
U_BOOT_VERSION" (" __DATE__ " - " __TIME__ ")";
|
||||
|
||||
/*
|
||||
* Begin and End of memory area for malloc(), and current "brk"
|
||||
*/
|
||||
static ulong mem_malloc_start;
|
||||
static ulong mem_malloc_end;
|
||||
static ulong mem_malloc_brk;
|
||||
|
||||
|
||||
void *sbrk (ptrdiff_t increment)
|
||||
{
|
||||
ulong old = mem_malloc_brk;
|
||||
ulong new = old + increment;
|
||||
|
||||
if ((new < mem_malloc_start) || (new > mem_malloc_end)) {
|
||||
return (NULL);
|
||||
}
|
||||
mem_malloc_brk = new;
|
||||
return ((void *) old);
|
||||
}
|
||||
|
||||
/*
|
||||
* All attempts to come up with a "common" initialization sequence
|
||||
* that works for all boards and architectures failed: some of the
|
||||
* requirements are just _too_ different. To get rid of the resulting
|
||||
* mess of board dependend #ifdef'ed code we now make the whole
|
||||
* initialization sequence configurable to the user.
|
||||
*
|
||||
* The requirements for any new initalization function is simple: it
|
||||
* receives a pointer to the "global data" structure as it's only
|
||||
* argument, and returns an integer return code, where 0 means
|
||||
* "continue" and != 0 means "fatal error, hang the system".
|
||||
*/
|
||||
typedef int (init_fnc_t) (void);
|
||||
|
||||
init_fnc_t *init_sequence[] = {
|
||||
serial_init, /* serial communications setup */
|
||||
NULL,
|
||||
};
|
||||
|
||||
void hang (void)
|
||||
{
|
||||
puts ("### ERROR ### Please RESET the board ###\n");
|
||||
for (;;);
|
||||
}
|
31
lib_microblaze/microblaze_linux.c
Normal file
31
lib_microblaze/microblaze_linux.c
Normal file
|
@ -0,0 +1,31 @@
|
|||
/*
|
||||
* (C) Copyright 2004 Atmark Techno, Inc.
|
||||
*
|
||||
* Yasushi SHOJI <yashi@atmark-techno.com>
|
||||
*
|
||||
* See file CREDITS for list of people who contributed to this
|
||||
* project.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||
* MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <command.h>
|
||||
|
||||
void do_bootm_linux(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
|
||||
ulong addr, ulong *len_ptr, int verify)
|
||||
{
|
||||
}
|
27
lib_microblaze/time.c
Normal file
27
lib_microblaze/time.c
Normal file
|
@ -0,0 +1,27 @@
|
|||
/*
|
||||
* (C) Copyright 2004 Atmark Techno, Inc.
|
||||
*
|
||||
* Yasushi SHOJI <yashi@atmark-techno.com>
|
||||
*
|
||||
* See file CREDITS for list of people who contributed to this
|
||||
* project.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of
|
||||
* the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||
* MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
void udelay(unsigned long usec)
|
||||
{
|
||||
}
|
35
microblaze_config.mk
Normal file
35
microblaze_config.mk
Normal file
|
@ -0,0 +1,35 @@
|
|||
#
|
||||
# (C) Copyright 2004 Atmark Techno, Inc.
|
||||
#
|
||||
# Yasushi SHOJI <yashi@atmark-techno.com>
|
||||
#
|
||||
# See file CREDITS for list of people who contributed to this
|
||||
# project.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License as
|
||||
# published by the Free Software Foundation; either version 2 of
|
||||
# the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||
# MA 02111-1307 USA
|
||||
#
|
||||
|
||||
ifdef CONFIG_MICROBLAZE_HARD_MULT
|
||||
PLATFORM_CPPFLAGS += -mno-xl-soft-mul
|
||||
endif
|
||||
|
||||
ifdef CONFIG_MICROBLAZE_HARD_DIV
|
||||
PLATFORM_CPPFLAGS += -mno-xl-soft-div
|
||||
endif
|
||||
|
||||
ifdef CONFIG_MICROBLAZE_HARD_BARREL
|
||||
PLATFORM_CPPFLAGS += -mxl-barrel-shift
|
||||
endif
|
Loading…
Reference in a new issue