Changeset 192565b in mainline for kernel


Ignore:
Timestamp:
2013-05-27T13:18:13Z (13 years ago)
Author:
Jan Vesely <jano.vesely@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
f2c19b0
Parents:
d120133 (diff), c90aed4 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge mainline changes.

Location:
kernel
Files:
2 added
4 deleted
12 edited
1 moved

Legend:

Unmodified
Added
Removed
  • kernel/arch/amd64/include/arch/pm.h

    rd120133 r192565b  
    5757#ifdef CONFIG_FB
    5858
    59 #define VESA_INIT_DES      8
    6059#define VESA_INIT_SEGMENT  0x8000
     60#define VESA_INIT_CODE_DES      8
     61#define VESA_INIT_DATA_DES      9
    6162
    6263#undef GDT_ITEMS
    63 #define GDT_ITEMS  9
     64#define GDT_ITEMS  10
    6465
    6566#endif /* CONFIG_FB */
  • kernel/arch/amd64/src/pm.c

    rd120133 r192565b  
    112112        /* VESA Init descriptor */
    113113#ifdef CONFIG_FB
    114         {
    115                 0xffff, 0, VESA_INIT_SEGMENT >> 12, AR_PRESENT | AR_CODE | DPL_KERNEL,
    116                     0xf, 0, 0, 0, 0, 0
    117         }
     114        { 0xffff, 0, VESA_INIT_SEGMENT >> 12, AR_PRESENT | AR_CODE | AR_READABLE | DPL_KERNEL, 0xf, 0, 0, 0, 0, 0 },
     115        { 0xffff, 0, VESA_INIT_SEGMENT >> 12, AR_PRESENT | AR_DATA | AR_WRITABLE | DPL_KERNEL, 0xf, 0, 0, 0, 0, 0 }
    118116#endif
    119117};
  • kernel/arch/arm32/src/mach/beagleboardxm/beagleboardxm.c

    rd120133 r192565b  
    6161static struct beagleboard {
    6262        amdm37x_irc_regs_t *irc_addr;
    63         amdm37x_uart_t uart;
     63        omap_uart_t uart;
    6464        amdm37x_gpt_t timer;
    6565} beagleboard;
     
    167167static void bbxm_output_init(void)
    168168{
     169#ifdef CONFIG_OMAP_UART
    169170        /* UART3 is wired to external RS232 connector */
    170         const bool ok = amdm37x_uart_init(&beagleboard.uart,
     171        const bool ok = omap_uart_init(&beagleboard.uart,
    171172            AMDM37x_UART3_IRQ, AMDM37x_UART3_BASE_ADDRESS, AMDM37x_UART3_SIZE);
    172173        if (ok) {
    173174                stdout_wire(&beagleboard.uart.outdev);
    174175        }
     176#endif
    175177}
    176178
    177179static void bbxm_input_init(void)
    178180{
     181#ifdef CONFIG_OMAP_UART
    179182        srln_instance_t *srln_instance = srln_init();
    180183        if (srln_instance) {
    181184                indev_t *sink = stdin_wire();
    182185                indev_t *srln = srln_wire(srln_instance, sink);
    183                 amdm37x_uart_input_wire(&beagleboard.uart, srln);
     186                omap_uart_input_wire(&beagleboard.uart, srln);
    184187                amdm37x_irc_enable(beagleboard.irc_addr, AMDM37x_UART3_IRQ);
    185188        }
     189#endif
    186190}
    187191
  • kernel/arch/arm32/src/mach/beaglebone/beaglebone.c

    rd120133 r192565b  
    6868        am335x_ctrl_module_t  *ctrl_module;
    6969        am335x_timer_t timer;
    70         am335x_uart_t uart;
     70        omap_uart_t uart;
    7171} bbone;
    7272
     
    195195static void bbone_output_init(void)
    196196{
    197         const bool ok = am335x_uart_init(&bbone.uart,
     197#ifdef CONFIG_OMAP_UART
     198        const bool ok = omap_uart_init(&bbone.uart,
    198199            AM335x_UART0_IRQ, AM335x_UART0_BASE_ADDRESS,
    199200            AM335x_UART0_SIZE);
     
    201202        if (ok)
    202203                stdout_wire(&bbone.uart.outdev);
     204#endif
    203205}
    204206
    205207static void bbone_input_init(void)
    206208{
     209#ifdef CONFIG_OMAP_UART
    207210        srln_instance_t *srln_instance = srln_init();
    208211        if (srln_instance) {
    209212                indev_t *sink = stdin_wire();
    210213                indev_t *srln = srln_wire(srln_instance, sink);
    211                 am335x_uart_input_wire(&bbone.uart, srln);
     214                omap_uart_input_wire(&bbone.uart, srln);
    212215                am335x_irc_enable(bbone.irc_addr, AM335x_UART0_IRQ);
    213216        }
     217#endif
    214218}
    215219
  • kernel/arch/ia32/include/arch/pm.h

    rd120133 r192565b  
    5050
    5151#define VESA_INIT_SEGMENT  0x8000
    52 #define VESA_INIT_DES      7
     52#define VESA_INIT_CODE_DES      7
     53#define VESA_INIT_DATA_DES      8
    5354#define KTEXT32_DES        KTEXT_DES
    5455
    5556#undef GDT_ITEMS
    56 #define GDT_ITEMS  8
     57#define GDT_ITEMS  9
    5758
    5859#endif /* CONFIG_FB */
     
    6768#define AR_CODE       (3 << 3)
    6869#define AR_WRITABLE   (1 << 1)
     70#define AR_READABLE   (1 << 1)
    6971#define AR_INTERRUPT  (0xe)
    7072#define AR_TRAP       (0xf)
  • kernel/arch/ia32/src/boot/vesa_real.inc

    rd120133 r192565b  
    3131vesa_init:
    3232        lidtl vesa_idtr
    33         jmp $GDT_SELECTOR(VESA_INIT_DES), $vesa_init_real - vesa_init
     33       
     34        mov $GDT_SELECTOR(VESA_INIT_DATA_DES), %bx
     35       
     36        mov %bx, %es
     37        mov %bx, %fs
     38        mov %bx, %gs
     39        mov %bx, %ds
     40        mov %bx, %ss
     41       
     42        jmp $GDT_SELECTOR(VESA_INIT_CODE_DES), $vesa_init_real - vesa_init
    3443
    3544vesa_idtr:
     
    3948.code16
    4049vesa_init_real:
    41        
    4250        mov %cr0, %eax
    4351        and $~1, %eax
     
    4553       
    4654        jmp $VESA_INIT_SEGMENT, $vesa_init_real2 - vesa_init
    47        
     55
    4856vesa_init_real2:
    4957        mov $VESA_INIT_SEGMENT, %bx
  • kernel/arch/ia32/src/pm.c

    rd120133 r192565b  
    7575        /* VESA Init descriptor */
    7676#ifdef CONFIG_FB
    77         { 0xffff, 0, VESA_INIT_SEGMENT >> 12, AR_PRESENT | AR_CODE | DPL_KERNEL, 0xf, 0, 0, 0, 0, 0 }
     77        { 0xffff, 0, VESA_INIT_SEGMENT >> 12, AR_PRESENT | AR_CODE | AR_READABLE | DPL_KERNEL, 0xf, 0, 0, 0, 0, 0 },
     78        { 0xffff, 0, VESA_INIT_SEGMENT >> 12, AR_PRESENT | AR_DATA | AR_WRITABLE | DPL_KERNEL, 0xf, 0, 0, 0, 0, 0 }
    7879#endif
    7980};
  • kernel/genarch/Makefile.inc

    rd120133 r192565b  
    6666        GENARCH_SOURCES += \
    6767                genarch/src/fb/font-8x16.c \
    68                 genarch/src/fb/logo-196x66.c \
    6968                genarch/src/fb/fb.c \
    7069                genarch/src/fb/bfb.c
     
    106105endif
    107106
    108 ifeq ($(CONFIG_AM335X_UART),y)
     107ifeq ($(CONFIG_OMAP_UART),y)
    109108        GENARCH_SOURCES += \
    110                 genarch/src/drivers/am335x/uart.c
     109                genarch/src/drivers/omap/uart.c
    111110endif
    112111
     
    114113        GENARCH_SOURCES += \
    115114                genarch/src/drivers/am335x/timer.c
    116 endif
    117 
    118 ifeq ($(CONFIG_AMDM37X_UART),y)
    119         GENARCH_SOURCES += \
    120                 genarch/src/drivers/amdm37x/uart.c
    121115endif
    122116
  • kernel/genarch/include/genarch/drivers/am335x/uart.h

    rd120133 r192565b  
    3737#define _KERN_AM335X_UART_H_
    3838
    39 #include "uart_regs.h"
     39#include <genarch/drivers/omap/uart.h>
    4040
    4141#define AM335x_UART0_BASE_ADDRESS    0x44E09000
     
    6363#define AM335x_UART5_IRQ             46
    6464
    65 typedef struct {
    66         am335x_uart_regs_t *regs;
    67         indev_t *indev;
    68         outdev_t outdev;
    69         irq_t irq;
    70 } am335x_uart_t;
    71 
    72 #ifdef CONFIG_AM335X_UART
    73 extern bool am335x_uart_init(am335x_uart_t *uart, inr_t interrupt,
    74     uintptr_t addr, size_t size);
    75 
    76 extern void am335x_uart_input_wire(am335x_uart_t *uart, indev_t *indev);
    77 #else
    78 static bool am335x_uart_init(am335x_uart_t *uart, inr_t interrupt,
    79     uintptr_t addr, size_t size)
    80 { return true; }
    81 
    82 static void am335x_uart_input_wire(am335x_uart_t *uart, indev_t *indev) {}
    83 #endif
    84 
    8565#endif
    8666
  • kernel/genarch/include/genarch/drivers/amdm37x/uart.h

    rd120133 r192565b  
    3737#define _AMDM37x_UART_H_
    3838
    39 #include "uart_regs.h"
     39#include <genarch/drivers/omap/uart.h>
    4040
    4141/* AMDM37x TRM p. 2950 */
     
    5656#define AMDM37x_UART4_IRQ   80 /* AMDM37x TRM p. 2418 */
    5757
    58 typedef struct {
    59         amdm37x_uart_regs_t *regs;
    60         indev_t *indev;
    61         outdev_t outdev;
    62         irq_t irq;
    63 } amdm37x_uart_t;
    64 
    65 
    66 bool amdm37x_uart_init(amdm37x_uart_t *, inr_t, uintptr_t, size_t);
    67 void amdm37x_uart_input_wire(amdm37x_uart_t *, indev_t *);
    68 
    6958#endif
    7059
  • kernel/genarch/src/drivers/omap/uart.c

    rd120133 r192565b  
    3232/**
    3333 * @file
    34  * @brief Texas Instruments AM335x on-chip uart serial line driver.
     34 * @brief Texas Instruments OMAP on-chip uart serial line driver.
    3535 */
    3636
    37 #include <genarch/drivers/am335x/uart.h>
     37#include <genarch/drivers/omap/uart.h>
    3838#include <ddi/device.h>
    3939#include <str.h>
    4040#include <mm/km.h>
    4141
    42 static void am335x_uart_txb(am335x_uart_t *uart, uint8_t b)
     42static void omap_uart_txb(omap_uart_t *uart, uint8_t b)
    4343{
    4444        /* Wait for buffer */
    45         while (uart->regs->ssr & AM335x_UART_SSR_TX_FIFO_FULL_FLAG);
     45        while (uart->regs->ssr & OMAP_UART_SSR_TX_FIFO_FULL_FLAG);
    4646        /* Write to the outgoing fifo */
    4747        uart->regs->thr = b;
    4848}
    4949
    50 static void am335x_uart_putchar(outdev_t *dev, wchar_t ch)
     50static void omap_uart_putchar(outdev_t *dev, wchar_t ch)
    5151{
    52         am335x_uart_t *uart = dev->data;
     52        omap_uart_t *uart = dev->data;
    5353        if (!ascii_check(ch)) {
    54                 am335x_uart_txb(uart, U_SPECIAL);
     54                omap_uart_txb(uart, U_SPECIAL);
    5555        } else {
    5656                if (ch == '\n')
    57                         am335x_uart_txb(uart, '\r');
    58                 am335x_uart_txb(uart, ch);
     57                        omap_uart_txb(uart, '\r');
     58                omap_uart_txb(uart, ch);
    5959        }
    6060}
    6161
    62 static outdev_operations_t am335x_uart_ops = {
     62static outdev_operations_t omap_uart_ops = {
    6363        .redraw = NULL,
    64         .write = am335x_uart_putchar,
     64        .write = omap_uart_putchar,
    6565};
    6666
    67 static irq_ownership_t am335x_uart_claim(irq_t *irq)
     67static irq_ownership_t omap_uart_claim(irq_t *irq)
    6868{
    6969        return IRQ_ACCEPT;
    7070}
    7171
    72 static void am335x_uart_handler(irq_t *irq)
     72static void omap_uart_handler(irq_t *irq)
    7373{
    74         am335x_uart_t *uart = irq->instance;
     74        omap_uart_t *uart = irq->instance;
    7575        while ((uart->regs->rx_fifo_lvl)) {
    7676                const uint8_t val = uart->regs->rhr;
     
    8181}
    8282
    83 bool am335x_uart_init(
    84     am335x_uart_t *uart, inr_t interrupt, uintptr_t addr, size_t size)
     83bool omap_uart_init(
     84    omap_uart_t *uart, inr_t interrupt, uintptr_t addr, size_t size)
    8585{
    8686        ASSERT(uart);
     
    9090
    9191        /* Soft reset the port */
    92         uart->regs->sysc = AM335x_UART_SYSC_SOFTRESET_FLAG;
    93         while (!(uart->regs->syss & AM335x_UART_SYSS_RESETDONE_FLAG));
     92        uart->regs->sysc = OMAP_UART_SYSC_SOFTRESET_FLAG;
     93        while (!(uart->regs->syss & OMAP_UART_SYSS_RESETDONE_FLAG));
    9494
    9595        /* Disable the UART module */
    96         uart->regs->mdr1 |= AM335x_UART_MDR_MS_DISABLE;
     96        uart->regs->mdr1 |= OMAP_UART_MDR_MS_DISABLE;
    9797
    9898        /* Enable access to EFR register */
     
    100100
    101101        /* Enable access to TCL_TLR register */
    102         const bool enhanced = uart->regs->efr & AM335x_UART_EFR_ENH_FLAG;
    103         uart->regs->efr |= AM335x_UART_EFR_ENH_FLAG; /* Turn on enh. */
     102        const bool enhanced = uart->regs->efr & OMAP_UART_EFR_ENH_FLAG;
     103        uart->regs->efr |= OMAP_UART_EFR_ENH_FLAG; /* Turn on enh. */
    104104        uart->regs->lcr = 0x80;              /* Config mode A */
    105105
    106106        /* Set default (val 0) triggers, disable DMA enable FIFOs */
    107         const bool tcl_tlr = uart->regs->mcr & AM335x_UART_MCR_TCR_TLR_FLAG;
     107        const bool tcl_tlr = uart->regs->mcr & OMAP_UART_MCR_TCR_TLR_FLAG;
    108108        /* Enable access to tcr and tlr registers */
    109         uart->regs->mcr |= AM335x_UART_MCR_TCR_TLR_FLAG;
     109        uart->regs->mcr |= OMAP_UART_MCR_TCR_TLR_FLAG;
    110110
    111111        /* Enable FIFOs */
    112         uart->regs->fcr = AM335x_UART_FCR_FIFO_EN_FLAG;
     112        uart->regs->fcr = OMAP_UART_FCR_FIFO_EN_FLAG;
    113113
    114114        /* Enable fine granularity for RX FIFO and set trigger level to 1,
    115115         * TX FIFO, trigger level is irrelevant*/
    116116        uart->regs->lcr = 0xBF;              /* Sets config mode B */
    117         uart->regs->scr = AM335x_UART_SCR_RX_TRIG_GRANU1_FLAG;
    118         uart->regs->tlr = 1 << AM335x_UART_TLR_RX_FIFO_TRIG_SHIFT;
     117        uart->regs->scr = OMAP_UART_SCR_RX_TRIG_GRANU1_FLAG;
     118        uart->regs->tlr = 1 << OMAP_UART_TLR_RX_FIFO_TRIG_SHIFT;
    119119
    120120        /* Sets config mode A */
     
    122122        /* Restore tcl_tlr access flag */
    123123        if (!tcl_tlr)
    124                 uart->regs->mcr &= ~AM335x_UART_MCR_TCR_TLR_FLAG;
     124                uart->regs->mcr &= ~OMAP_UART_MCR_TCR_TLR_FLAG;
    125125        /* Sets config mode B */
    126126        uart->regs->lcr = 0xBF;
     
    132132        /* Restore enhanced */
    133133        if (!enhanced)
    134                 uart->regs->efr &= ~AM335x_UART_EFR_ENH_FLAG;
     134                uart->regs->efr &= ~OMAP_UART_EFR_ENH_FLAG;
    135135
    136136        /* Set the DIV_EN bit to 0 */
    137         uart->regs->lcr &= ~AM335x_UART_LCR_DIV_EN_FLAG;
     137        uart->regs->lcr &= ~OMAP_UART_LCR_DIV_EN_FLAG;
    138138        /* Set the BREAK_EN bit to 0 */
    139         uart->regs->lcr &= ~AM335x_UART_LCR_BREAK_EN_FLAG;
     139        uart->regs->lcr &= ~OMAP_UART_LCR_BREAK_EN_FLAG;
    140140        /* No parity */
    141         uart->regs->lcr &= ~AM335x_UART_LCR_PARITY_EN_FLAG;
     141        uart->regs->lcr &= ~OMAP_UART_LCR_PARITY_EN_FLAG;
    142142        /* Stop = 1 bit */
    143         uart->regs->lcr &= ~AM335x_UART_LCR_NB_STOP_FLAG;
     143        uart->regs->lcr &= ~OMAP_UART_LCR_NB_STOP_FLAG;
    144144        /* Char length = 8 bits */
    145         uart->regs->lcr |= AM335x_UART_LCR_CHAR_LENGTH_8BITS;
     145        uart->regs->lcr |= OMAP_UART_LCR_CHAR_LENGTH_8BITS;
    146146
    147147        /* Enable the UART module */
    148         uart->regs->mdr1 &= (AM335x_UART_MDR_MS_UART16 &
    149             ~AM335x_UART_MDR_MS_MASK);
     148        uart->regs->mdr1 &= (OMAP_UART_MDR_MS_UART16 &
     149            ~OMAP_UART_MDR_MS_MASK);
    150150
    151151        /* Disable interrupts */
     
    153153
    154154        /* Setup outdev */
    155         outdev_initialize("am335x_uart_dev", &uart->outdev, &am335x_uart_ops);
     155        outdev_initialize("omap_uart_dev", &uart->outdev, &omap_uart_ops);
    156156        uart->outdev.data = uart;
    157157
     
    160160        uart->irq.devno = device_assign_devno();
    161161        uart->irq.inr = interrupt;
    162         uart->irq.claim = am335x_uart_claim;
    163         uart->irq.handler = am335x_uart_handler;
     162        uart->irq.claim = omap_uart_claim;
     163        uart->irq.handler = omap_uart_handler;
    164164        uart->irq.instance = uart;
    165165
     
    167167}
    168168
    169 void am335x_uart_input_wire(am335x_uart_t *uart, indev_t *indev)
     169void omap_uart_input_wire(omap_uart_t *uart, indev_t *indev)
    170170{
    171171        ASSERT(uart);
     
    175175        irq_register(&uart->irq);
    176176        /* Enable interrupt on receive */
    177         uart->regs->ier |= AM335x_UART_IER_RHR_IRQ_FLAG;
     177        uart->regs->ier |= OMAP_UART_IER_RHR_IRQ_FLAG;
    178178}
    179179
  • kernel/genarch/src/fb/fb.c

    rd120133 r192565b  
    3535
    3636#include <genarch/fb/font-8x16.h>
    37 #include <genarch/fb/logo-196x66.h>
    3837#include <genarch/fb/fb.h>
    3938#include <console/chardev.h>
     
    5352#include <byteorder.h>
    5453
    55 #define BG_COLOR     0x000080
    56 #define FG_COLOR     0xffff00
     54#define BG_COLOR     0x001620
     55#define FG_COLOR     0xf3cf65
    5756#define INV_COLOR    0xaaaaaa
    5857
     
    9392        unsigned int yres;
    9493       
    95         unsigned int ylogo;
    96         unsigned int ytrim;
    9794        unsigned int rowtrim;
    9895       
     
    213210}
    214211
    215 /** Hide logo and refresh screen
    216  *
    217  */
    218 static void logo_hide(fb_instance_t *instance)
    219 {
    220         instance->ylogo = 0;
    221         instance->ytrim = instance->yres;
    222         instance->rowtrim = instance->rows;
    223        
    224         if ((!instance->parea.mapped) || (console_override))
    225                 fb_redraw_internal(instance);
    226 }
    227 
    228212/** Draw character at given position
    229213 *
     
    236220        unsigned int yd;
    237221       
    238         if (y >= instance->ytrim)
    239                 logo_hide(instance);
    240        
    241222        if (!overlay)
    242223                instance->backbuf[BB_POS(instance, col, row)] = glyph;
     
    244225        if ((!instance->parea.mapped) || (console_override)) {
    245226                for (yd = 0; yd < FONT_SCANLINES; yd++)
    246                         memcpy(&instance->addr[FB_POS(instance, x, y + yd + instance->ylogo)],
     227                        memcpy(&instance->addr[FB_POS(instance, x, y + yd)],
    247228                            &instance->glyphs[GLYPH_POS(instance, glyph, yd)],
    248229                            instance->glyphscanline);
     
    256237static void screen_scroll(fb_instance_t *instance)
    257238{
    258         if (instance->ylogo > 0) {
    259                 logo_hide(instance);
    260                 return;
    261         }
    262        
    263239        if ((!instance->parea.mapped) || (console_override)) {
    264240                unsigned int row;
     
    412388static void fb_redraw_internal(fb_instance_t *instance)
    413389{
    414         if (instance->ylogo > 0) {
    415                 unsigned int y;
    416                
    417                 for (y = 0; y < LOGO_HEIGHT; y++) {
    418                         unsigned int x;
    419                        
    420                         for (x = 0; x < instance->xres; x++)
    421                                 instance->rgb_conv(&instance->addr[FB_POS(instance, x, y)],
    422                                     (x < LOGO_WIDTH) ?
    423                                     fb_logo[y * LOGO_WIDTH + x] :
    424                                     LOGO_COLOR);
    425                 }
    426         }
    427        
    428390        unsigned int row;
    429391       
    430392        for (row = 0; row < instance->rowtrim; row++) {
    431                 unsigned int y = instance->ylogo + ROW2Y(row);
     393                unsigned int y = ROW2Y(row);
    432394                unsigned int yd;
    433395               
     
    452414                    (instance->xres - COL2X(instance->cols)) * instance->pixelbytes;
    453415               
    454                 for (y = instance->ylogo; y < instance->yres; y++)
     416                for (y = 0; y < instance->yres; y++)
    455417                        memcpy(&instance->addr[FB_POS(instance, COL2X(instance->cols), y)],
    456418                            instance->bgscan, size);
    457419        }
    458420       
    459         if (ROW2Y(instance->rowtrim) + instance->ylogo < instance->yres) {
     421        if (ROW2Y(instance->rowtrim) < instance->yres) {
    460422                unsigned int y;
    461423               
    462                 for (y = ROW2Y(instance->rowtrim) + instance->ylogo;
    463                     y < instance->yres; y++)
     424                for (y = ROW2Y(instance->rowtrim); y < instance->yres; y++)
    464425                        memcpy(&instance->addr[FB_POS(instance, 0, y)],
    465426                            instance->bgscan, instance->bgscanbytes);
     
    567528        instance->rows = Y2ROW(instance->yres);
    568529       
    569         if (instance->yres > LOGO_HEIGHT) {
    570                 instance->ylogo = LOGO_HEIGHT;
    571                 instance->rowtrim = instance->rows - Y2ROW(instance->ylogo);
    572                 if (instance->ylogo % FONT_SCANLINES > 0)
    573                         instance->rowtrim--;
    574                 instance->ytrim = ROW2Y(instance->rowtrim);
    575         } else {
    576                 instance->ylogo = 0;
    577                 instance->ytrim = instance->yres;
    578                 instance->rowtrim = instance->rows;
    579         }
     530        instance->rowtrim = instance->rows;
    580531       
    581532        instance->glyphscanline = FONT_WIDTH * instance->pixelbytes;
  • kernel/generic/include/lib/memfnc.h

    rd120133 r192565b  
    3838#include <typedefs.h>
    3939
    40 extern void *memset(void *, int, size_t);
    41 extern void *memcpy(void *, const void *, size_t);
     40extern void *memset(void *, int, size_t)
     41    __attribute__ ((optimize("-fno-tree-loop-distribute-patterns")));
     42extern void *memcpy(void *, const void *, size_t)
     43    __attribute__ ((optimize("-fno-tree-loop-distribute-patterns")));
    4244
    4345#endif
Note: See TracChangeset for help on using the changeset viewer.