summaryrefslogtreecommitdiffstats
path: root/qemu/roms/u-boot/arch/microblaze
diff options
context:
space:
mode:
authorRajithaY <rajithax.yerrumsetty@intel.com>2017-04-25 03:31:15 -0700
committerRajitha Yerrumchetty <rajithax.yerrumsetty@intel.com>2017-05-22 06:48:08 +0000
commitbb756eebdac6fd24e8919e2c43f7d2c8c4091f59 (patch)
treeca11e03542edf2d8f631efeca5e1626d211107e3 /qemu/roms/u-boot/arch/microblaze
parenta14b48d18a9ed03ec191cf16b162206998a895ce (diff)
Adding qemu as a submodule of KVMFORNFV
This Patch includes the changes to add qemu as a submodule to kvmfornfv repo and make use of the updated latest qemu for the execution of all testcase Change-Id: I1280af507a857675c7f81d30c95255635667bdd7 Signed-off-by:RajithaY<rajithax.yerrumsetty@intel.com>
Diffstat (limited to 'qemu/roms/u-boot/arch/microblaze')
-rw-r--r--qemu/roms/u-boot/arch/microblaze/config.mk17
-rw-r--r--qemu/roms/u-boot/arch/microblaze/cpu/Makefile11
-rw-r--r--qemu/roms/u-boot/arch/microblaze/cpu/cache.c69
-rw-r--r--qemu/roms/u-boot/arch/microblaze/cpu/cpu.c9
-rw-r--r--qemu/roms/u-boot/arch/microblaze/cpu/exception.c61
-rw-r--r--qemu/roms/u-boot/arch/microblaze/cpu/interrupts.c202
-rw-r--r--qemu/roms/u-boot/arch/microblaze/cpu/irq.S81
-rw-r--r--qemu/roms/u-boot/arch/microblaze/cpu/spl.c55
-rw-r--r--qemu/roms/u-boot/arch/microblaze/cpu/start.S188
-rw-r--r--qemu/roms/u-boot/arch/microblaze/cpu/timer.c92
-rw-r--r--qemu/roms/u-boot/arch/microblaze/cpu/u-boot-spl.lds57
-rw-r--r--qemu/roms/u-boot/arch/microblaze/cpu/u-boot.lds55
-rw-r--r--qemu/roms/u-boot/arch/microblaze/dts/.gitignore1
-rw-r--r--qemu/roms/u-boot/arch/microblaze/dts/Makefile11
-rw-r--r--qemu/roms/u-boot/arch/microblaze/dts/microblaze-generic.dts7
-rw-r--r--qemu/roms/u-boot/arch/microblaze/include/asm/asm.h82
-rw-r--r--qemu/roms/u-boot/arch/microblaze/include/asm/bitops.h392
-rw-r--r--qemu/roms/u-boot/arch/microblaze/include/asm/byteorder.h36
-rw-r--r--qemu/roms/u-boot/arch/microblaze/include/asm/cache.h22
-rw-r--r--qemu/roms/u-boot/arch/microblaze/include/asm/config.h10
-rw-r--r--qemu/roms/u-boot/arch/microblaze/include/asm/errno.h1
-rw-r--r--qemu/roms/u-boot/arch/microblaze/include/asm/global_data.h20
-rw-r--r--qemu/roms/u-boot/arch/microblaze/include/asm/gpio.h14
-rw-r--r--qemu/roms/u-boot/arch/microblaze/include/asm/io.h163
-rw-r--r--qemu/roms/u-boot/arch/microblaze/include/asm/microblaze_intc.h38
-rw-r--r--qemu/roms/u-boot/arch/microblaze/include/asm/microblaze_timer.h27
-rw-r--r--qemu/roms/u-boot/arch/microblaze/include/asm/posix_types.h73
-rw-r--r--qemu/roms/u-boot/arch/microblaze/include/asm/processor.h21
-rw-r--r--qemu/roms/u-boot/arch/microblaze/include/asm/ptrace.h116
-rw-r--r--qemu/roms/u-boot/arch/microblaze/include/asm/sections.h11
-rw-r--r--qemu/roms/u-boot/arch/microblaze/include/asm/spl.h16
-rw-r--r--qemu/roms/u-boot/arch/microblaze/include/asm/string.h31
-rw-r--r--qemu/roms/u-boot/arch/microblaze/include/asm/system.h161
-rw-r--r--qemu/roms/u-boot/arch/microblaze/include/asm/types.h60
-rw-r--r--qemu/roms/u-boot/arch/microblaze/include/asm/u-boot.h33
-rw-r--r--qemu/roms/u-boot/arch/microblaze/include/asm/unaligned.h1
-rw-r--r--qemu/roms/u-boot/arch/microblaze/lib/Makefile10
-rw-r--r--qemu/roms/u-boot/arch/microblaze/lib/board.c201
-rw-r--r--qemu/roms/u-boot/arch/microblaze/lib/bootm.c85
-rw-r--r--qemu/roms/u-boot/arch/microblaze/lib/muldi3.c75
40 files changed, 0 insertions, 2615 deletions
diff --git a/qemu/roms/u-boot/arch/microblaze/config.mk b/qemu/roms/u-boot/arch/microblaze/config.mk
deleted file mode 100644
index 98bbf794f..000000000
--- a/qemu/roms/u-boot/arch/microblaze/config.mk
+++ /dev/null
@@ -1,17 +0,0 @@
-#
-# (C) Copyright 2007-2008 Michal Simek
-# Michal SIMEK <monstr@monstr.eu>
-#
-# (C) Copyright 2004 Atmark Techno, Inc.
-# Yasushi SHOJI <yashi@atmark-techno.com>
-#
-# SPDX-License-Identifier: GPL-2.0+
-#
-
-ifeq ($(CROSS_COMPILE),)
-CROSS_COMPILE := mb-
-endif
-
-CONFIG_STANDALONE_LOAD_ADDR ?= 0x80F00000
-
-PLATFORM_CPPFLAGS += -ffixed-r31 -D__microblaze__
diff --git a/qemu/roms/u-boot/arch/microblaze/cpu/Makefile b/qemu/roms/u-boot/arch/microblaze/cpu/Makefile
deleted file mode 100644
index 4955e8123..000000000
--- a/qemu/roms/u-boot/arch/microblaze/cpu/Makefile
+++ /dev/null
@@ -1,11 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier: GPL-2.0+
-#
-
-extra-y = start.o
-obj-y = irq.o
-obj-y += cpu.o interrupts.o cache.o exception.o timer.o
-obj-$(CONFIG_SPL_BUILD) += spl.o
diff --git a/qemu/roms/u-boot/arch/microblaze/cpu/cache.c b/qemu/roms/u-boot/arch/microblaze/cpu/cache.c
deleted file mode 100644
index ddfa02000..000000000
--- a/qemu/roms/u-boot/arch/microblaze/cpu/cache.c
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * (C) Copyright 2007 Michal Simek
- *
- * Michal SIMEK <monstr@monstr.eu>
- *
- * SPDX-License-Identifier: GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/asm.h>
-
-int dcache_status (void)
-{
- int i = 0;
- int mask = 0x80;
- __asm__ __volatile__ ("mfs %0,rmsr"::"r" (i):"memory");
- /* i&=0x80 */
- __asm__ __volatile__ ("and %0,%0,%1"::"r" (i), "r" (mask):"memory");
- return i;
-}
-
-int icache_status (void)
-{
- int i = 0;
- int mask = 0x20;
- __asm__ __volatile__ ("mfs %0,rmsr"::"r" (i):"memory");
- /* i&=0x20 */
- __asm__ __volatile__ ("and %0,%0,%1"::"r" (i), "r" (mask):"memory");
- return i;
-}
-
-void icache_enable (void) {
- MSRSET(0x20);
-}
-
-void icache_disable(void) {
- /* we are not generate ICACHE size -> flush whole cache */
- flush_cache(0, 32768);
- MSRCLR(0x20);
-}
-
-void dcache_enable (void) {
- MSRSET(0x80);
-}
-
-void dcache_disable(void) {
-#ifdef XILINX_USE_DCACHE
- flush_cache(0, XILINX_DCACHE_BYTE_SIZE);
-#endif
- MSRCLR(0x80);
-}
-
-void flush_cache (ulong addr, ulong size)
-{
- int i;
- for (i = 0; i < size; i += 4)
- asm volatile (
-#ifdef CONFIG_ICACHE
- "wic %0, r0;"
-#endif
- "nop;"
-#ifdef CONFIG_DCACHE
- "wdc.flush %0, r0;"
-#endif
- "nop;"
- :
- : "r" (addr + i)
- : "memory");
-}
diff --git a/qemu/roms/u-boot/arch/microblaze/cpu/cpu.c b/qemu/roms/u-boot/arch/microblaze/cpu/cpu.c
deleted file mode 100644
index 8e459d807..000000000
--- a/qemu/roms/u-boot/arch/microblaze/cpu/cpu.c
+++ /dev/null
@@ -1,9 +0,0 @@
-/*
- * (C) Copyright 2004 Atmark Techno, Inc.
- *
- * Yasushi SHOJI <yashi@atmark-techno.com>
- *
- * SPDX-License-Identifier: GPL-2.0+
- */
-
-/* EMPTY FILE */
diff --git a/qemu/roms/u-boot/arch/microblaze/cpu/exception.c b/qemu/roms/u-boot/arch/microblaze/cpu/exception.c
deleted file mode 100644
index 227842f6a..000000000
--- a/qemu/roms/u-boot/arch/microblaze/cpu/exception.c
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * (C) Copyright 2007 Michal Simek
- *
- * Michal SIMEK <monstr@monstr.eu>
- *
- * SPDX-License-Identifier: GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/asm.h>
-
-void _hw_exception_handler (void)
-{
- int address = 0;
- int state = 0;
- /* loading address of exception EAR */
- MFS (address, rear);
- /* loading excetpion state register ESR */
- MFS (state, resr);
- printf ("Hardware exception at 0x%x address\n", address);
- switch (state & 0x1f) { /* mask on exception cause */
- case 0x1:
- puts ("Unaligned data access exception\n");
- break;
- case 0x2:
- puts ("Illegal op-code exception\n");
- break;
- case 0x3:
- puts ("Instruction bus error exception\n");
- break;
- case 0x4:
- puts ("Data bus error exception\n");
- break;
- case 0x5:
- puts ("Divide by zero exception\n");
- break;
-#ifdef MICROBLAZE_V5
- case 0x7:
- puts("Priviledged or stack protection violation exception\n");
- break;
- case 0x1000:
- puts ("Exception in delay slot\n");
- break;
-#endif
- default:
- puts ("Undefined cause\n");
- break;
- }
- printf ("Unaligned %sword access\n", ((state & 0x800) ? "" : "half"));
- printf ("Unaligned %s access\n", ((state & 0x400) ? "store" : "load"));
- printf ("Register R%x\n", (state & 0x3E) >> 5);
- hang ();
-}
-
-#ifdef CONFIG_SYS_USR_EXCEP
-void _exception_handler (void)
-{
- puts ("User vector_exception\n");
- hang ();
-}
-#endif
diff --git a/qemu/roms/u-boot/arch/microblaze/cpu/interrupts.c b/qemu/roms/u-boot/arch/microblaze/cpu/interrupts.c
deleted file mode 100644
index 9364e2fa9..000000000
--- a/qemu/roms/u-boot/arch/microblaze/cpu/interrupts.c
+++ /dev/null
@@ -1,202 +0,0 @@
-/*
- * (C) Copyright 2007 Michal Simek
- * (C) Copyright 2004 Atmark Techno, Inc.
- *
- * Michal SIMEK <monstr@monstr.eu>
- * Yasushi SHOJI <yashi@atmark-techno.com>
- *
- * SPDX-License-Identifier: GPL-2.0+
- */
-
-#include <common.h>
-#include <command.h>
-#include <malloc.h>
-#include <asm/microblaze_intc.h>
-#include <asm/asm.h>
-
-#undef DEBUG_INT
-
-void enable_interrupts(void)
-{
- MSRSET(0x2);
-}
-
-int disable_interrupts(void)
-{
- unsigned int msr;
-
- MFS(msr, rmsr);
- MSRCLR(0x2);
- return (msr & 0x2) != 0;
-}
-
-static struct irq_action *vecs;
-static u32 irq_no;
-
-/* mapping structure to interrupt controller */
-microblaze_intc_t *intc;
-
-/* default handler */
-static void def_hdlr(void)
-{
- puts("def_hdlr\n");
-}
-
-static void enable_one_interrupt(int irq)
-{
- int mask;
- int offset = 1;
-
- offset <<= irq;
- mask = intc->ier;
- intc->ier = (mask | offset);
-#ifdef DEBUG_INT
- printf("Enable one interrupt irq %x - mask %x,ier %x\n", offset, mask,
- intc->ier);
- printf("INTC isr %x, ier %x, iar %x, mer %x\n", intc->isr, intc->ier,
- intc->iar, intc->mer);
-#endif
-}
-
-static void disable_one_interrupt(int irq)
-{
- int mask;
- int offset = 1;
-
- offset <<= irq;
- mask = intc->ier;
- intc->ier = (mask & ~offset);
-#ifdef DEBUG_INT
- printf("Disable one interrupt irq %x - mask %x,ier %x\n", irq, mask,
- intc->ier);
- printf("INTC isr %x, ier %x, iar %x, mer %x\n", intc->isr, intc->ier,
- intc->iar, intc->mer);
-#endif
-}
-
-int install_interrupt_handler(int irq, interrupt_handler_t *hdlr, void *arg)
-{
- struct irq_action *act;
-
- /* irq out of range */
- if ((irq < 0) || (irq > irq_no)) {
- puts("IRQ out of range\n");
- return -1;
- }
- act = &vecs[irq];
- if (hdlr) { /* enable */
- act->handler = hdlr;
- act->arg = arg;
- act->count = 0;
- enable_one_interrupt (irq);
- return 0;
- }
-
- /* Disable */
- act->handler = (interrupt_handler_t *) def_hdlr;
- act->arg = (void *)irq;
- disable_one_interrupt(irq);
- return 1;
-}
-
-/* initialization interrupt controller - hardware */
-static void intc_init(void)
-{
- intc->mer = 0;
- intc->ier = 0;
- intc->iar = 0xFFFFFFFF;
- /* XIntc_Start - hw_interrupt enable and all interrupt enable */
- intc->mer = 0x3;
-#ifdef DEBUG_INT
- printf("INTC isr %x, ier %x, iar %x, mer %x\n", intc->isr, intc->ier,
- intc->iar, intc->mer);
-#endif
-}
-
-int interrupts_init(void)
-{
- int i;
-
-#if defined(CONFIG_SYS_INTC_0_ADDR) && defined(CONFIG_SYS_INTC_0_NUM)
- intc = (microblaze_intc_t *) (CONFIG_SYS_INTC_0_ADDR);
- irq_no = CONFIG_SYS_INTC_0_NUM;
-#endif
- if (irq_no) {
- vecs = calloc(1, sizeof(struct irq_action) * irq_no);
- if (vecs == NULL) {
- puts("Interrupt vector allocation failed\n");
- return -1;
- }
-
- /* initialize irq list */
- for (i = 0; i < irq_no; i++) {
- vecs[i].handler = (interrupt_handler_t *) def_hdlr;
- vecs[i].arg = (void *)i;
- vecs[i].count = 0;
- }
- /* initialize intc controller */
- intc_init();
- enable_interrupts();
- } else {
- puts("Undefined interrupt controller\n");
- }
- return 0;
-}
-
-void interrupt_handler(void)
-{
- int irqs = intc->ivr; /* find active interrupt */
- int mask = 1;
-#ifdef DEBUG_INT
- int value;
- printf ("INTC isr %x, ier %x, iar %x, mer %x\n", intc->isr, intc->ier,
- intc->iar, intc->mer);
- R14(value);
- printf ("Interrupt handler on %x line, r14 %x\n", irqs, value);
-#endif
- struct irq_action *act = vecs + irqs;
-
-#ifdef DEBUG_INT
- printf
- ("Jumping to interrupt handler rutine addr %x,count %x,arg %x\n",
- act->handler, act->count, act->arg);
-#endif
- act->handler (act->arg);
- act->count++;
-
- intc->iar = mask << irqs;
-
-#ifdef DEBUG_INT
- printf ("Dump INTC reg, isr %x, ier %x, iar %x, mer %x\n", intc->isr,
- intc->ier, intc->iar, intc->mer);
- R14(value);
- printf ("Interrupt handler on %x line, r14 %x\n", irqs, value);
-#endif
-}
-
-#if defined(CONFIG_CMD_IRQ)
-int do_irqinfo(cmd_tbl_t *cmdtp, int flag, int argc, const char *argv[])
-{
- int i;
- struct irq_action *act = vecs;
-
- if (irq_no) {
- puts("\nInterrupt-Information:\n\n"
- "Nr Routine Arg Count\n"
- "-----------------------------\n");
-
- for (i = 0; i < irq_no; i++) {
- if (act->handler != (interrupt_handler_t *) def_hdlr) {
- printf("%02d %08x %08x %d\n", i,
- (int)act->handler, (int)act->arg,
- act->count);
- }
- act++;
- }
- puts("\n");
- } else {
- puts("Undefined interrupt controller\n");
- }
- return 0;
-}
-#endif
diff --git a/qemu/roms/u-boot/arch/microblaze/cpu/irq.S b/qemu/roms/u-boot/arch/microblaze/cpu/irq.S
deleted file mode 100644
index 24015898b..000000000
--- a/qemu/roms/u-boot/arch/microblaze/cpu/irq.S
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * (C) Copyright 2007 Michal Simek
- *
- * Michal SIMEK <monstr@monstr.eu>
- *
- * SPDX-License-Identifier: GPL-2.0+
- */
-
-#include <config.h>
-#include <asm/asm.h>
- .text
- .global _interrupt_handler
-_interrupt_handler:
- swi r2, r1, -4
- swi r3, r1, -8
- swi r4, r1, -12
- swi r5, r1, -16
- swi r6, r1, -20
- swi r7, r1, -24
- swi r8, r1, -28
- swi r9, r1, -32
- swi r10, r1, -36
- swi r11, r1, -40
- swi r12, r1, -44
- swi r13, r1, -48
- swi r14, r1, -52
- swi r15, r1, -56
- swi r16, r1, -60
- swi r17, r1, -64
- swi r18, r1, -68
- swi r19, r1, -72
- swi r20, r1, -76
- swi r21, r1, -80
- swi r22, r1, -84
- swi r23, r1, -88
- swi r24, r1, -92
- swi r25, r1, -96
- swi r26, r1, -100
- swi r27, r1, -104
- swi r28, r1, -108
- swi r29, r1, -112
- swi r30, r1, -116
- swi r31, r1, -120
- addik r1, r1, -124
- brlid r15, interrupt_handler
- nop
- addik r1, r1, 124
- lwi r31, r1, -120
- lwi r30, r1, -116
- lwi r29, r1, -112
- lwi r28, r1, -108
- lwi r27, r1, -104
- lwi r26, r1, -100
- lwi r25, r1, -96
- lwi r24, r1, -92
- lwi r23, r1, -88
- lwi r22, r1, -84
- lwi r21, r1, -80
- lwi r20, r1, -76
- lwi r19, r1, -72
- lwi r18, r1, -68
- lwi r17, r1, -64
- lwi r16, r1, -60
- lwi r15, r1, -56
- lwi r14, r1, -52
- lwi r13, r1, -48
- lwi r12, r1, -44
- lwi r11, r1, -40
- lwi r10, r1, -36
- lwi r9, r1, -32
- lwi r8, r1, -28
- lwi r7, r1, -24
- lwi r6, r1, -20
- lwi r5, r1, -16
- lwi r4, r1, -12
- lwi r3, r1, -8
- lwi r2, r1, -4
-
- rtid r14, 0
- nop
- .size _interrupt_handler,.-_interrupt_handler
diff --git a/qemu/roms/u-boot/arch/microblaze/cpu/spl.c b/qemu/roms/u-boot/arch/microblaze/cpu/spl.c
deleted file mode 100644
index 091226133..000000000
--- a/qemu/roms/u-boot/arch/microblaze/cpu/spl.c
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * (C) Copyright 2013 - 2014 Xilinx, Inc
- *
- * Michal Simek <michal.simek@xilinx.com>
- *
- * SPDX-License-Identifier: GPL-2.0+
- */
-
-#include <common.h>
-#include <image.h>
-#include <spl.h>
-#include <version.h>
-#include <asm/io.h>
-#include <asm/u-boot.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-bool boot_linux;
-
-u32 spl_boot_device(void)
-{
- return BOOT_DEVICE_NOR;
-}
-
-/* Board initialization after bss clearance */
-void spl_board_init(void)
-{
- gd = (gd_t *)CONFIG_SPL_STACK_ADDR;
-
- /* enable console uart printing */
- preloader_console_init();
-}
-
-#ifdef CONFIG_SPL_OS_BOOT
-void __noreturn jump_to_image_linux(void *arg)
-{
- debug("Entering kernel arg pointer: 0x%p\n", arg);
- typedef void (*image_entry_arg_t)(char *, ulong, ulong)
- __attribute__ ((noreturn));
- image_entry_arg_t image_entry =
- (image_entry_arg_t)spl_image.entry_point;
-
- image_entry(NULL, 0, (ulong)arg);
-}
-#endif /* CONFIG_SPL_OS_BOOT */
-
-int spl_start_uboot(void)
-{
-#ifdef CONFIG_SPL_OS_BOOT
- if (boot_linux)
- return 0;
-#endif
-
- return 1;
-}
diff --git a/qemu/roms/u-boot/arch/microblaze/cpu/start.S b/qemu/roms/u-boot/arch/microblaze/cpu/start.S
deleted file mode 100644
index 1757bbfa9..000000000
--- a/qemu/roms/u-boot/arch/microblaze/cpu/start.S
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- * (C) Copyright 2007 Michal Simek
- * (C) Copyright 2004 Atmark Techno, Inc.
- *
- * Michal SIMEK <monstr@monstr.eu>
- * Yasushi SHOJI <yashi@atmark-techno.com>
- *
- * SPDX-License-Identifier: GPL-2.0+
- */
-
-#include <asm-offsets.h>
-#include <config.h>
-
- .text
- .global _start
-_start:
- /*
- * reserve registers:
- * r10: Stores little/big endian offset for vectors
- * r2: Stores imm opcode
- * r3: Stores brai opcode
- */
-
- mts rmsr, r0 /* disable cache */
-
-#if defined(CONFIG_SPL_BUILD)
- addi r1, r0, CONFIG_SPL_STACK_ADDR
- addi r1, r1, -4 /* Decrement SP to top of memory */
-#else
- addi r1, r0, CONFIG_SYS_INIT_SP_OFFSET
- addi r1, r1, -4 /* Decrement SP to top of memory */
-
- /* Find-out if u-boot is running on BIG/LITTLE endian platform
- * There are some steps which is necessary to keep in mind:
- * 1. Setup offset value to r6
- * 2. Store word offset value to address 0x0
- * 3. Load just byte from address 0x0
- * 4a) LITTLE endian - r10 contains 0x2 because it is the smallest
- * value that's why is on address 0x0
- * 4b) BIG endian - r10 contains 0x0 because 0x2 offset is on addr 0x3
- */
- addik r6, r0, 0x2 /* BIG/LITTLE endian offset */
- lwi r7, r0, 0x28
- swi r6, r0, 0x28 /* used first unused MB vector */
- lbui r10, r0, 0x28 /* used first unused MB vector */
- swi r7, r0, 0x28
-
- /* add opcode instruction for 32bit jump - 2 instruction imm & brai */
- addi r2, r0, 0xb0000000 /* hex b000 opcode imm */
- addi r3, r0, 0xb8080000 /* hew b808 opcode brai */
-
-#ifdef CONFIG_SYS_RESET_ADDRESS
- /* reset address */
- swi r2, r0, 0x0 /* reset address - imm opcode */
- swi r3, r0, 0x4 /* reset address - brai opcode */
-
- addik r6, r0, CONFIG_SYS_RESET_ADDRESS
- sw r6, r1, r0
- lhu r7, r1, r10
- rsubi r8, r10, 0x2
- sh r7, r0, r8
- rsubi r8, r10, 0x6
- sh r6, r0, r8
-#endif
-
-#ifdef CONFIG_SYS_USR_EXCEP
- /* user_vector_exception */
- swi r2, r0, 0x8 /* user vector exception - imm opcode */
- swi r3, r0, 0xC /* user vector exception - brai opcode */
-
- addik r6, r0, _exception_handler
- sw r6, r1, r0
- /*
- * BIG ENDIAN memory map for user exception
- * 0x8: 0xB000XXXX
- * 0xC: 0xB808XXXX
- *
- * then it is necessary to count address for storing the most significant
- * 16bits from _exception_handler address and copy it to
- * 0xa address. Big endian use offset in r10=0 that's why is it just
- * 0xa address. The same is done for the least significant 16 bits
- * for 0xe address.
- *
- * LITTLE ENDIAN memory map for user exception
- * 0x8: 0xXXXX00B0
- * 0xC: 0xXXXX08B8
- *
- * Offset is for little endian setup to 0x2. rsubi instruction decrease
- * address value to ensure that points to proper place which is
- * 0x8 for the most significant 16 bits and
- * 0xC for the least significant 16 bits
- */
- lhu r7, r1, r10
- rsubi r8, r10, 0xa
- sh r7, r0, r8
- rsubi r8, r10, 0xe
- sh r6, r0, r8
-#endif
-
- /* interrupt_handler */
- swi r2, r0, 0x10 /* interrupt - imm opcode */
- swi r3, r0, 0x14 /* interrupt - brai opcode */
-
- addik r6, r0, _interrupt_handler
- sw r6, r1, r0
- lhu r7, r1, r10
- rsubi r8, r10, 0x12
- sh r7, r0, r8
- rsubi r8, r10, 0x16
- sh r6, r0, r8
-
- /* hardware exception */
- swi r2, r0, 0x20 /* hardware exception - imm opcode */
- swi r3, r0, 0x24 /* hardware exception - brai opcode */
-
- addik r6, r0, _hw_exception_handler
- sw r6, r1, r0
- lhu r7, r1, r10
- rsubi r8, r10, 0x22
- sh r7, r0, r8
- rsubi r8, r10, 0x26
- sh r6, r0, r8
-#endif /* BUILD_SPL */
-
- /* Flush cache before enable cache */
- addik r5, r0, 0
- addik r6, r0, XILINX_DCACHE_BYTE_SIZE
-flush: bralid r15, flush_cache
- nop
-
- /* enable instruction and data cache */
- mfs r12, rmsr
- ori r12, r12, 0xa0
- mts rmsr, r12
-
-clear_bss:
- /* clear BSS segments */
- addi r5, r0, __bss_start
- addi r4, r0, __bss_end
- cmp r6, r5, r4
- beqi r6, 3f
-2:
- swi r0, r5, 0 /* write zero to loc */
- addi r5, r5, 4 /* increment to next loc */
- cmp r6, r5, r4 /* check if we have reach the end */
- bnei r6, 2b
-3: /* jumping to board_init */
-#ifndef CONFIG_SPL_BUILD
- brai board_init_f
-#else
- brai board_init_r
-#endif
-1: bri 1b
-
-#ifndef CONFIG_SPL_BUILD
-/*
- * Read 16bit little endian
- */
- .text
- .global in16
- .ent in16
- .align 2
-in16: lhu r3, r0, r5
- bslli r4, r3, 8
- bsrli r3, r3, 8
- andi r4, r4, 0xffff
- or r3, r3, r4
- rtsd r15, 8
- sext16 r3, r3
- .end in16
-
-/*
- * Write 16bit little endian
- * first parameter(r5) - address, second(r6) - short value
- */
- .text
- .global out16
- .ent out16
- .align 2
-out16: bslli r3, r6, 8
- bsrli r6, r6, 8
- andi r3, r3, 0xffff
- or r3, r3, r6
- sh r3, r0, r5
- rtsd r15, 8
- or r0, r0, r0
- .end out16
-#endif
diff --git a/qemu/roms/u-boot/arch/microblaze/cpu/timer.c b/qemu/roms/u-boot/arch/microblaze/cpu/timer.c
deleted file mode 100644
index 3960bbb08..000000000
--- a/qemu/roms/u-boot/arch/microblaze/cpu/timer.c
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * (C) Copyright 2007 Michal Simek
- *
- * Michal SIMEK <monstr@monstr.eu>
- *
- * SPDX-License-Identifier: GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/microblaze_timer.h>
-#include <asm/microblaze_intc.h>
-
-volatile int timestamp = 0;
-microblaze_timer_t *tmr;
-
-ulong get_timer (ulong base)
-{
- if (tmr)
- return timestamp - base;
- return timestamp++ - base;
-}
-
-void __udelay(unsigned long usec)
-{
- u32 i;
-
- if (tmr) {
- i = get_timer(0);
- while ((get_timer(0) - i) < (usec / 1000))
- ;
- } else {
- for (i = 0; i < (usec * XILINX_CLOCK_FREQ / 10000000); i++)
- ;
- }
-}
-
-#ifndef CONFIG_SPL_BUILD
-static void timer_isr(void *arg)
-{
- timestamp++;
- tmr->control = tmr->control | TIMER_INTERRUPT;
-}
-
-int timer_init (void)
-{
- int irq = -1;
- u32 preload = 0;
- u32 ret = 0;
-
-#if defined(CONFIG_SYS_TIMER_0_ADDR) && defined(CONFIG_SYS_INTC_0_NUM)
- preload = XILINX_CLOCK_FREQ / CONFIG_SYS_HZ;
- irq = CONFIG_SYS_TIMER_0_IRQ;
- tmr = (microblaze_timer_t *) (CONFIG_SYS_TIMER_0_ADDR);
-#endif
-
- if (tmr && preload && irq >= 0) {
- tmr->loadreg = preload;
- tmr->control = TIMER_INTERRUPT | TIMER_RESET;
- tmr->control = TIMER_ENABLE | TIMER_ENABLE_INTR |\
- TIMER_RELOAD | TIMER_DOWN_COUNT;
- timestamp = 0;
- ret = install_interrupt_handler (irq, timer_isr, (void *)tmr);
- if (ret)
- tmr = NULL;
- }
- /* No problem if timer is not found/initialized */
- return 0;
-}
-#else
-int timer_init(void)
-{
- return 0;
-}
-#endif
-
-/*
- * This function is derived from PowerPC code (read timebase as long long).
- * On Microblaze it just returns the timer value.
- */
-unsigned long long get_ticks(void)
-{
- return get_timer(0);
-}
-
-/*
- * This function is derived from PowerPC code (timebase clock frequency).
- * On Microblaze it returns the number of timer ticks per second.
- */
-ulong get_tbclk(void)
-{
- return CONFIG_SYS_HZ;
-}
diff --git a/qemu/roms/u-boot/arch/microblaze/cpu/u-boot-spl.lds b/qemu/roms/u-boot/arch/microblaze/cpu/u-boot-spl.lds
deleted file mode 100644
index 96353cd96..000000000
--- a/qemu/roms/u-boot/arch/microblaze/cpu/u-boot-spl.lds
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * (C) Copyright 2013 - 2014 Xilinx, Inc
- *
- * Michal Simek <michal.simek@xilinx.com>
- *
- * SPDX-License-Identifier: GPL-2.0+
- */
-
-#include <asm-offsets.h>
-
-OUTPUT_ARCH(microblaze)
-ENTRY(_start)
-
-SECTIONS
-{
- .text ALIGN(0x4):
- {
- __text_start = .;
- arch/microblaze/cpu/start.o (.text)
- *(.text)
- *(.text.*)
- __text_end = .;
- }
-
- .rodata ALIGN(0x4):
- {
- __rodata_start = .;
- *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
- __rodata_end = .;
- }
-
- .data ALIGN(0x4):
- {
- __data_start = .;
- *(.data)
- *(.data.*)
- __data_end = .;
- }
-
- .bss ALIGN(0x4):
- {
- __bss_start = .;
- *(.sbss)
- *(.scommon)
- *(.bss)
- *(.bss.*)
- *(COMMON)
- . = ALIGN(4);
- __bss_end = .;
- }
- __end = . ;
-}
-
-#if defined(CONFIG_SPL_MAX_FOOTPRINT)
-ASSERT(__end - _start < (CONFIG_SPL_MAX_FOOTPRINT), \
- "SPL image plus BSS too big");
-#endif
diff --git a/qemu/roms/u-boot/arch/microblaze/cpu/u-boot.lds b/qemu/roms/u-boot/arch/microblaze/cpu/u-boot.lds
deleted file mode 100644
index fdad20753..000000000
--- a/qemu/roms/u-boot/arch/microblaze/cpu/u-boot.lds
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * (C) Copyright 2004 Atmark Techno, Inc.
- *
- * Yasushi SHOJI <yashi@atmark-techno.com>
- *
- * SPDX-License-Identifier: GPL-2.0+
- */
-
-OUTPUT_ARCH(microblaze)
-ENTRY(_start)
-
-SECTIONS
-{
- .text ALIGN(0x4):
- {
- __text_start = .;
- arch/microblaze/cpu/start.o (.text)
- *(.text)
- __text_end = .;
- }
-
- .rodata ALIGN(0x4):
- {
- __rodata_start = .;
- *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
- __rodata_end = .;
- }
-
- .data ALIGN(0x4):
- {
- __data_start = .;
-#ifdef CONFIG_OF_EMBED
- dts/built-in.o (.data)
-#endif
- *(.data)
- __data_end = .;
- }
-
- . = ALIGN(4);
- .u_boot_list : {
- KEEP(*(SORT(.u_boot_list*)));
- }
-
- .bss ALIGN(0x4):
- {
- __bss_start = .;
- *(.sbss)
- *(.scommon)
- *(.bss)
- *(COMMON)
- . = ALIGN(4);
- __bss_end = .;
- }
- __end = . ;
-}
diff --git a/qemu/roms/u-boot/arch/microblaze/dts/.gitignore b/qemu/roms/u-boot/arch/microblaze/dts/.gitignore
deleted file mode 100644
index b60ed208c..000000000
--- a/qemu/roms/u-boot/arch/microblaze/dts/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*.dtb
diff --git a/qemu/roms/u-boot/arch/microblaze/dts/Makefile b/qemu/roms/u-boot/arch/microblaze/dts/Makefile
deleted file mode 100644
index 6d4a11f62..000000000
--- a/qemu/roms/u-boot/arch/microblaze/dts/Makefile
+++ /dev/null
@@ -1,11 +0,0 @@
-dtb-y += microblaze-generic.dtb
-
-targets += $(dtb-y)
-
-DTC_FLAGS += -R 4 -p 0x1000
-
-PHONY += dtbs
-dtbs: $(addprefix $(obj)/, $(dtb-y))
- @:
-
-clean-files := *.dtb
diff --git a/qemu/roms/u-boot/arch/microblaze/dts/microblaze-generic.dts b/qemu/roms/u-boot/arch/microblaze/dts/microblaze-generic.dts
deleted file mode 100644
index 203330987..000000000
--- a/qemu/roms/u-boot/arch/microblaze/dts/microblaze-generic.dts
+++ /dev/null
@@ -1,7 +0,0 @@
-/dts-v1/;
-/ {
- #address-cells = <1>;
- #size-cells = <1>;
- aliases {
- } ;
-} ;
diff --git a/qemu/roms/u-boot/arch/microblaze/include/asm/asm.h b/qemu/roms/u-boot/arch/microblaze/include/asm/asm.h
deleted file mode 100644
index c1c3b0398..000000000
--- a/qemu/roms/u-boot/arch/microblaze/include/asm/asm.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * (C) Copyright 2007 Michal Simek
- *
- * Michal SIMEK <monstr@monstr.eu>
- *
- * SPDX-License-Identifier: GPL-2.0+
- */
-
-/* FSL macros */
-#define NGET(val, fslnum) \
- __asm__ __volatile__ ("nget %0, rfsl" #fslnum :"=r" (val));
-
-#define GET(val, fslnum) \
- __asm__ __volatile__ ("get %0, rfsl" #fslnum :"=r" (val));
-
-#define NCGET(val, fslnum) \
- __asm__ __volatile__ ("ncget %0, rfsl" #fslnum :"=r" (val));
-
-#define CGET(val, fslnum) \
- __asm__ __volatile__ ("cget %0, rfsl" #fslnum :"=r" (val));
-
-#define NPUT(val, fslnum) \
- __asm__ __volatile__ ("nput %0, rfsl" #fslnum ::"r" (val));
-
-#define PUT(val, fslnum) \
- __asm__ __volatile__ ("put %0, rfsl" #fslnum ::"r" (val));
-
-#define NCPUT(val, fslnum) \
- __asm__ __volatile__ ("ncput %0, rfsl" #fslnum ::"r" (val));
-
-#define CPUT(val, fslnum) \
- __asm__ __volatile__ ("cput %0, rfsl" #fslnum ::"r" (val));
-
-/* CPU dependent */
-/* machine status register */
-#define MFS(val, reg) \
- __asm__ __volatile__ ("mfs %0," #reg :"=r" (val));
-
-#define MTS(val, reg) \
- __asm__ __volatile__ ("mts " #reg ", %0"::"r" (val));
-
-/* get return address from interrupt */
-#define R14(val) \
- __asm__ __volatile__ ("addi %0, r14, 0":"=r" (val));
-
-#define NOP __asm__ __volatile__ ("nop");
-
-/* use machine status registe USE_MSR_REG */
-#if XILINX_USE_MSR_INSTR == 1
-#define MSRSET(val) \
- __asm__ __volatile__ ("msrset r0," #val );
-
-#define MSRCLR(val) \
- __asm__ __volatile__ ("msrclr r0," #val );
-
-#else
-#define MSRSET(val) \
-{ \
- register unsigned tmp; \
- __asm__ __volatile__ (" \
- mfs %0, rmsr; \
- ori %0, %0, "#val"; \
- mts rmsr, %0; \
- nop;" \
- : "=r" (tmp) \
- : "d" (val) \
- : "memory"); \
-}
-
-#define MSRCLR(val) \
-{ \
- register unsigned tmp; \
- __asm__ __volatile__ (" \
- mfs %0, rmsr; \
- andi %0, %0, ~"#val"; \
- mts rmsr, %0; \
- nop;" \
- : "=r" (tmp) \
- : "d" (val) \
- : "memory"); \
-}
-#endif
diff --git a/qemu/roms/u-boot/arch/microblaze/include/asm/bitops.h b/qemu/roms/u-boot/arch/microblaze/include/asm/bitops.h
deleted file mode 100644
index 0ac78d76f..000000000
--- a/qemu/roms/u-boot/arch/microblaze/include/asm/bitops.h
+++ /dev/null
@@ -1,392 +0,0 @@
-#ifndef _MICROBLAZE_BITOPS_H
-#define _MICROBLAZE_BITOPS_H
-
-/*
- * Copyright 1992, Linus Torvalds.
- */
-
-#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)
-#define PLATFORM__CLEAR_BIT
-
-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;
-}
-#define PLATFORM__SET_BIT
-
-/*
- * 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);
-}
-
-/*
- * 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)
-
-static 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 */
diff --git a/qemu/roms/u-boot/arch/microblaze/include/asm/byteorder.h b/qemu/roms/u-boot/arch/microblaze/include/asm/byteorder.h
deleted file mode 100644
index f3a471d1b..000000000
--- a/qemu/roms/u-boot/arch/microblaze/include/asm/byteorder.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * 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__
-
-#if !defined(__STRICT_ANSI__) || defined(__KERNEL__)
-# define __BYTEORDER_HAS_U64__
-# define __SWAB_64_THRU_32__
-#endif
-
-#endif /* __GNUC__ */
-
-#ifdef __MICROBLAZEEL__
-#include <linux/byteorder/little_endian.h>
-#else
-#include <linux/byteorder/big_endian.h>
-#endif
-
-#endif /* __MICROBLAZE_BYTEORDER_H__ */
diff --git a/qemu/roms/u-boot/arch/microblaze/include/asm/cache.h b/qemu/roms/u-boot/arch/microblaze/include/asm/cache.h
deleted file mode 100644
index d02d57a5f..000000000
--- a/qemu/roms/u-boot/arch/microblaze/include/asm/cache.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright (c) 2011 The Chromium OS Authors.
- *
- * SPDX-License-Identifier: GPL-2.0+
- */
-
-#ifndef __MICROBLAZE_CACHE_H__
-#define __MICROBLAZE_CACHE_H__
-
-/*
- * The microblaze can have either a 4 or 16 byte cacheline depending on whether
- * you are using OPB(4) or CacheLink(16). If the board config has not specified
- * a cacheline size we assume the larger value of 16 bytes for DMA buffer
- * alignment.
- */
-#ifdef CONFIG_SYS_CACHELINE_SIZE
-#define ARCH_DMA_MINALIGN CONFIG_SYS_CACHELINE_SIZE
-#else
-#define ARCH_DMA_MINALIGN 16
-#endif
-
-#endif /* __MICROBLAZE_CACHE_H__ */
diff --git a/qemu/roms/u-boot/arch/microblaze/include/asm/config.h b/qemu/roms/u-boot/arch/microblaze/include/asm/config.h
deleted file mode 100644
index cd2973478..000000000
--- a/qemu/roms/u-boot/arch/microblaze/include/asm/config.h
+++ /dev/null
@@ -1,10 +0,0 @@
-/*
- * Copyright 2009 Freescale Semiconductor, Inc.
- *
- * SPDX-License-Identifier: GPL-2.0+
- */
-
-#ifndef _ASM_CONFIG_H_
-#define _ASM_CONFIG_H_
-
-#endif
diff --git a/qemu/roms/u-boot/arch/microblaze/include/asm/errno.h b/qemu/roms/u-boot/arch/microblaze/include/asm/errno.h
deleted file mode 100644
index 4c82b503d..000000000
--- a/qemu/roms/u-boot/arch/microblaze/include/asm/errno.h
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-generic/errno.h>
diff --git a/qemu/roms/u-boot/arch/microblaze/include/asm/global_data.h b/qemu/roms/u-boot/arch/microblaze/include/asm/global_data.h
deleted file mode 100644
index a0bab6ec5..000000000
--- a/qemu/roms/u-boot/arch/microblaze/include/asm/global_data.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * (C) Copyright 2004 Atmark Techno, Inc.
- *
- * Yasushi SHOJI <yashi@atmark-techno.com>
- *
- * SPDX-License-Identifier: GPL-2.0+
- */
-
-#ifndef __ASM_GBL_DATA_H
-#define __ASM_GBL_DATA_H
-
-/* Architecture-specific global data */
-struct arch_global_data {
-};
-
-#include <asm-generic/global_data.h>
-
-#define DECLARE_GLOBAL_DATA_PTR register volatile gd_t *gd asm ("r31")
-
-#endif /* __ASM_GBL_DATA_H */
diff --git a/qemu/roms/u-boot/arch/microblaze/include/asm/gpio.h b/qemu/roms/u-boot/arch/microblaze/include/asm/gpio.h
deleted file mode 100644
index 4762de024..000000000
--- a/qemu/roms/u-boot/arch/microblaze/include/asm/gpio.h
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifndef _ASM_MICROBLAZE_GPIO_H_
-#define _ASM_MICROBLAZE_GPIO_H_
-
-#include <asm-generic/gpio.h>
-
-/* Allocation functions */
-extern int gpio_alloc_dual(u32 baseaddr, const char *name, u32 gpio_no0,
- u32 gpio_no1);
-extern int gpio_alloc(u32 baseaddr, const char *name, u32 gpio_no);
-
-#define gpio_status() gpio_info()
-extern void gpio_info(void);
-
-#endif
diff --git a/qemu/roms/u-boot/arch/microblaze/include/asm/io.h b/qemu/roms/u-boot/arch/microblaze/include/asm/io.h
deleted file mode 100644
index 584cbce35..000000000
--- a/qemu/roms/u-boot/arch/microblaze/include/asm/io.h
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * 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__
-
-#include <asm/types.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 int __v = (*(volatile unsigned int *) (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)
-
-static inline void sync(void)
-{
-}
-
-/*
- * Given a physical address and a length, return a virtual address
- * that can be used to access the memory range with the caching
- * properties specified by "flags".
- */
-#define MAP_NOCACHE (0)
-#define MAP_WRCOMBINE (0)
-#define MAP_WRBACK (0)
-#define MAP_WRTHROUGH (0)
-
-static inline void *
-map_physmem(phys_addr_t paddr, unsigned long len, unsigned long flags)
-{
- return (void *)paddr;
-}
-
-/*
- * Take down a mapping set up by map_physmem().
- */
-static inline void unmap_physmem(void *vaddr, unsigned long flags)
-{
-
-}
-
-static inline phys_addr_t virt_to_phys(void * vaddr)
-{
- return (phys_addr_t)(vaddr);
-}
-
-#endif /* __MICROBLAZE_IO_H__ */
diff --git a/qemu/roms/u-boot/arch/microblaze/include/asm/microblaze_intc.h b/qemu/roms/u-boot/arch/microblaze/include/asm/microblaze_intc.h
deleted file mode 100644
index 0fb920788..000000000
--- a/qemu/roms/u-boot/arch/microblaze/include/asm/microblaze_intc.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * (C) Copyright 2007 Michal Simek
- *
- * Michal SIMEK <monstr@monstr.cz>
- *
- * SPDX-License-Identifier: GPL-2.0+
- */
-
-typedef volatile struct microblaze_intc_t {
- int isr; /* interrupt status register */
- int ipr; /* interrupt pending register */
- int ier; /* interrupt enable register */
- int iar; /* interrupt acknowledge register */
- int sie; /* set interrupt enable bits */
- int cie; /* clear interrupt enable bits */
- int ivr; /* interrupt vector register */
- int mer; /* master enable register */
-} microblaze_intc_t;
-
-struct irq_action {
- interrupt_handler_t *handler; /* pointer to interrupt rutine */
- void *arg;
- int count; /* number of interrupt */
-};
-
-/**
- * Register and unregister interrupt handler rutines
- *
- * @param irq IRQ number
- * @param hdlr Interrupt handler rutine
- * @param arg Pointer to argument which is passed to int. handler rutine
- * @return 0 if registration pass, 1 if unregistration pass,
- * or an error code < 0 otherwise
- */
-int install_interrupt_handler(int irq, interrupt_handler_t *hdlr,
- void *arg);
-
-int interrupts_init(void);
diff --git a/qemu/roms/u-boot/arch/microblaze/include/asm/microblaze_timer.h b/qemu/roms/u-boot/arch/microblaze/include/asm/microblaze_timer.h
deleted file mode 100644
index 0d8140201..000000000
--- a/qemu/roms/u-boot/arch/microblaze/include/asm/microblaze_timer.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * (C) Copyright 2007 Michal Simek
- *
- * Michal SIMEK <monstr@monstr.cz>
- *
- * SPDX-License-Identifier: GPL-2.0+
- */
-
-#define TIMER_ENABLE_ALL 0x400 /* ENALL */
-#define TIMER_PWM 0x200 /* PWMA0 */
-#define TIMER_INTERRUPT 0x100 /* T0INT */
-#define TIMER_ENABLE 0x080 /* ENT0 */
-#define TIMER_ENABLE_INTR 0x040 /* ENIT0 */
-#define TIMER_RESET 0x020 /* LOAD0 */
-#define TIMER_RELOAD 0x010 /* ARHT0 */
-#define TIMER_EXT_CAPTURE 0x008 /* CAPT0 */
-#define TIMER_EXT_COMPARE 0x004 /* GENT0 */
-#define TIMER_DOWN_COUNT 0x002 /* UDT0 */
-#define TIMER_CAPTURE_MODE 0x001 /* MDT0 */
-
-typedef volatile struct microblaze_timer_t {
- int control; /* control/statuc register TCSR */
- int loadreg; /* load register TLR */
- int counter; /* timer/counter register */
-} microblaze_timer_t;
-
-int timer_init(void);
diff --git a/qemu/roms/u-boot/arch/microblaze/include/asm/posix_types.h b/qemu/roms/u-boot/arch/microblaze/include/asm/posix_types.h
deleted file mode 100644
index 38dc5aa85..000000000
--- a/qemu/roms/u-boot/arch/microblaze/include/asm/posix_types.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * 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__
-
-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__ */
diff --git a/qemu/roms/u-boot/arch/microblaze/include/asm/processor.h b/qemu/roms/u-boot/arch/microblaze/include/asm/processor.h
deleted file mode 100644
index 5afc8f9e5..000000000
--- a/qemu/roms/u-boot/arch/microblaze/include/asm/processor.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright (C) 2011 Michal Simek <monstr@monstr.eu>
- *
- * SPDX-License-Identifier: GPL-2.0+
- */
-
-#ifndef __ASM_MICROBLAZE_PROCESSOR_H
-#define __ASM_MICROBLAZE_PROCESSOR_H
-
-/* References to section boundaries */
-
-extern char __end[];
-extern char __text_start[];
-
-/* Microblaze board initialization function */
-void board_init(void);
-
-/* Watchdog functions */
-extern void hw_watchdog_disable(void);
-
-#endif /* __ASM_MICROBLAZE_PROCESSOR_H */
diff --git a/qemu/roms/u-boot/arch/microblaze/include/asm/ptrace.h b/qemu/roms/u-boot/arch/microblaze/include/asm/ptrace.h
deleted file mode 100644
index b796d4faf..000000000
--- a/qemu/roms/u-boot/arch/microblaze/include/asm/ptrace.h
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * 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__ */
diff --git a/qemu/roms/u-boot/arch/microblaze/include/asm/sections.h b/qemu/roms/u-boot/arch/microblaze/include/asm/sections.h
deleted file mode 100644
index 506fc4344..000000000
--- a/qemu/roms/u-boot/arch/microblaze/include/asm/sections.h
+++ /dev/null
@@ -1,11 +0,0 @@
-/*
- * Copyright (c) 2012 The Chromium OS Authors.
- * SPDX-License-Identifier: GPL-2.0+
- */
-
-#ifndef __ASM_MICROBLAZE_SECTIONS_H
-#define __ASM_MICROBLAZE_SECTIONS_H
-
-#include <asm-generic/sections.h>
-
-#endif
diff --git a/qemu/roms/u-boot/arch/microblaze/include/asm/spl.h b/qemu/roms/u-boot/arch/microblaze/include/asm/spl.h
deleted file mode 100644
index c1cae6cf0..000000000
--- a/qemu/roms/u-boot/arch/microblaze/include/asm/spl.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
- * (C) Copyright 2013 - 2014 Xilinx, Inc
- *
- * Michal Simek <michal.simek@xilinx.com>
- *
- * SPDX-License-Identifier: GPL-2.0+
- */
-
-#ifndef _ASM_MICROBLAZE_SPL_H_
-#define _ASM_MICROBLAZE_SPL_H_
-
-#define BOOT_DEVICE_RAM 1
-#define BOOT_DEVICE_NOR 2
-#define BOOT_DEVICE_SPI 3
-
-#endif
diff --git a/qemu/roms/u-boot/arch/microblaze/include/asm/string.h b/qemu/roms/u-boot/arch/microblaze/include/asm/string.h
deleted file mode 100644
index 724f5bdfa..000000000
--- a/qemu/roms/u-boot/arch/microblaze/include/asm/string.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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__ */
diff --git a/qemu/roms/u-boot/arch/microblaze/include/asm/system.h b/qemu/roms/u-boot/arch/microblaze/include/asm/system.h
deleted file mode 100644
index 0297a1159..000000000
--- a/qemu/roms/u-boot/arch/microblaze/include/asm/system.h
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
- * 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__ */
diff --git a/qemu/roms/u-boot/arch/microblaze/include/asm/types.h b/qemu/roms/u-boot/arch/microblaze/include/asm/types.h
deleted file mode 100644
index 77094f62d..000000000
--- a/qemu/roms/u-boot/arch/microblaze/include/asm/types.h
+++ /dev/null
@@ -1,60 +0,0 @@
-#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__)
-__extension__ typedef __signed__ long long __s64;
-__extension__ 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;
-
-typedef unsigned long phys_addr_t;
-typedef unsigned long phys_size_t;
-#endif /* __KERNEL__ */
-
-#endif /* _ASM_TYPES_H */
diff --git a/qemu/roms/u-boot/arch/microblaze/include/asm/u-boot.h b/qemu/roms/u-boot/arch/microblaze/include/asm/u-boot.h
deleted file mode 100644
index 54d415ebb..000000000
--- a/qemu/roms/u-boot/arch/microblaze/include/asm/u-boot.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * (C) Copyright 2004 Atmark Techno, Inc.
- *
- * Yasushi SHOJI <yashi@atmark-techno.com>
- *
- * SPDX-License-Identifier: GPL-2.0+
- *
- ********************************************************************
- * NOTE: This header file defines an interface to U-Boot. Including
- * this (unmodified) header file in another file is considered normal
- * use of U-Boot, and does *not* fall under the heading of "derived
- * work".
- ********************************************************************
- */
-
-#ifndef _U_BOOT_H_
-#define _U_BOOT_H_
-
-typedef struct bd_info {
- unsigned long bi_memstart; /* start of DRAM memory */
- phys_size_t 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 */
- ulong bi_boot_params; /* where this board expects params */
-} bd_t;
-
-/* For image.h:image_check_target_arch() */
-#define IH_ARCH_DEFAULT IH_ARCH_MICROBLAZE
-
-#endif /* _U_BOOT_H_ */
diff --git a/qemu/roms/u-boot/arch/microblaze/include/asm/unaligned.h b/qemu/roms/u-boot/arch/microblaze/include/asm/unaligned.h
deleted file mode 100644
index 6cecbbb21..000000000
--- a/qemu/roms/u-boot/arch/microblaze/include/asm/unaligned.h
+++ /dev/null
@@ -1 +0,0 @@
-#include <asm-generic/unaligned.h>
diff --git a/qemu/roms/u-boot/arch/microblaze/lib/Makefile b/qemu/roms/u-boot/arch/microblaze/lib/Makefile
deleted file mode 100644
index 339dd153a..000000000
--- a/qemu/roms/u-boot/arch/microblaze/lib/Makefile
+++ /dev/null
@@ -1,10 +0,0 @@
-#
-# (C) Copyright 2003-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier: GPL-2.0+
-#
-
-obj-y += board.o
-obj-$(CONFIG_CMD_BOOTM) += bootm.o
-obj-y += muldi3.o
diff --git a/qemu/roms/u-boot/arch/microblaze/lib/board.c b/qemu/roms/u-boot/arch/microblaze/lib/board.c
deleted file mode 100644
index 600c80ab7..000000000
--- a/qemu/roms/u-boot/arch/microblaze/lib/board.c
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- * (C) Copyright 2007 Michal Simek
- * (C) Copyright 2004 Atmark Techno, Inc.
- *
- * Michal SIMEK <monstr@monstr.eu>
- * Yasushi SHOJI <yashi@atmark-techno.com>
- *
- * SPDX-License-Identifier: GPL-2.0+
- */
-
-#include <common.h>
-#include <command.h>
-#include <malloc.h>
-#include <version.h>
-#include <watchdog.h>
-#include <stdio_dev.h>
-#include <serial.h>
-#include <net.h>
-#include <spi.h>
-#include <linux/compiler.h>
-#include <asm/processor.h>
-#include <asm/microblaze_intc.h>
-#include <fdtdec.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-static int display_banner(void)
-{
- printf("\n\n%s\n\n", version_string);
- return 0;
-}
-
-/*
- * 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[] = {
- env_init,
-#ifdef CONFIG_OF_CONTROL
- fdtdec_check_fdt,
-#endif
- serial_init,
-#ifndef CONFIG_SPL_BUILD
- console_init_f,
-#endif
- display_banner,
-#ifndef CONFIG_SPL_BUILD
- interrupts_init,
- timer_init,
-#endif
- NULL,
-};
-
-unsigned long monitor_flash_len;
-
-void board_init_f(ulong not_used)
-{
- bd_t *bd;
- init_fnc_t **init_fnc_ptr;
- gd = (gd_t *)(CONFIG_SYS_SDRAM_BASE + CONFIG_SYS_GBL_DATA_OFFSET);
- bd = (bd_t *)(CONFIG_SYS_SDRAM_BASE + CONFIG_SYS_GBL_DATA_OFFSET
- - GENERATED_BD_INFO_SIZE);
-#if defined(CONFIG_CMD_FLASH) && !defined(CONFIG_SPL_BUILD)
- ulong flash_size = 0;
-#endif
- asm ("nop"); /* FIXME gd is not initialize - wait */
- memset((void *)gd, 0, GENERATED_GBL_DATA_SIZE);
- memset((void *)bd, 0, GENERATED_BD_INFO_SIZE);
- gd->bd = bd;
- gd->baudrate = CONFIG_BAUDRATE;
- bd->bi_memstart = CONFIG_SYS_SDRAM_BASE;
- bd->bi_memsize = CONFIG_SYS_SDRAM_SIZE;
- gd->flags |= GD_FLG_RELOC; /* tell others: relocation done */
-
- monitor_flash_len = __end - __text_start;
-
-#ifdef CONFIG_OF_EMBED
- /* Get a pointer to the FDT */
- gd->fdt_blob = __dtb_dt_begin;
-#elif defined CONFIG_OF_SEPARATE
- /* FDT is at end of image */
- gd->fdt_blob = (void *)__end;
-#endif
-
-#ifndef CONFIG_SPL_BUILD
- /* Allow the early environment to override the fdt address */
- gd->fdt_blob = (void *)getenv_ulong("fdtcontroladdr", 16,
- (uintptr_t)gd->fdt_blob);
-#endif
-
- /*
- * The Malloc area is immediately below the monitor copy in DRAM
- * aka CONFIG_SYS_MONITOR_BASE - Note there is no need for reloc_off
- * as our monitory code is run from SDRAM
- */
- mem_malloc_init(CONFIG_SYS_MALLOC_BASE, CONFIG_SYS_MALLOC_LEN);
-
- serial_initialize();
-
-#ifdef CONFIG_XILINX_TB_WATCHDOG
- hw_watchdog_init();
-#endif
- for (init_fnc_ptr = init_sequence; *init_fnc_ptr; ++init_fnc_ptr) {
- WATCHDOG_RESET();
- if ((*init_fnc_ptr) () != 0)
- hang();
- }
-
-#ifndef CONFIG_SPL_BUILD
-#ifdef CONFIG_OF_CONTROL
- /* For now, put this check after the console is ready */
- if (fdtdec_prepare_fdt())
- panic("** No FDT - please see doc/README.fdt-control");
- else
- printf("DTB: 0x%x\n", (u32)gd->fdt_blob);
-#endif
-
- puts("SDRAM :\n");
- printf("\t\tIcache:%s\n", icache_status() ? "ON" : "OFF");
- printf("\t\tDcache:%s\n", dcache_status() ? "ON" : "OFF");
- printf("\tU-Boot Start:0x%08x\n", CONFIG_SYS_TEXT_BASE);
-
-#if defined(CONFIG_CMD_FLASH)
- puts("Flash: ");
- bd->bi_flashstart = CONFIG_SYS_FLASH_BASE;
- flash_size = flash_init();
- if (bd->bi_flashstart && flash_size > 0) {
-# ifdef CONFIG_SYS_FLASH_CHECKSUM
- print_size(flash_size, "");
- /*
- * Compute and print flash CRC if flashchecksum is set to 'y'
- *
- * NOTE: Maybe we should add some WATCHDOG_RESET()? XXX
- */
- if (getenv_yesno("flashchecksum") == 1) {
- printf(" CRC: %08X",
- crc32(0, (const u8 *)bd->bi_flashstart,
- flash_size)
- );
- }
- putc('\n');
-# else /* !CONFIG_SYS_FLASH_CHECKSUM */
- print_size(flash_size, "\n");
-# endif /* CONFIG_SYS_FLASH_CHECKSUM */
- bd->bi_flashsize = flash_size;
- bd->bi_flashoffset = bd->bi_flashstart + flash_size;
- } else {
- puts("Flash init FAILED");
- bd->bi_flashstart = 0;
- bd->bi_flashsize = 0;
- bd->bi_flashoffset = 0;
- }
-#endif
-
-#ifdef CONFIG_SPI
- spi_init();
-#endif
-
- /* relocate environment function pointers etc. */
- env_relocate();
-
- /* Initialize stdio devices */
- stdio_init();
-
- /* Initialize the jump table for applications */
- jumptable_init();
-
- /* Initialize the console (after the relocation and devices init) */
- console_init_r();
-
- board_init();
-
- /* Initialize from environment */
- load_addr = getenv_ulong("loadaddr", 16, load_addr);
-
-#if defined(CONFIG_CMD_NET)
- printf("Net: ");
- eth_initialize(gd->bd);
-
- uchar enetaddr[6];
- eth_getenv_enetaddr("ethaddr", enetaddr);
- printf("MAC: %pM\n", enetaddr);
-#endif
-
- /* main_loop */
- for (;;) {
- WATCHDOG_RESET();
- main_loop();
- }
-#endif /* CONFIG_SPL_BUILD */
-}
diff --git a/qemu/roms/u-boot/arch/microblaze/lib/bootm.c b/qemu/roms/u-boot/arch/microblaze/lib/bootm.c
deleted file mode 100644
index d60b307f6..000000000
--- a/qemu/roms/u-boot/arch/microblaze/lib/bootm.c
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * (C) Copyright 2007 Michal Simek
- * (C) Copyright 2004 Atmark Techno, Inc.
- *
- * Michal SIMEK <monstr@monstr.eu>
- * Yasushi SHOJI <yashi@atmark-techno.com>
- *
- * SPDX-License-Identifier: GPL-2.0+
- */
-
-#include <common.h>
-#include <command.h>
-#include <image.h>
-#include <u-boot/zlib.h>
-#include <asm/byteorder.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-int do_bootm_linux(int flag, int argc, char * const argv[],
- bootm_headers_t *images)
-{
- /* First parameter is mapped to $r5 for kernel boot args */
- void (*thekernel) (char *, ulong, ulong);
- char *commandline = getenv("bootargs");
- ulong rd_data_start, rd_data_end;
-
- /*
- * allow the PREP bootm subcommand, it is required for bootm to work
- */
- if (flag & BOOTM_STATE_OS_PREP)
- return 0;
-
- if ((flag != 0) && (flag != BOOTM_STATE_OS_GO))
- return 1;
-
- int ret;
-
- char *of_flat_tree = NULL;
-#if defined(CONFIG_OF_LIBFDT)
- /* did generic code already find a device tree? */
- if (images->ft_len)
- of_flat_tree = images->ft_addr;
-#endif
-
- thekernel = (void (*)(char *, ulong, ulong))images->ep;
-
- /* find ramdisk */
- ret = boot_get_ramdisk(argc, argv, images, IH_ARCH_MICROBLAZE,
- &rd_data_start, &rd_data_end);
- if (ret)
- return 1;
-
- bootstage_mark(BOOTSTAGE_ID_RUN_OS);
-
- if (!of_flat_tree && argc > 1)
- of_flat_tree = (char *)simple_strtoul(argv[1], NULL, 16);
-
- /* fixup the initrd now that we know where it should be */
- if (images->rd_start && images->rd_end && of_flat_tree)
- ret = fdt_initrd(of_flat_tree, images->rd_start,
- images->rd_end, 1);
- if (ret)
- return 1;
-
-#ifdef DEBUG
- printf("## Transferring control to Linux (at address 0x%08lx) ",
- (ulong)thekernel);
- printf("ramdisk 0x%08lx, FDT 0x%08lx...\n",
- rd_data_start, (ulong) of_flat_tree);
-#endif
-
-#ifdef XILINX_USE_DCACHE
- flush_cache(0, XILINX_DCACHE_BYTE_SIZE);
-#endif
- /*
- * Linux Kernel Parameters (passing device tree):
- * r5: pointer to command line
- * r6: pointer to ramdisk
- * r7: pointer to the fdt, followed by the board info data
- */
- thekernel(commandline, rd_data_start, (ulong)of_flat_tree);
- /* does not return */
-
- return 1;
-}
diff --git a/qemu/roms/u-boot/arch/microblaze/lib/muldi3.c b/qemu/roms/u-boot/arch/microblaze/lib/muldi3.c
deleted file mode 100644
index 5c1a1541c..000000000
--- a/qemu/roms/u-boot/arch/microblaze/lib/muldi3.c
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * U-boot - muldi3.c contains routines for mult and div
- *
- *
- * SPDX-License-Identifier: GPL-2.0+
- */
-
-/* Generic function got from GNU gcc package, libgcc2.c */
-#ifndef SI_TYPE_SIZE
-#define SI_TYPE_SIZE 32
-#endif
-#define __ll_B (1L << (SI_TYPE_SIZE / 2))
-#define __ll_lowpart(t) ((USItype) (t) % __ll_B)
-#define __ll_highpart(t) ((USItype) (t) / __ll_B)
-#define BITS_PER_UNIT 8
-
-#if !defined(umul_ppmm)
-#define umul_ppmm(w1, w0, u, v) \
- do { \
- USItype __x0, __x1, __x2, __x3; \
- USItype __ul, __vl, __uh, __vh; \
- \
- __ul = __ll_lowpart(u); \
- __uh = __ll_highpart(u); \
- __vl = __ll_lowpart(v); \
- __vh = __ll_highpart(v); \
- \
- __x0 = (USItype) __ul * __vl; \
- __x1 = (USItype) __ul * __vh; \
- __x2 = (USItype) __uh * __vl; \
- __x3 = (USItype) __uh * __vh; \
- \
- __x1 += __ll_highpart(__x0); /* this can't give carry */\
- __x1 += __x2; /* but this indeed can */ \
- if (__x1 < __x2) /* did we get it? */ \
- __x3 += __ll_B; /* yes, add it in the proper pos. */ \
- \
- (w1) = __x3 + __ll_highpart(__x1); \
- (w0) = __ll_lowpart(__x1) * __ll_B + __ll_lowpart(__x0);\
- } while (0)
-#endif
-
-#if !defined(__umulsidi3)
-#define __umulsidi3(u, v) \
- ({DIunion __w; \
- umul_ppmm(__w.s.high, __w.s.low, u, v); \
- __w.ll; })
-#endif
-
-typedef unsigned int USItype __attribute__ ((mode(SI)));
-typedef int SItype __attribute__ ((mode(SI)));
-typedef int DItype __attribute__ ((mode(DI)));
-typedef int word_type __attribute__ ((mode(__word__)));
-
-struct DIstruct {
- SItype low, high;
-};
-typedef union {
- struct DIstruct s;
- DItype ll;
-} DIunion;
-
-DItype __muldi3(DItype u, DItype v)
-{
- DIunion w;
- DIunion uu, vv;
-
- uu.ll = u, vv.ll = v;
- /* panic("kernel panic for __muldi3"); */
- w.ll = __umulsidi3(uu.s.low, vv.s.low);
- w.s.high += ((USItype) uu.s.low * (USItype) vv.s.high
- + (USItype) uu.s.high * (USItype) vv.s.low);
-
- return w.ll;
-}