From: Michal Simek <monstr@seznam.cz>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-kernel@vger.kernel.org, arnd@arndb.de,
linux-arch@vger.kernel.org, stephen.neuendorffer@xilinx.com,
John.Linn@xilinx.com, john.williams@petalogix.com,
matthew@wil.cx, will.newton@gmail.com, drepper@redhat.com,
microblaze-uclinux@itee.uq.edu.au, grant.likely@secretlab.ca,
Michal Simek <monstr@monstr.eu>
Subject: Re: [PATCH 08/56] microblaze_v2: Interrupt handling, timer support, supported function
Date: Sun, 11 May 2008 15:55:20 +0200 [thread overview]
Message-ID: <4826FAC8.4010604@seznam.cz> (raw)
In-Reply-To: <alpine.LFD.1.10.0805070813160.3318@apollo.tec.linutronix.de>
Hi Thomas,
comments are below.
> Michal,
>
> On Sun, 4 May 2008, monstr@seznam.cz wrote:
>> From: Michal Simek <monstr@monstr.eu>
>
>> +/* NOTE
>> + * self-modified part of code for improvement of interrupt controller
>> + * save instruction in interrupt rutine
>> + */
>> +void function_hack(const int *arr_fce, const unsigned int base)
>> +{
>> + unsigned int flags = 0;
>
> no need to initialize flags
>
>> + unsigned int j, i;
>> + unsigned int *addr = NULL;
>
> Just a coding style nit:
>
> unsigned int i, j, flags, *addr = NULL;
>
> saves 2 lines of code :)
Saving lines are good. :-)
>> + local_irq_save(flags);
>> + __disable_icache();
>> +
>> + /* zero terminated array */
>> + for (j = 0; arr_fce[j] != 0; j++) {
>> + /* get start address of function */
>> + addr = (unsigned int *) arr_fce[j];
>> + pr_debug("%s: func(%d) at 0x%x\n",
>> + __func__, j, (unsigned int) addr);
>> + for (i = 0;; i++) {
>> + pr_debug("%s: instruction code at %d: 0x%x\n",
>> + __func__, i, addr[i]);
>> + if (addr[i] == 0xb0001234) {
>
> Please replace all those hex constants with proper named defines so
> the code becomes readable
I added some macros which I hope clear this code.
>> + /* detecting of lwi or swi instruction */
>> + if ((addr[i+1] & 0xec00ff00) == 0xe800ff00) {
>> + pr_debug("%s: curr instr, "
>> + "(%d):0x%x, "
>> + "next(%d):0x%x\n",
>> + __func__, i, addr[i], i+1,
>> + addr[i+1]);
>> + addr[i] = 0xb0000000 + (base >> 16);
>> + addr[i+1] = (addr[i+1] & 0xffff00ff) +
>> + (base & 0xffff);
>> + __invalidate_icache(addr[i]);
>> + __invalidate_icache(addr[i+1]);
>> + pr_debug("%s: hack instr, "
>> + "(%d):0x%x, "
>> + "next(%d):0x%x\n",
>> + __func__, i, addr[i], i+1,
>> + addr[i+1]);
>
> Please split this modification code out into a separate function. The
> same code is used below.
Add Macro.
>> + } else /* detection addik for ack */
>> + if ((addr[i+1] & 0xfc00ff00) == 0x3000ff00) {
>> + pr_debug("%s: curr instr, "
>> + "(%d):0x%x, "
>> + "next(%d):0x%x\n",
>> + __func__, i, addr[i], i+1,
>> + addr[i+1]);
>> + addr[i] = 0xb0000000 + (base >> 16);
>> + addr[i+1] = (addr[i+1] & 0xffff00ff) +
>> + (base & 0xffff);
>> + __invalidate_icache(addr[i]);
>> + __invalidate_icache(addr[i+1]);
>> + pr_debug("%s: hack instr, "
>> + "(%d):0x%x, "
>> + "next(%d):0x%x\n",
>> + __func__, i, addr[i], i+1,
>> + addr[i+1]);
>> + }
>
>> +#include <linux/init.h>
>> +#include <linux/irq.h>
>> +#include <linux/autoconf.h>
>> +#include <asm/page.h>
>> +#include <asm/io.h>
>> +
>> +#include <asm/prom.h>
>> +#include <asm/irq.h>
>> +
>> +#ifdef CONFIG_HACK
>> +#include <asm/hack.h>
>> +#else
>> +static unsigned int intc_baseaddr;
>> +#endif
>> +
>> +unsigned int NR_IRQ;
>
> Please use lower case for variables
fixed
>> +/* No one else should require these constants, so define them locally here. */
>> +#define ISR 0x00 /* Interrupt Status Register */
>> +#define IPR 0x04 /* Interrupt Pending Register */
>> +#define IER 0x08 /* Interrupt Enable Register */
>> +#define IAR 0x0c /* Interrupt Acknowledge Register */
>> +#define SIE 0x10 /* Set Interrupt Enable bits */
>> +#define CIE 0x14 /* Clear Interrupt Enable bits */
>> +#define IVR 0x18 /* Interrupt Vector Register */
>> +#define MER 0x1c /* Master Enable Register */
>> +
>> +#define MER_ME (1<<0)
>> +#define MER_HIE (1<<1)
>>
>>
>>
>> +static void intc_enable(unsigned int irq)
>> +{
>> + unsigned int mask = (0x00000001 << (irq & 31));
>> + pr_debug("enable: %d\n", irq);
>> +#ifdef CONFIG_HACK
>
> Please use a sensible name for that config switch and the constants
> (e.g. HACK_BASE_ADDR)
SELFMOD
>> + iowrite32(mask, HACK_BASE_ADDR + SIE);
>> +#else
>> + iowrite32(mask, intc_baseaddr + SIE);
>> +#endif
>
> Please create a macro for that instead of uglyfying each function with
> ifdeffery
>
> #ifdef CONFIG_XXXX
> # define INTC_BASE XXX_BASE_ADDR
> #else
> # define INTC_BASE intc_baseaddr
> #endif
>
> So now your functions reads simple:
>
> unsigned int mask = (0x00000001 << (irq & 31));
>
> iowrite32(mask, INTC_BASE_ADDR + SIE);
Fixed intc and timer functions
>> +}
>> +
>> +static void intc_disable(unsigned int irq)
>> +{
>> + unsigned long mask = (0x00000001 << (irq & 31));
>> + pr_debug("disable: %d\n", irq);
>> +#ifdef CONFIG_HACK
>> + iowrite32(mask, HACK_BASE_ADDR + CIE);
>> +#else
>> + iowrite32(mask, intc_baseaddr + CIE);
>> +#endif
>> +}
>> +
>> +static void intc_disable_and_ack(unsigned int irq)
>> +{
>> + unsigned long mask = (0x00000001 << (irq & 31));
>> + pr_debug("disable_and_ack: %d\n", irq);
>> +#ifdef CONFIG_HACK
>> + iowrite32(mask, HACK_BASE_ADDR + CIE);
>> + /* ack edge triggered intr */
>> + if (!(irq_desc[irq].status & IRQ_LEVEL))
>> + iowrite32(mask, HACK_BASE_ADDR + IAR);
>
> Please do not do that. Create two irq_chips one for level and one for
> edge with different implementations of the functions so you don't have
> to check for level/edge in the functions itself.
>
>> +
>> + for (i = 0; i < NR_IRQ; ++i) {
>> + irq_desc[i].chip = &intc_dev;
>> +
>> + if (handle & (0x00000001 << i))
>> + irq_desc[i].status &= ~IRQ_LEVEL;
>> + else
>> + irq_desc[i].status |= IRQ_LEVEL;
>> + }
>
> With two irq chips this would be:
>
> for (i = 0; i < NR_IRQ; ++i) {
> if (handle & (0x00000001 << i)) {
> set_irq_chip_and_handler(irq, &intc_edge, handle_edge_irq);
> irq_desc[i].status &= ~IRQ_LEVEL;
> } else {
> set_irq_chip_and_handler(irq, &intc_level, handle_level_irq);
> irq_desc[i].status |= IRQ_LEVEL;
> }
> }
Two chips - two levels.
>> +}
>> diff --git a/arch/microblaze/kernel/irq.c b/arch/microblaze/kernel/irq.c
>> new file mode 100644
>> index 0000000..4cd30aa
>> --- /dev/null
>> +++ b/arch/microblaze/kernel/irq.c
>> @@ -0,0 +1,100 @@
>> +/*
>> + * arch/microblaze/kernel/process.c
>
> Please remove those useless (and in this case even wrong) file names.
Removing from all Microblaze code.
>> +void do_IRQ(struct pt_regs *regs)
>> +{
>> + unsigned int irq;
>> +
>> + irq_enter();
>> + set_irq_regs(regs);
>> + irq = get_irq(regs);
>> + BUG_ON(irq == -1U);
>> + __do_IRQ(irq);
>
> Please do not use __do_IRQ() use the handlers which provide per
> interrupt type optimized handlers.
>
> struct irq_desc *desc = irq_desc + irq;
>
> desc->handle(irq);
It is a little bit different but with sililar style. You can check it in next
set of patches.
>> + irq_exit();
>> +}
>
>> +
>> +/*unsigned int irq_of_parse_and_map(struct device_node *dev, int index)
>> +{
>> + printk ("ERROR %s\n",__FUNCTION__);
>> + return 0;
>> +}
>> +EXPORT_SYMBOL_GPL(irq_of_parse_and_map);*/
>
> Please remove unused code
This function is implemented above file.
>> +static void timer_ack(void)
>> +{
>> +#ifdef CONFIG_HACK
>> + iowrite32(ioread32(HACK_BASE_ADDR + TCSR0), HACK_BASE_ADDR + TCSR0);
>> +#else
>> + iowrite32(ioread32(timer_baseaddr + TCSR0), timer_baseaddr + TCSR0);
>> +#endif
>
> Same thing as the interrupt one
<snip>
>> +}
>> +
>> +irqreturn_t timer_interrupt(int irq, void *dev_id)
>> +{
>> +#ifdef CONFIG_HEART_BEAT
>> + heartbeat();
>> +#endif
>> + timer_ack();
>> +
>> + write_seqlock(&xtime_lock);
>> +
>> + do_timer(1);
>
> Can you please move a new architecture to clockevents / clocksource
> right from the beginning ? No need to invent another incompatible set
> of time(r) related functions.
I move whole code to GENERIC_TIME. Did you meant any others changes?
>> + update_process_times(user_mode(get_irq_regs()));
>> + profile_tick(CPU_PROFILING);
>> +
>> + write_sequnlock(&xtime_lock);
>> +
>> + return IRQ_HANDLED;
>> +}
>
>> +/*
>> + * HACK_BASE_ADDR is constant address for hack function.
>> + * do not change this value - it is hardcoded in hack function
>> + * arch/microblaze/kernel/hack.c:function_hack()
>
> Grr. Please use defines for everything and do not hardcode stuff here
> and there and make a define depend on some hardcoded value in a c
> function.
BARRIER_BASE_ADDR
>> + */
>> +
>> +#define HACK_BASE_ADDR 0x1234ff00
>
>
>> +#ifndef _ASM_MICROBLAZE_IRQ_H
>> +#define _ASM_MICROBLAZE_IRQ_H
>> +
>> +#include <linux/seq_file.h>
>> +#define NR_IRQS 32
>
> Eeew.
>
>> +#include <linux/irq.h>
>
> asm/irq.h is included from linux/irq.h not the other way round
fixed
>> +extern unsigned int NR_IRQ;
>> +extern void ledoff(void);
>
> Is ledoff an interrupt function ?
I think no - removed.
>> +#define NO_IRQ (-1)
>> +
>> +static inline int irq_canonicalize(int irq)
>> +{
>> + return (irq);
>> +}
>
> Why is this needed ? Any users ?
is used in serial_core.c
684 new_serial.irq = irq_canonicalize(new_serial.irq);
>> +struct pt_regs;
>> +extern void do_IRQ(struct pt_regs *regs);
>> +extern void __init init_IRQ(void);
>
>> +int show_interrupts(struct seq_file *p, void *v);
>
> Already defined in include/linux/interrupt.h
fixed.
> Thanks,
> tglx
>
Thanks for your review,
Michal Simek
next prev parent reply other threads:[~2008-05-11 13:54 UTC|newest]
Thread overview: 196+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-05-04 11:40 Microblaze patches V2 monstr
2008-05-04 11:40 ` [PATCH 01/56] microblaze_v2: Kconfig patches monstr
2008-05-04 11:40 ` [PATCH 02/56] microblaze_v2: Makefiles for Microblaze cpu monstr
2008-05-05 1:47 ` John Williams
2008-05-06 8:51 ` Michal Simek
2008-05-04 11:40 ` [PATCH 03/56] microblaze_v2: Cpuinfo handling monstr
2008-05-05 1:52 ` John Williams
2008-05-05 14:19 ` Michal Simek
2008-05-04 11:40 ` [PATCH 04/56] microblaze_v2: Open firmware files monstr
2008-05-05 14:24 ` Grant Likely
2008-05-05 14:24 ` Grant Likely
2008-05-05 21:56 ` Stephen Neuendorffer
2008-05-05 21:56 ` Stephen Neuendorffer
2008-05-06 7:27 ` Michal Simek
2008-05-07 16:04 ` [microblaze-uclinux] " Stephen Neuendorffer
2008-05-07 16:04 ` Stephen Neuendorffer
2008-05-07 18:40 ` Michal Simek
2008-05-07 18:59 ` Grant Likely
2008-05-07 19:12 ` Michal Simek
2008-05-07 20:14 ` Stephen Neuendorffer
2008-05-07 20:14 ` Stephen Neuendorffer
2008-05-04 11:40 ` [PATCH 05/56] microblaze_v2: Support for semaphores monstr
2008-05-04 11:40 ` [PATCH 06/56] microblaze_v2: exception handling monstr
2008-05-04 11:40 ` [PATCH 07/56] microblaze_v2: Signal support monstr
2008-05-04 19:52 ` Arnd Bergmann
2008-05-05 21:32 ` Stephen Neuendorffer
2008-05-05 21:32 ` Stephen Neuendorffer
2008-05-05 23:33 ` John Williams
2008-05-06 0:13 ` Stephen Neuendorffer
2008-05-06 0:13 ` Stephen Neuendorffer
2008-05-06 0:25 ` John Williams
2008-05-06 0:33 ` Stephen Neuendorffer
2008-05-06 0:33 ` Stephen Neuendorffer
2008-05-06 9:41 ` Michal Simek
2008-05-04 11:40 ` [PATCH 08/56] microblaze_v2: Interrupt handling, timer support, supported function monstr
2008-05-05 1:58 ` John Williams
2008-05-05 14:20 ` Michal Simek
2008-05-07 7:04 ` Thomas Gleixner
2008-05-11 13:55 ` Michal Simek [this message]
2008-05-11 14:35 ` Thomas Gleixner
2008-05-11 21:55 ` Michal Simek
2008-05-11 21:55 ` Michal Simek
2008-05-04 11:40 ` [PATCH 09/56] microblaze_v2: cache support monstr
2008-05-05 2:09 ` John Williams
2008-05-05 17:37 ` [microblaze-uclinux] " Stephen Neuendorffer
2008-05-05 17:37 ` Stephen Neuendorffer
2008-05-06 9:22 ` Michal Simek
2008-05-05 22:37 ` Stephen Neuendorffer
2008-05-05 22:37 ` Stephen Neuendorffer
2008-05-04 11:40 ` [PATCH 10/56] microblaze_v2: Generic dts file for platforms monstr
2008-05-05 14:31 ` Grant Likely
2008-05-05 20:07 ` Michal Simek
2008-05-05 17:25 ` Stephen Neuendorffer
2008-05-05 17:25 ` Stephen Neuendorffer
2008-05-05 23:16 ` John Williams
2008-05-05 23:32 ` Stephen Neuendorffer
2008-05-05 23:32 ` Stephen Neuendorffer
2008-05-06 0:10 ` John Williams
2008-05-06 0:17 ` Stephen Neuendorffer
2008-05-06 0:17 ` Stephen Neuendorffer
2008-05-06 7:50 ` Michal Simek
2008-05-06 7:38 ` Michal Simek
2008-05-04 11:41 ` [PATCH 11/56] microblaze_v2: kernel modules support monstr
2008-05-04 11:41 ` [PATCH 12/56] microblaze_v2: lmb support monstr
2008-05-05 2:11 ` John Williams
2008-05-05 21:32 ` Segher Boessenkool
2008-05-05 21:32 ` Segher Boessenkool
2008-05-04 11:41 ` [PATCH 13/56] microblaze_v2: PVR support, cpuinfo support monstr
2008-05-05 2:14 ` John Williams
2008-05-05 14:20 ` Michal Simek
2008-05-05 14:20 ` Michal Simek
2008-05-04 11:41 ` [PATCH 14/56] microblaze_v2: defconfig file monstr
2008-05-04 11:41 ` [PATCH 15/56] microblaze_v2: head.S + linker script monstr
2008-05-04 11:41 ` [PATCH 16/56] microblaze_v2: supported function for memory - kernel/lib monstr
2008-05-04 11:41 ` [PATCH 17/56] microblaze_v2: checksum support monstr
2008-05-04 19:59 ` Arnd Bergmann
2008-05-05 14:05 ` Michal Simek
2008-05-04 11:41 ` [PATCH 18/56] microblaze_v2: early_printk support monstr
2008-05-05 14:36 ` Grant Likely
2008-05-05 20:10 ` Michal Simek
2008-05-05 23:22 ` John Williams
2008-05-06 8:14 ` Michal Simek
2008-05-06 8:14 ` Michal Simek
2008-05-04 11:41 ` [PATCH 19/56] microblaze_v2: uaccess files monstr
2008-05-04 11:41 ` [PATCH 20/56] microblaze_v2: heartbeat file monstr
2008-05-04 11:41 ` [PATCH 21/56] microblaze_v2: setup.c - system setting monstr
2008-05-05 2:15 ` John Williams
2008-05-05 14:21 ` Michal Simek
2008-05-05 14:21 ` Michal Simek
2008-05-04 11:41 ` [PATCH 22/56] microblaze_v2: asm-offsets monstr
2008-05-04 11:41 ` [PATCH 23/56] microblaze_v2: process and init task function monstr
2008-05-04 11:41 ` [PATCH 24/56] microblaze_v2: time support monstr
2008-05-05 2:19 ` John Williams
2008-05-05 14:22 ` Michal Simek
2008-05-05 14:22 ` Michal Simek
2008-05-06 0:30 ` John Williams
2008-05-06 9:56 ` Michal Simek
2008-05-06 9:56 ` Michal Simek
2008-05-06 10:02 ` Michal Simek
2008-05-06 10:02 ` Michal Simek
2008-05-06 11:38 ` Arnd Bergmann
2008-05-06 13:26 ` Michal Simek
2008-05-06 22:50 ` John Williams
2008-05-06 14:28 ` Grant Likely
2008-05-06 16:36 ` Stephen Neuendorffer
2008-05-06 16:36 ` Stephen Neuendorffer
2008-05-07 7:22 ` Thomas Gleixner
2008-05-04 11:41 ` [PATCH 25/56] microblaze_v2: ptrace support monstr
2008-05-04 11:41 ` [PATCH 26/56] microblaze_v2: traps support monstr
2008-05-04 11:41 ` [PATCH 27/56] microblaze_v2: support for a.out monstr
2008-05-04 11:41 ` [PATCH 28/56] microblaze_v2: memory inicialization, MMU, TLB monstr
2008-05-04 11:41 ` [PATCH 29/56] microblaze_v2: page.h, segment.h, unaligned.h monstr
2008-05-04 11:41 ` [PATCH 30/56] microblaze_v2: includes SHM*, msgbuf monstr
2008-05-04 21:10 ` Arnd Bergmann
2008-05-04 11:41 ` [PATCH 31/56] microblaze_v2: bug headers files monstr
2008-05-04 11:41 ` [PATCH 32/56] microblaze_v2: definitions of types monstr
2008-05-04 21:28 ` Arnd Bergmann
2008-05-04 11:41 ` [PATCH 33/56] microblaze_v2: ioctl support monstr
2008-05-04 21:34 ` Arnd Bergmann
2008-05-05 14:06 ` Michal Simek
2008-05-04 11:41 ` [PATCH 34/56] microblaze_v2: io.h IO operations monstr
2008-05-04 11:41 ` [PATCH 35/56] microblaze_v2: headers for executables format FLAT, ELF monstr
2008-05-05 2:24 ` John Williams
2008-05-04 11:41 ` [PATCH 36/56] microblaze_v2: dma support monstr
2008-05-05 2:25 ` John Williams
2008-05-05 6:45 ` Geert Uytterhoeven
2008-05-06 9:16 ` Michal Simek
2008-05-06 9:16 ` Michal Simek
2008-05-06 9:48 ` Geert Uytterhoeven
2008-05-06 9:53 ` Michal Simek
2008-05-06 9:53 ` Michal Simek
2008-05-06 11:17 ` Geert Uytterhoeven
2008-05-06 11:24 ` Arnd Bergmann
2008-05-06 13:20 ` Michal Simek
2008-05-06 15:36 ` Arnd Bergmann
2008-05-07 6:24 ` Michal Simek
2008-05-07 7:17 ` Geert Uytterhoeven
2008-05-07 9:21 ` Arnd Bergmann
2008-05-07 18:43 ` Michal Simek
2008-05-04 11:41 ` [PATCH 37/56] microblaze_v2: headers for irq monstr
2008-05-07 7:26 ` Thomas Gleixner
2008-05-11 13:56 ` Michal Simek
2008-05-11 13:56 ` Michal Simek
2008-05-04 11:41 ` [PATCH 38/56] microblaze_v2: atomic.h bitops.h byteorder.h monstr
2008-05-04 21:58 ` Arnd Bergmann
2008-05-05 2:28 ` John Williams
2008-05-06 8:42 ` Michal Simek
2008-05-04 11:41 ` [PATCH 39/56] microblaze_v2: headers pgalloc.h pgtable.h monstr
2008-05-04 11:41 ` [PATCH 40/56] microblaze_v2: system.h pvr.h processor.h monstr
2008-05-04 11:41 ` [PATCH 41/56] microblaze_v2: clinkage.h linkage.h sections.h kmap_types.h monstr
2008-05-04 11:41 ` [PATCH 42/56] microblaze_v2: stats headers monstr
2008-05-04 22:31 ` Arnd Bergmann
2008-05-04 11:41 ` [PATCH 43/56] microblaze_v2: termbits.h termios.h monstr
2008-05-05 9:50 ` Arnd Bergmann
2008-05-04 11:41 ` [PATCH 44/56] microblaze_v2: sigcontext.h siginfo.h monstr
2008-05-04 11:41 ` [PATCH 45/56] microblaze_v2: headers simple files - empty or redirect to asm-generic monstr
2008-05-05 2:34 ` John Williams
2008-05-05 15:10 ` Grant Likely
2008-05-06 9:02 ` Arnd Bergmann
2008-05-06 14:47 ` Stephen Rothwell
2008-05-06 15:23 ` Michal Simek
2008-05-06 15:23 ` Michal Simek
2008-05-06 15:38 ` Grant Likely
2008-05-06 16:21 ` Arnd Bergmann
2008-05-07 18:46 ` Michal Simek
2008-05-04 11:41 ` [PATCH 46/56] microblaze_v2: headers files entry.h current.h mman.h registers.h sembuf.h monstr
2008-05-05 9:54 ` Arnd Bergmann
2008-05-06 9:07 ` Michal Simek
2008-05-06 20:57 ` Geert Uytterhoeven
2008-05-04 11:41 ` [PATCH 47/56] microblaze_v2: device.h param.h topology.h monstr
2008-05-04 22:37 ` Arnd Bergmann
2008-05-05 14:07 ` Michal Simek
2008-05-04 11:41 ` [PATCH 48/56] microblaze_v2: pool.h socket.h monstr
2008-05-04 22:39 ` Arnd Bergmann
2008-05-04 11:41 ` [PATCH 49/56] microblaze_v2: fcntl.h sockios.h ucontext.h monstr
2008-05-04 22:43 ` Arnd Bergmann
2008-05-05 14:08 ` Michal Simek
2008-05-04 11:41 ` [PATCH 50/56] microblaze_v2: setup.h string.h thread_info.h monstr
2008-05-05 2:39 ` John Williams
2008-05-05 14:24 ` Michal Simek
2008-05-05 14:24 ` Michal Simek
2008-05-04 11:41 ` [PATCH 51/56] microblaze_v2: Kbuild file monstr
2008-05-04 11:41 ` [PATCH 52/56] microblaze_v2: pci headers monstr
2008-05-04 22:45 ` Arnd Bergmann
2008-05-05 14:08 ` Michal Simek
2008-05-04 11:41 ` [PATCH 53/56] microblaze_v2: IPC headers monstr
2008-05-04 11:41 ` [PATCH 54/56] microblaze_v2: entry.S monstr
2008-05-04 11:41 ` [PATCH 55/56] microblaze_v2: sys_microblaze.c monstr
2008-05-04 11:41 ` [PATCH 56/56] microblaze_v2: syscall_table.S and unistd.h monstr
2008-05-04 21:24 ` [PATCH 01/56] microblaze_v2: Kconfig patches Grant Likely
2008-05-05 6:36 ` Michal Simek
2008-05-05 1:42 ` John Williams
2008-05-05 6:46 ` Michal Simek
2008-05-05 14:16 ` Michal Simek
2008-05-05 2:30 ` Microblaze patches V2 John Williams
2008-05-05 7:02 ` Michal Simek
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4826FAC8.4010604@seznam.cz \
--to=monstr@seznam.cz \
--cc=John.Linn@xilinx.com \
--cc=arnd@arndb.de \
--cc=drepper@redhat.com \
--cc=grant.likely@secretlab.ca \
--cc=john.williams@petalogix.com \
--cc=linux-arch@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=matthew@wil.cx \
--cc=microblaze-uclinux@itee.uq.edu.au \
--cc=monstr@monstr.eu \
--cc=stephen.neuendorffer@xilinx.com \
--cc=tglx@linutronix.de \
--cc=will.newton@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.