|
Message
From: cvs at opencores.org<cvs@o...>
Date: Tue Dec 20 12:28:14 CET 2005
Subject: [cvs-checkins] MODIFIED: or1k ...
Date: 00/05/12 20:12:28 Added: or1k/rc203soc/sw/uClinux/include/asm-armnommu/arch-rpc a.out.h dma.h hardware.h io.h irq.h irqs.h mmap.h mmu.h oldlatches.h processor.h serial.h shmparam.h system.h time.h uncompress.h Log: First Import of RC20x uClinux Revision Changes Path 1.1 or1k/rc203soc/sw/uClinux/include/asm-armnommu/arch-rpc/a.out.h http://www.opencores.org/cvsweb.shtml/or1k/rc203soc/sw/uClinux/include/asm-armnommu/arch-rpc/a.out.h?rev=1.1&content-type=text/x-cvsweb-markup Index: a.out.h =================================================================== /* * linux/include/asm-arm/arch-rpc/a.out.h * * Copyright (C) 1996 Russell King */ #ifndef __ASM_ARCH_A_OUT_H #define __ASM_ARCH_A_OUT_H #ifdef __KERNEL__ #define STACK_TOP ((current->personality==PER_LINUX_32BIT)? 0xc0000000 : 0x04000000) #define LIBRARY_START_TEXT (0x00c00000) #endif #endif 1.1 or1k/rc203soc/sw/uClinux/include/asm-armnommu/arch-rpc/dma.h http://www.opencores.org/cvsweb.shtml/or1k/rc203soc/sw/uClinux/include/asm-armnommu/arch-rpc/dma.h?rev=1.1&content-type=text/x-cvsweb-markup Index: dma.h =================================================================== #ifndef __ASM_ARCH_DMA_H #define __ASM_ARCH_DMA_H /* * This is the maximum DMA address that can be DMAd to. * There should not be more than (0xd0000000 - 0xc0000000) * bytes of RAM. */ #define MAX_DMA_ADDRESS 0xd0000000 /* * DMA modes - we have two, IN and OUT */ typedef enum { DMA_MODE_READ, DMA_MODE_WRITE } dmamode_t; #define MAX_DMA_CHANNELS 8 #define DMA_0 0 #define DMA_1 1 #define DMA_2 2 #define DMA_3 3 #define DMA_S0 4 #define DMA_S1 5 #define DMA_VIRTUAL_FLOPPY 6 #define DMA_VIRTUAL_SOUND 7 #define DMA_FLOPPY DMA_VIRTUAL_FLOPPY #endif /* _ASM_ARCH_DMA_H */ 1.1 or1k/rc203soc/sw/uClinux/include/asm-armnommu/arch-rpc/hardware.h http://www.opencores.org/cvsweb.shtml/or1k/rc203soc/sw/uClinux/include/asm-armnommu/arch-rpc/hardware.h?rev=1.1&content-type=text/x-cvsweb-markup Index: hardware.h =================================================================== /* * linux/include/asm-arm/arch-rpc/hardware.h * * Copyright (C) 1996 Russell King. * * This file contains the hardware definitions of the RiscPC series machines. */ #ifndef __ASM_ARCH_HARDWARE_H #define __ASM_ARCH_HARDWARE_H /* * What hardware must be present */ #define HAS_IOMD #define HAS_VIDC20 /* Hardware addresses of major areas. * *_START is the physical address
* *_SIZE is the size of the region
* *_BASE is the virtual address
*/
#define RAM_SIZE 0x10000000
#define RAM_START 0x10000000
#define EASI_SIZE 0x08000000 /* EASI I/O */
#define EASI_START 0x08000000
#define EASI_BASE 0xe5000000
#define IO_START 0x03000000 /* I/O */
#define IO_SIZE 0x01000000
#define IO_BASE 0xe0000000
#define SCREEN_START 0x02000000 /* VRAM */
#define SCREEN2_END 0xe0000000
#define SCREEN2_BASE 0xd8000000
#define SCREEN1_END 0xd8000000
#define SCREEN1_BASE 0xd0000000
#ifndef __ASSEMBLER__
/*
* for use with inb/outb
*/
#define IO_VIDC_AUDIO_BASE 0x80140000
#define IO_VIDC_BASE 0x80100000
#define IO_IOMD_BASE 0x80080000
#define IO_EC_EASI_BASE 0x81400000
#define IO_EC_IOC4_BASE 0x8009c000
#define IO_EC_IOC_BASE 0x80090000
#define IO_EC_MEMC8_BASE 0x8000ac00
#define IO_EC_MEMC_BASE 0x80000000
/*
* IO definitions
*/
#define EXPMASK_BASE ((volatile unsigned char *)0xe0360000)
#define IOEB_BASE ((volatile unsigned char *)0xe0350050)
#define IOC_BASE ((volatile unsigned char *)0xe0200000)
#define PCIO_FLOPPYDMABASE ((volatile unsigned char *)0xe002a000)
#define PCIO_BASE 0xe0010000
/*
* Offsets from RAM base
*/
#define PARAMS_OFFSET 0x0100
#define KERNEL_OFFSET 0x8000
/*
* RAM definitions
*/
#define MAPTOPHYS(x) (x)
#define KERNTOPHYS(x) ((unsigned long)(&x))
#define GET_MEMORY_END(p) (PAGE_OFFSET + p->u1.s.page_size * \
(p->u1.s.pages_in_bank[0] + \
p->u1.s.pages_in_bank[1] + \
p->u1.s.pages_in_bank[2] + \
p->u1.s.pages_in_bank[3]))
#define KERNEL_BASE (PAGE_OFFSET + KERNEL_OFFSET)
#define PARAMS_BASE (PAGE_OFFSET + PARAMS_OFFSET)
#define Z_PARAMS_BASE (RAM_START + PARAMS_OFFSET)
#define SAFE_ADDR 0x00000000 /* ROM */
#else
#define VIDC_SND_BASE 0xe0500000
#define VIDC_BASE 0xe0400000
#define IOMD_BASE 0xe0200000
#define IOC_BASE 0xe0200000
#define PCIO_FLOPPYDMABASE 0xe002a000
#define PCIO_BASE 0xe0010000
#define IO_BASE 0xe0000000
#endif
#endif
1.1 or1k/rc203soc/sw/uClinux/include/asm-armnommu/arch-rpc/io.h
http://www.opencores.org/cvsweb.shtml/or1k/rc203soc/sw/uClinux/include/asm-armnommu/arch-rpc/io.h?rev=1.1&content-type=text/x-cvsweb-markup
Index: io.h
===================================================================
/*
* linux/include/asm-arm/arch-rpc/io.h
*
* Copyright (C) 1997 Russell King
*
* Modifications:
* 06-Dec-1997 RMK Created.
*/
#ifndef __ASM_ARM_ARCH_IO_H
#define __ASM_ARM_ARCH_IO_H
/*
* This architecture does not require any delayed IO, and
* has the constant-optimised IO
*/
#undef ARCH_IO_DELAY
/*
* We use two different types of addressing - PC style addresses, and ARM
* addresses. PC style accesses the PC hardware with the normal PC IO
* addresses, eg 0x3f8 for serial#1. ARM addresses are 0x80000000+
* and are translated to the start of IO. Note that all addresses are
* shifted left!
*/
#define __PORT_PCIO(x) (!((x) & 0x80000000))
/*
* Dynamic IO functions - let the compiler
* optimize the expressions
*/
extern __inline__ void __outb (unsigned int value, unsigned int port)
{
unsigned long temp;
__asm__ __volatile__(
"tst %2, #0x80000000\n\t"
"mov %0, %4\n\t"
"addeq %0, %0, %3\n\t"
"strb %1, [%0, %2, lsl #2]"
: "=&r" (temp)
: "r" (value), "r" (port), "Ir" (PCIO_BASE - IO_BASE), "Ir" (IO_BASE)
: "cc");
}
extern __inline__ void __outw (unsigned int value, unsigned int port)
{
unsigned long temp;
__asm__ __volatile__(
"tst %2, #0x80000000\n\t"
"mov %0, %4\n\t"
"addeq %0, %0, %3\n\t"
"str %1, [%0, %2, lsl #2]"
: "=&r" (temp)
: "r" (value|value<<16), "r" (port), "Ir" (PCIO_BASE - IO_BASE), "Ir" (IO_BASE)
: "cc");
}
extern __inline__ void __outl (unsigned int value, unsigned int port)
{
unsigned long temp;
__asm__ __volatile__(
"tst %2, #0x80000000\n\t"
"mov %0, %4\n\t"
"addeq %0, %0, %3\n\t"
"str %1, [%0, %2, lsl #2]"
: "=&r" (temp)
: "r" (value), "r" (port), "Ir" (PCIO_BASE - IO_BASE), "Ir" (IO_BASE)
: "cc");
}
#define DECLARE_DYN_IN(sz,fnsuffix,instr) \
extern __inline__ unsigned sz __in##fnsuffix (unsigned int port) \
{ \
unsigned long temp, value; \
__asm__ __volatile__( \
"tst %2, #0x80000000\n\t" \
"mov %0, %4\n\t" \
"addeq %0, %0, %3\n\t" \
"ldr" ##instr## " %1, [%0, %2, lsl #2]" \
: "=&r" (temp), "=r" (value) \
: "r" (port), "Ir" (PCIO_BASE - IO_BASE), "Ir" (IO_BASE) \
: "cc"); \
return (unsigned sz)value; \
}
extern __inline__ unsigned int __ioaddr (unsigned int port) \
{ \
if (__PORT_PCIO(port)) \
return (unsigned int)(PCIO_BASE + (port << 2)); \
else \
return (unsigned int)(IO_BASE + (port << 2)); \
}
DECLARE_DYN_IN(char,b,"b")
DECLARE_DYN_IN(short,w,"")
DECLARE_DYN_IN(long,l,"")
#undef DECLARE_DYN_IN
/*
* Constant address IO functions
*
* These have to be macros for the 'J' constraint to work -
* +/-4096 immediate operand.
*/
#define __outbc(value,port) \
({ \
if (__PORT_PCIO((port))) \
__asm__ __volatile__( \
"strb %0, [%1, %2]" \
: : "r" (value), "r" (PCIO_BASE), "Jr" ((port) << 2)); \
else \
__asm__ __volatile__( \
"strb %0, [%1, %2]" \
: : "r" (value), "r" (IO_BASE), "r" ((port) << 2)); \
})
#define __inbc(port) \
({ \
unsigned char result; \
if (__PORT_PCIO((port))) \
__asm__ __volatile__( \
"ldrb %0, [%1, %2]" \
: "=r" (result) : "r" (PCIO_BASE), "Jr" ((port) << 2)); \
else \
__asm__ __volatile__( \
"ldrb %0, [%1, %2]" \
: "=r" (result) : "r" (IO_BASE), "r" ((port) << 2)); \
result; \
})
#define __outwc(value,port) \
({ \
unsigned long v = value; \
if (__PORT_PCIO((port))) \
__asm__ __volatile__( \
"str %0, [%1, %2]" \
: : "r" (v|v<<16), "r" (PCIO_BASE), "Jr" ((port) << 2)); \
else \
__asm__ __volatile__( \
"str %0, [%1, %2]" \
: : "r" (v|v<<16), "r" (IO_BASE), "r" ((port) << 2)); \
})
#define __inwc(port) \
({ \
unsigned short result; \
if (__PORT_PCIO((port))) \
__asm__ __volatile__( \
"ldr %0, [%1, %2]" \
: "=r" (result) : "r" (PCIO_BASE), "Jr" ((port) << 2)); \
else \
__asm__ __volatile__( \
"ldr %0, [%1, %2]" \
: "=r" (result) : "r" (IO_BASE), "r" ((port) << 2)); \
result & 0xffff; \
})
#define __outlc(value,port) \
({ \
unsigned long v = value; \
if (__PORT_PCIO((port))) \
__asm__ __volatile__( \
"str %0, [%1, %2]" \
: : "r" (v), "r" (PCIO_BASE), "Jr" ((port) << 2)); \
else \
__asm__ __volatile__( \
"str %0, [%1, %2]" \
: : "r" (v), "r" (IO_BASE), "r" ((port) << 2)); \
})
#define __inlc(port) \
({ \
unsigned long result; \
if (__PORT_PCIO((port))) \
__asm__ __volatile__( \
"ldr %0, [%1, %2]" \
: "=r" (result) : "r" (PCIO_BASE), "Jr" ((port) << 2)); \
else \
__asm__ __volatile__( \
"ldr %0, [%1, %2]" \
: "=r" (result) : "r" (IO_BASE), "r" ((port) << 2)); \
result; \
})
#define __ioaddrc(port) \
({ \
unsigned long addr; \
if (__PORT_PCIO((port))) \
addr = PCIO_BASE + ((port) << 2); \
else \
addr = IO_BASE + ((port) << 2); \
addr; \
})
/*
* Translated address IO functions
*
* IO address has already been translated to a virtual address
*/
#define outb_t(v,p) \
(*(volatile unsigned char *)(p) = (v))
#define inb_t(p) \
(*(volatile unsigned char *)(p))
#define outl_t(v,p) \
(*(volatile unsigned long *)(p) = (v))
#define inl_t(p) \
(*(volatile unsigned long *)(p))
#endif
1.1 or1k/rc203soc/sw/uClinux/include/asm-armnommu/arch-rpc/irq.h
http://www.opencores.org/cvsweb.shtml/or1k/rc203soc/sw/uClinux/include/asm-armnommu/arch-rpc/irq.h?rev=1.1&content-type=text/x-cvsweb-markup
Index: irq.h
===================================================================
/*
* include/asm-arm/arch-rpc/irq.h
*
* Copyright (C) 1996 Russell King
*
* Changelog:
* 10-10-1996 RMK Brought up to date with arch-sa110eval
*/
#define BUILD_IRQ(s,n,m) \
void IRQ##n##_interrupt(void); \
void fast_IRQ##n##_interrupt(void); \
void bad_IRQ##n##_interrupt(void); \
void probe_IRQ##n##_interrupt(void);
/*
* The timer is a special interrupt
*/
#define IRQ5_interrupt timer_IRQ_interrupt
#define IRQ_INTERRUPT(n) IRQ##n##_interrupt
#define FAST_INTERRUPT(n) fast_IRQ##n##_interrupt
#define BAD_INTERRUPT(n) bad_IRQ##n##_interrupt
#define PROBE_INTERRUPT(n) probe_IRQ##n##_interrupt
static __inline__ void mask_irq(unsigned int irq)
{
extern void ecard_disableirq (unsigned int);
extern void ecard_disablefiq (unsigned int);
unsigned char mask = 1 << (irq & 7);
switch (irq >> 3) {
case 0:
outb(inb(IOMD_IRQMASKA) & ~mask, IOMD_IRQMASKA);
break;
case 1:
outb(inb(IOMD_IRQMASKB) & ~mask, IOMD_IRQMASKB);
break;
case 2:
outb(inb(IOMD_DMAMASK) & ~mask, IOMD_DMAMASK);
break;
case 4:
ecard_disableirq (irq & 7);
break;
case 8:
outb(inb(IOMD_FIQMASK) & ~mask, IOMD_FIQMASK);
break;
case 12:
ecard_disablefiq (irq & 7);
}
}
static __inline__ void unmask_irq(unsigned int irq)
{
extern void ecard_enableirq (unsigned int);
extern void ecard_enablefiq (unsigned int);
unsigned char mask = 1 << (irq & 7);
switch (irq >> 3) {
case 0:
outb(inb(IOMD_IRQMASKA) | mask, IOMD_IRQMASKA);
break;
case 1:
outb(inb(IOMD_IRQMASKB) | mask, IOMD_IRQMASKB);
break;
case 2:
outb(inb(IOMD_DMAMASK) | mask, IOMD_DMAMASK);
break;
case 4:
ecard_enableirq (irq & 7);
break;
case 8:
outb(inb(IOMD_FIQMASK) | mask, IOMD_FIQMASK);
break;
case 12:
ecard_enablefiq (irq & 7);
}
}
static __inline__ unsigned long get_enabled_irqs(void)
{
return inb(IOMD_IRQMASKA) | inb(IOMD_IRQMASKB) << 8 | inb(IOMD_DMAMASK) << 16;
}
static __inline__ void irq_init_irq(void)
{
outb(0, IOMD_IRQMASKA);
outb(0, IOMD_IRQMASKB);
outb(0, IOMD_FIQMASK);
outb(0, IOMD_DMAMASK);
outb(0, IOMD_IO0CR);
outb(0, IOMD_IO1CR);
outb(0, IOMD_IO2CR);
outb(0, IOMD_IO3CR);
}
1.1 or1k/rc203soc/sw/uClinux/include/asm-armnommu/arch-rpc/irqs.h
http://www.opencores.org/cvsweb.shtml/or1k/rc203soc/sw/uClinux/include/asm-armnommu/arch-rpc/irqs.h?rev=1.1&content-type=text/x-cvsweb-markup
Index: irqs.h
===================================================================
/*
* linux/include/asm-arm/arch-a5k/irqs.h
*
* Copyright (C) 1996 Russell King
*/
#define IRQ_PRINTER 0
#define IRQ_BATLOW 1
#define IRQ_FLOPPYINDEX 2
#define IRQ_VSYNCPULSE 3
#define IRQ_POWERON 4
#define IRQ_TIMER0 5
#define IRQ_TIMER1 6
#define IRQ_IMMEDIATE 7
#define IRQ_EXPCARDFIQ 8
#define IRQ_SOUNDCHANGE 9
#define IRQ_SERIALPORT 10
#define IRQ_HARDDISK 11
#define IRQ_FLOPPYDISK 12
#define IRQ_EXPANSIONCARD 13
#define IRQ_KEYBOARDTX 14
#define IRQ_KEYBOARDRX 15
#define IRQ_DMA0 16
#define IRQ_DMA1 17
#define IRQ_DMA2 18
#define IRQ_DMA3 19
#define IRQ_DMAS0 20
#define IRQ_DMAS1 21
#define FIQ_FLOPPYDATA 0
#define FIQ_ECONET 2
#define FIQ_SERIALPORT 4
#define FIQ_EXPANSIONCARD 6
#define FIQ_FORCE 7
1.1 or1k/rc203soc/sw/uClinux/include/asm-armnommu/arch-rpc/mmap.h
http://www.opencores.org/cvsweb.shtml/or1k/rc203soc/sw/uClinux/include/asm-armnommu/arch-rpc/mmap.h?rev=1.1&content-type=text/x-cvsweb-markup
Index: mmap.h
===================================================================
/*
* linux/include/asm-arm/arch-rpc/mmap.h
*
* Copyright (C) 1996 Russell King
*/
#define HAVE_MAP_VID_MEM
#define SAFE_ADDR 0x00000000 /* ROM */
unsigned long map_screen_mem(unsigned long log_start, unsigned long kmem, int update)
{
static int updated = 0;
unsigned long address;
pgd_t *pgd;
if (updated)
return 0;
updated = update;
address = SCREEN_START | PMD_TYPE_SECT | PMD_DOMAIN(DOMAIN_KERNEL) | PMD_SECT_AP_WRITE;
pgd = swapper_pg_dir + (SCREEN2_BASE >> PGDIR_SHIFT);
pgd_val(pgd[0]) = address;
pgd_val(pgd[1]) = address + (1 << PGDIR_SHIFT);
if (update) {
unsigned long pgtable = PAGE_ALIGN(kmem), *p;
int i;
memzero ((void *)pgtable, 4096);
pgd_val(pgd[-2]) = __virt_to_phys(pgtable) | PMD_TYPE_TABLE | PMD_DOMAIN(DOMAIN_KERNEL);
pgd_val(pgd[-1]) = __virt_to_phys(pgtable + PTRS_PER_PTE*4) | PMD_TYPE_TABLE | PMD_DOMAIN(DOMAIN_KERNEL);
p = (unsigned long *)pgtable;
i = PTRS_PER_PTE * 2 - ((SCREEN1_END - log_start) >> PAGE_SHIFT);
address = SCREEN_START | PTE_TYPE_SMALL | PTE_AP_WRITE;
while (i < PTRS_PER_PTE * 2) {
p[i++] = address;
address += PAGE_SIZE;
}
flush_page_to_ram(pgtable);
kmem = pgtable + PAGE_SIZE;
}
return kmem;
}
1.1 or1k/rc203soc/sw/uClinux/include/asm-armnommu/arch-rpc/mmu.h
http://www.opencores.org/cvsweb.shtml/or1k/rc203soc/sw/uClinux/include/asm-armnommu/arch-rpc/mmu.h?rev=1.1&content-type=text/x-cvsweb-markup
Index: mmu.h
===================================================================
/*
* linux/include/asm-arm/arch-rpc/mmu.h
*
* Copyright (c) 1996,1997,1998 Russell King.
*
* Changelog:
* 20-10-1996 RMK Created
* 31-12-1997 RMK Fixed definitions to reduce warnings
* 11-01-1998 RMK Uninlined to reduce hits on cache
* 08-02-1998 RMK Added __virt_to_bus and __bus_to_virt
*/
#ifndef __ASM_ARCH_MMU_H
#define __ASM_ARCH_MMU_H
extern unsigned long __virt_to_phys(unsigned long vpage);
extern unsigned long __phys_to_virt(unsigned long ppage);
/*
* These are exactly the same on the RiscPC as the
* physical memory view.
*/
#define __virt_to_bus__is_a_macro
#define __virt_to_bus(x) __virt_to_phys(x)
#define __bus_to_virt__is_a_macro
#define __bus_to_virt(x) __phys_to_virt(x)
#endif
1.1 or1k/rc203soc/sw/uClinux/include/asm-armnommu/arch-rpc/oldlatches.h
http://www.opencores.org/cvsweb.shtml/or1k/rc203soc/sw/uClinux/include/asm-armnommu/arch-rpc/oldlatches.h?rev=1.1&content-type=text/x-cvsweb-markup
Index: oldlatches.h
===================================================================
/*
* Dummy oldlatches.h
*
* Copyright (C) 1996 Russell King
*/
#ifdef __need_oldlatches
#error "Old latches not present in this (rpc) machine"
#endif
1.1 or1k/rc203soc/sw/uClinux/include/asm-armnommu/arch-rpc/processor.h
http://www.opencores.org/cvsweb.shtml/or1k/rc203soc/sw/uClinux/include/asm-armnommu/arch-rpc/processor.h?rev=1.1&content-type=text/x-cvsweb-markup
Index: processor.h
===================================================================
/*
* linux/include/asm-arm/arch-rpc/processor.h
*
* Copyright (c) 1996 Russell King.
*
* Changelog:
* 10-09-1996 RMK Created
*/
#ifndef __ASM_ARCH_PROCESSOR_H
#define __ASM_ARCH_PROCESSOR_H
/*
* Bus types
*/
#define EISA_bus 0
#define EISA_bus__is_a_macro /* for versions in ksyms.c */
#define MCA_bus 0
#define MCA_bus__is_a_macro /* for versions in ksyms.c */
/*
* User space: 3GB
*/
#define TASK_SIZE (0xc0000000UL)
#define INIT_MMAP { &init_mm, 0xc0000000, 0xc2000000, PAGE_SHARED, VM_READ | VM_WRITE | VM_EXEC }
#endif
1.1 or1k/rc203soc/sw/uClinux/include/asm-armnommu/arch-rpc/serial.h
http://www.opencores.org/cvsweb.shtml/or1k/rc203soc/sw/uClinux/include/asm-armnommu/arch-rpc/serial.h?rev=1.1&content-type=text/x-cvsweb-markup
Index: serial.h
===================================================================
/*
* linux/include/asm-arm/arch-rpc/serial.h
*
* Copyright (c) 1996 Russell King.
*
* Changelog:
* 15-10-1996 RMK Created
*/
#ifndef __ASM_ARCH_SERIAL_H
#define __ASM_ARCH_SERIAL_H
/*
* This assumes you have a 1.8432 MHz clock for your UART.
*
* It'd be nice if someone built a serial card with a 24.576 MHz
* clock, since the 16550A is capable of handling a top speed of 1.5
* megabits/second; but this requires the faster clock.
*/
#define BASE_BAUD (1843200 / 16)
#define STD_COM_FLAGS (ASYNC_BOOT_AUTOCONF | ASYNC_SKIP_TEST)
/* UART CLK PORT IRQ FLAGS */
#define RS_UARTS \
{ 0, BASE_BAUD, 0x3F8, 10, STD_COM_FLAGS }, /* ttyS0 */ \
{ 0, BASE_BAUD, 0x2F8, 10, STD_COM_FLAGS }, /* ttyS1 */ \
{ 0, BASE_BAUD, 0 , 0, STD_COM_FLAGS }, /* ttyS2 */ \
{ 0, BASE_BAUD, 0 , 0, STD_COM_FLAGS }, /* ttyS3 */ \
{ 0, BASE_BAUD, 0 , 0, STD_COM_FLAGS }, /* ttyS4 */ \
{ 0, BASE_BAUD, 0 , 0, STD_COM_FLAGS }, /* ttyS5 */ \
{ 0, BASE_BAUD, 0 , 0, STD_COM_FLAGS }, /* ttyS6 */ \
{ 0, BASE_BAUD, 0 , 0, STD_COM_FLAGS }, /* ttyS7 */ \
{ 0, BASE_BAUD, 0 , 0, STD_COM_FLAGS }, /* ttyS8 */ \
{ 0, BASE_BAUD, 0 , 0, STD_COM_FLAGS }, /* ttyS9 */ \
{ 0, BASE_BAUD, 0 , 0, STD_COM_FLAGS }, /* ttyS10 */ \
{ 0, BASE_BAUD, 0 , 0, STD_COM_FLAGS }, /* ttyS11 */ \
{ 0, BASE_BAUD, 0 , 0, STD_COM_FLAGS }, /* ttyS12 */ \
{ 0, BASE_BAUD, 0 , 0, STD_COM_FLAGS }, /* ttyS13 */
#endif
1.1 or1k/rc203soc/sw/uClinux/include/asm-armnommu/arch-rpc/shmparam.h
http://www.opencores.org/cvsweb.shtml/or1k/rc203soc/sw/uClinux/include/asm-armnommu/arch-rpc/shmparam.h?rev=1.1&content-type=text/x-cvsweb-markup
Index: shmparam.h
===================================================================
/*
* linux/include/asm-arm/arch-rpc/shmparam.h
*
* Copyright (c) 1996 Russell King.
*/
1.1 or1k/rc203soc/sw/uClinux/include/asm-armnommu/arch-rpc/system.h
http://www.opencores.org/cvsweb.shtml/or1k/rc203soc/sw/uClinux/include/asm-armnommu/arch-rpc/system.h?rev=1.1&content-type=text/x-cvsweb-markup
Index: system.h
===================================================================
/*
* linux/include/asm-arm/arch-rpc/system.h
*
* Copyright (c) 1996 Russell King
*/
#ifndef __ASM_ARCH_SYSTEM_H
#define __ASM_ARCH_SYSTEM_H
#include <asm/proc-fns.h>
#define arch_hard_reset() { \
extern void ecard_reset (int card); \
outb (0, IOMD_ROMCR0); \
ecard_reset (-1); \
cli(); \
__asm__ __volatile__("msr spsr, r1;" \
"mcr p15, 0, %0, c1, c0, 0;" \
"movs pc, #0" \
: \
: "r" (processor.u.armv3v4.reset())); \
}
#endif
1.1 or1k/rc203soc/sw/uClinux/include/asm-armnommu/arch-rpc/time.h
http://www.opencores.org/cvsweb.shtml/or1k/rc203soc/sw/uClinux/include/asm-armnommu/arch-rpc/time.h?rev=1.1&content-type=text/x-cvsweb-markup
Index: time.h
===================================================================
/*
* linux/include/asm-arm/arch-rpc/time.h
*
* Copyright (c) 1996 Russell King.
*
* Changelog:
* 24-Sep-1996 RMK Created
* 10-Oct-1996 RMK Brought up to date with arch-sa110eval
* 04-Dec-1997 RMK Updated for new arch/arm/time.c
*/
extern __inline__ unsigned long gettimeoffset (void)
{
unsigned long offset = 0;
unsigned int count1, count2, status1, status2;
status1 = IOMD_IRQREQA;
barrier ();
outb(0, IOMD_T0LATCH);
barrier ();
count1 = inb(IOMD_T0CNTL) | (inb(IOMD_T0CNTH) << 8);
barrier ();
status2 = inb(IOMD_IRQREQA);
barrier ();
outb(0, IOMD_T0LATCH);
barrier ();
count2 = inb(IOMD_T0CNTL) | (inb(IOMD_T0CNTH) << 8);
if (count2 < count1) {
/*
* This means that we haven't just had an interrupt
* while reading into status2.
*/
if (status2 & (1 << 5))
offset = tick;
count1 = count2;
} else if (count2 > count1) {
/*
* We have just had another interrupt while reading
* status2.
*/
offset += tick;
count1 = count2;
}
count1 = LATCH - count1;
/*
* count1 = number of clock ticks since last interrupt
*/
offset += count1 * tick / LATCH;
return offset;
}
/*
* No need to reset the timer at every irq
*/
#define reset_timer() 1
/*
* Updating of the RTC. We don't currently write the time to the
* CMOS clock.
*/
#define update_rtc()
/*
* Set up timer interrupt, and return the current time in seconds.
*/
extern __inline__ unsigned long setup_timer (void)
{
extern int iic_control (unsigned char, int, char *, int);
unsigned int year, mon, day, hour, min, sec;
char buf[8];
outb(LATCH & 255, IOMD_T0LTCHL);
outb(LATCH >> 8, IOMD_T0LTCHH);
outb(0, IOMD_T0GO);
iic_control (0xa0, 0xc0, buf, 1);
year = buf[0];
if ((year += 1900) < 1970)
year += 100;
iic_control (0xa0, 2, buf, 5);
mon = buf[4] & 0x1f;
day = buf[3] & 0x3f;
hour = buf[2];
min = buf[1];
sec = buf[0];
BCD_TO_BIN(mon);
BCD_TO_BIN(day);
BCD_TO_BIN(hour);
BCD_TO_BIN(min);
BCD_TO_BIN(sec);
return mktime(year, mon, day, hour, min, sec);
}
1.1 or1k/rc203soc/sw/uClinux/include/asm-armnommu/arch-rpc/uncompress.h
http://www.opencores.org/cvsweb.shtml/or1k/rc203soc/sw/uClinux/include/asm-armnommu/arch-rpc/uncompress.h?rev=1.1&content-type=text/x-cvsweb-markup
Index: uncompress.h
===================================================================
/*
* linux/include/asm-arm/arch-a5k/uncompress.h
*
* Copyright (C) 1996 Russell King
*/
#define VIDMEM ((char *)SCREEN_START)
#include "../arch/arm/drivers/char/font.h"
#include <asm/hardware.h>
#include <asm/io.h>
int video_num_columns, video_num_lines, video_size_row;
int white, bytes_per_char_h;
extern unsigned long con_charconvtable[256];
struct param_struct {
unsigned long page_size;
unsigned long nr_pages;
unsigned long ramdisk_size;
unsigned long mountrootrdonly;
unsigned long rootdev;
unsigned long video_num_cols;
unsigned long video_num_rows;
unsigned long video_x;
unsigned long video_y;
unsigned long memc_control_reg;
unsigned char sounddefault;
unsigned char adfsdrives;
unsigned char bytes_per_char_h;
unsigned char bytes_per_char_v;
unsigned long unused[256/4-11];
};
static const unsigned long palette_4[16] = {
0x00000000,
0x000000cc,
0x0000cc00, /* Green */
0x0000cccc, /* Yellow */
0x00cc0000, /* Blue */
0x00cc00cc, /* Magenta */
0x00cccc00, /* Cyan */
0x00cccccc, /* White */
0x00000000,
0x000000ff,
0x0000ff00,
0x0000ffff,
0x00ff0000,
0x00ff00ff,
0x00ffff00,
0x00ffffff
};
#define palette_setpixel(p) *(unsigned long *)(IO_START+0x00400000) = 0x10000000|((p) & 255)
#define palette_write(v) *(unsigned long *)(IO_START+0x00400000) = 0x00000000|((v) & 0x00ffffff)
static struct param_struct * const params = (struct param_struct *)Z_PARAMS_BASE;
/*
* This does not append a newline
*/
static void puts(const char *s)
{
extern void ll_write_char(char *, unsigned long);
int x,y;
unsigned char c;
char *ptr;
x = params->video_x;
y = params->video_y;
while ( ( c = *(unsigned char *)s++ ) != '\0' ) {
if ( c == '\n' ) {
x = 0;
if ( ++y >= video_num_lines ) {
y--;
}
} else {
ptr = VIDMEM + ((y*video_num_columns*params->bytes_per_char_v+x)*bytes_per_char_h);
ll_write_char(ptr, c|(white<<8));
if ( ++x >= video_num_columns ) {
x = 0;
if ( ++y >= video_num_lines ) {
y--;
}
}
}
}
params->video_x = x;
params->video_y = y;
}
static void error(char *x);
/*
* Setup for decompression
*/
static void arch_decomp_setup(void)
{
int i;
video_num_lines = params->video_num_rows;
video_num_columns = params->video_num_cols;
bytes_per_char_h = params->bytes_per_char_h;
video_size_row = video_num_columns * bytes_per_char_h;
if (bytes_per_char_h == 4)
for (i = 0; i < 256; i++)
con_charconvtable[i] =
(i & 128 ? 1 << 0 : 0) |
(i & 64 ? 1 << 4 : 0) |
(i & 32 ? 1 << 8 : 0) |
(i & 16 ? 1 << 12 : 0) |
(i & 8 ? 1 << 16 : 0) |
(i & 4 ? 1 << 20 : 0) |
(i & 2 ? 1 << 24 : 0) |
(i & 1 ? 1 << 28 : 0);
else
for (i = 0; i < 16; i++)
con_charconvtable[i] =
(i & 8 ? 1 << 0 : 0) |
(i & 4 ? 1 << 8 : 0) |
(i & 2 ? 1 << 16 : 0) |
(i & 1 ? 1 << 24 : 0);
palette_setpixel(0);
if (bytes_per_char_h == 1) {
palette_write (0);
palette_write (0x00ffffff);
for (i = 2; i < 256; i++)
palette_write (0);
white = 1;
} else {
for (i = 0; i < 256; i++)
palette_write (i < 16 ? palette_4[i] : 0);
white = 7;
}
if (params->nr_pages * params->page_size < 4096*1024) error("<4M of mem\n");
}
|
 |