OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [rtos/] [ecos-2.0/] [doc/] [html/] [ref/] [hal-porting-variant.html] - Diff between revs 28 and 174

Only display areas with differences | Details | Blame | View Log

Rev 28 Rev 174
<!-- Copyright (C) 2003 Red Hat, Inc.                                -->
<!-- Copyright (C) 2003 Red Hat, Inc.                                -->
<!-- This material may be distributed only subject to the terms      -->
<!-- This material may be distributed only subject to the terms      -->
<!-- and conditions set forth in the Open Publication License, v1.0  -->
<!-- and conditions set forth in the Open Publication License, v1.0  -->
<!-- or later (the latest version is presently available at          -->
<!-- or later (the latest version is presently available at          -->
<!-- http://www.opencontent.org/openpub/).                           -->
<!-- http://www.opencontent.org/openpub/).                           -->
<!-- Distribution of the work or derivative of the work in any       -->
<!-- Distribution of the work or derivative of the work in any       -->
<!-- standard (paper) book form is prohibited unless prior           -->
<!-- standard (paper) book form is prohibited unless prior           -->
<!-- permission is obtained from the copyright holder.               -->
<!-- permission is obtained from the copyright holder.               -->
<HTML
<HTML
><HEAD
><HEAD
><TITLE
><TITLE
>Variant HAL Porting</TITLE
>Variant HAL Porting</TITLE
><meta name="MSSmartTagsPreventParsing" content="TRUE">
><meta name="MSSmartTagsPreventParsing" content="TRUE">
<META
<META
NAME="GENERATOR"
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
"><LINK
"><LINK
REL="HOME"
REL="HOME"
TITLE="eCos Reference Manual"
TITLE="eCos Reference Manual"
HREF="ecos-ref.html"><LINK
HREF="ecos-ref.html"><LINK
REL="UP"
REL="UP"
TITLE=" Porting Guide"
TITLE=" Porting Guide"
HREF="hal-porting-guide.html"><LINK
HREF="hal-porting-guide.html"><LINK
REL="PREVIOUS"
REL="PREVIOUS"
TITLE="Platform HAL Porting"
TITLE="Platform HAL Porting"
HREF="hal-porting-platform.html"><LINK
HREF="hal-porting-platform.html"><LINK
REL="NEXT"
REL="NEXT"
TITLE="Architecture HAL Porting"
TITLE="Architecture HAL Porting"
HREF="hal-porting-architecture.html"></HEAD
HREF="hal-porting-architecture.html"></HEAD
><BODY
><BODY
CLASS="SECTION"
CLASS="SECTION"
BGCOLOR="#FFFFFF"
BGCOLOR="#FFFFFF"
TEXT="#000000"
TEXT="#000000"
LINK="#0000FF"
LINK="#0000FF"
VLINK="#840084"
VLINK="#840084"
ALINK="#0000FF"
ALINK="#0000FF"
><DIV
><DIV
CLASS="NAVHEADER"
CLASS="NAVHEADER"
><TABLE
><TABLE
SUMMARY="Header navigation table"
SUMMARY="Header navigation table"
WIDTH="100%"
WIDTH="100%"
BORDER="0"
BORDER="0"
CELLPADDING="0"
CELLPADDING="0"
CELLSPACING="0"
CELLSPACING="0"
><TR
><TR
><TH
><TH
COLSPAN="3"
COLSPAN="3"
ALIGN="center"
ALIGN="center"
>eCos Reference Manual</TH
>eCos Reference Manual</TH
></TR
></TR
><TR
><TR
><TD
><TD
WIDTH="10%"
WIDTH="10%"
ALIGN="left"
ALIGN="left"
VALIGN="bottom"
VALIGN="bottom"
><A
><A
HREF="hal-porting-platform.html"
HREF="hal-porting-platform.html"
ACCESSKEY="P"
ACCESSKEY="P"
>Prev</A
>Prev</A
></TD
></TD
><TD
><TD
WIDTH="80%"
WIDTH="80%"
ALIGN="center"
ALIGN="center"
VALIGN="bottom"
VALIGN="bottom"
>Chapter 11. Porting Guide</TD
>Chapter 11. Porting Guide</TD
><TD
><TD
WIDTH="10%"
WIDTH="10%"
ALIGN="right"
ALIGN="right"
VALIGN="bottom"
VALIGN="bottom"
><A
><A
HREF="hal-porting-architecture.html"
HREF="hal-porting-architecture.html"
ACCESSKEY="N"
ACCESSKEY="N"
>Next</A
>Next</A
></TD
></TD
></TR
></TR
></TABLE
></TABLE
><HR
><HR
ALIGN="LEFT"
ALIGN="LEFT"
WIDTH="100%"></DIV
WIDTH="100%"></DIV
><DIV
><DIV
CLASS="SECTION"
CLASS="SECTION"
><H1
><H1
CLASS="SECTION"
CLASS="SECTION"
><A
><A
NAME="HAL-PORTING-VARIANT">Variant HAL Porting</H1
NAME="HAL-PORTING-VARIANT">Variant HAL Porting</H1
><P
><P
>A variant port can be a fairly limited job, but can also
>A variant port can be a fairly limited job, but can also
require quite a lot of work. A variant HAL describes how a specific
require quite a lot of work. A variant HAL describes how a specific
CPU variant differs from the generic CPU architecture. The variant HAL
CPU variant differs from the generic CPU architecture. The variant HAL
can re-define cache, MMU, interrupt, and other features which override
can re-define cache, MMU, interrupt, and other features which override
the default implementation provided by the architecture HAL.</P
the default implementation provided by the architecture HAL.</P
><P
><P
>Doing a variant port requires a preexisting architecture HAL port. It
>Doing a variant port requires a preexisting architecture HAL port. It
is also likely that a platform port will have to be done at the same
is also likely that a platform port will have to be done at the same
time if it is to be tested.</P
time if it is to be tested.</P
><DIV
><DIV
CLASS="SECTION"
CLASS="SECTION"
><H2
><H2
CLASS="SECTION"
CLASS="SECTION"
><A
><A
NAME="AEN9745">HAL Variant Porting Process</H2
NAME="AEN9745">HAL Variant Porting Process</H2
><P
><P
>The easiest way to make a new variant HAL is simply to copy an
>The easiest way to make a new variant HAL is simply to copy an
existing variant HAL and change all the files to match the new
existing variant HAL and change all the files to match the new
variant. If this is the first variant for an architecture, it may be
variant. If this is the first variant for an architecture, it may be
hard to decide which parts should be put in the variant - knowledge of
hard to decide which parts should be put in the variant - knowledge of
other variants of the architecture is required.</P
other variants of the architecture is required.</P
><P
><P
>Looking at existing variant HALs (e.g., MIPS tx39, tx49) may be a
>Looking at existing variant HALs (e.g., MIPS tx39, tx49) may be a
help - usually things such as caching, interrupt and exception
help - usually things such as caching, interrupt and exception
handling differ between variants. Initialization code, and code for
handling differ between variants. Initialization code, and code for
handling various core components (FPU, DSP, MMU, etc.) may also differ
handling various core components (FPU, DSP, MMU, etc.) may also differ
or be missing altogether on some variants. Linker scripts may also require
or be missing altogether on some variants. Linker scripts may also require
specific variant versions.</P
specific variant versions.</P
><DIV
><DIV
CLASS="NOTE"
CLASS="NOTE"
><BLOCKQUOTE
><BLOCKQUOTE
CLASS="NOTE"
CLASS="NOTE"
><P
><P
><B
><B
>Note: </B
>Note: </B
>Some CPU variants may require specific compiler
>Some CPU variants may require specific compiler
support. That support must be in place before you can undertake the
support. That support must be in place before you can undertake the
eCos variant port.</P
eCos variant port.</P
></BLOCKQUOTE
></BLOCKQUOTE
></DIV
></DIV
></DIV
></DIV
><DIV
><DIV
CLASS="SECTION"
CLASS="SECTION"
><H2
><H2
CLASS="SECTION"
CLASS="SECTION"
><A
><A
NAME="AEN9752">HAL Variant CDL</H2
NAME="AEN9752">HAL Variant CDL</H2
><P
><P
>The CDL in a variant HAL tends to depend on the exact functionality
>The CDL in a variant HAL tends to depend on the exact functionality
supported by the variant. If it implements some of the devices
supported by the variant. If it implements some of the devices
described in the platform HAL, then the CDL for those will be here
described in the platform HAL, then the CDL for those will be here
rather than there (for example the real-time clock).</P
rather than there (for example the real-time clock).</P
><P
><P
>There may also be CDL to select options in the architecture HAL to
>There may also be CDL to select options in the architecture HAL to
configure it to a particular architectural variant.</P
configure it to a particular architectural variant.</P
><P
><P
>Each variant needs an entry in the <TT
>Each variant needs an entry in the <TT
CLASS="FILENAME"
CLASS="FILENAME"
>ecos.db</TT
>ecos.db</TT
>
>
file. This is the one for the SH3:</P
file. This is the one for the SH3:</P
><TABLE
><TABLE
BORDER="5"
BORDER="5"
BGCOLOR="#E0E0F0"
BGCOLOR="#E0E0F0"
WIDTH="70%"
WIDTH="70%"
><TR
><TR
><TD
><TD
><PRE
><PRE
CLASS="PROGRAMLISTING"
CLASS="PROGRAMLISTING"
>package CYGPKG_HAL_SH_SH3 {
>package CYGPKG_HAL_SH_SH3 {
    alias         { "SH3 architecture" hal_sh_sh3 }
    alias         { "SH3 architecture" hal_sh_sh3 }
    directory     hal/sh/sh3
    directory     hal/sh/sh3
    script        hal_sh_sh3.cdl
    script        hal_sh_sh3.cdl
    hardware
    hardware
    description   "
    description   "
        The SH3 (SuperH 3) variant HAL package provides generic
        The SH3 (SuperH 3) variant HAL package provides generic
        support for SH3 variant CPUs."
        support for SH3 variant CPUs."
}</PRE
}</PRE
></TD
></TD
></TR
></TR
></TABLE
></TABLE
><P
><P
>As you can see, it is very similar to the platform entry.</P
>As you can see, it is very similar to the platform entry.</P
><P
><P
>The variant CDL file will contain a package entry named for the
>The variant CDL file will contain a package entry named for the
architecture and variant, matching the package name in the
architecture and variant, matching the package name in the
<TT
<TT
CLASS="FILENAME"
CLASS="FILENAME"
>ecos.db</TT
>ecos.db</TT
> file. Here is the initial part of the
> file. Here is the initial part of the
MIPS VR4300 CDL file:</P
MIPS VR4300 CDL file:</P
><TABLE
><TABLE
BORDER="5"
BORDER="5"
BGCOLOR="#E0E0F0"
BGCOLOR="#E0E0F0"
WIDTH="70%"
WIDTH="70%"
><TR
><TR
><TD
><TD
><PRE
><PRE
CLASS="PROGRAMLISTING"
CLASS="PROGRAMLISTING"
>cdl_package CYGPKG_HAL_MIPS_VR4300 {
>cdl_package CYGPKG_HAL_MIPS_VR4300 {
    display       "VR4300 variant"
    display       "VR4300 variant"
    parent        CYGPKG_HAL_MIPS
    parent        CYGPKG_HAL_MIPS
    implements    CYGINT_HAL_MIPS_VARIANT
    implements    CYGINT_HAL_MIPS_VARIANT
    hardware
    hardware
    include_dir   cyg/hal
    include_dir   cyg/hal
    define_header hal_mips_vr4300.h
    define_header hal_mips_vr4300.h
    description   "
    description   "
           The VR4300 variant HAL package provides generic support
           The VR4300 variant HAL package provides generic support
           for this processor architecture. It is also necessary to
           for this processor architecture. It is also necessary to
           select a specific target platform HAL package."</PRE
           select a specific target platform HAL package."</PRE
></TD
></TD
></TR
></TR
></TABLE
></TABLE
><P
><P
>This defines the package, placing it under the MIPS architecture
>This defines the package, placing it under the MIPS architecture
package in the hierarchy. The <TT
package in the hierarchy. The <TT
CLASS="LITERAL"
CLASS="LITERAL"
>implements</TT
>implements</TT
> line
> line
indicates that this is a MIPS variant. The architecture package uses
indicates that this is a MIPS variant. The architecture package uses
this to check that exactly one variant is configured in.</P
this to check that exactly one variant is configured in.</P
><P
><P
>The variant defines some options that cause the architecture HAL to
>The variant defines some options that cause the architecture HAL to
configure itself to support this variant.</P
configure itself to support this variant.</P
><TABLE
><TABLE
BORDER="5"
BORDER="5"
BGCOLOR="#E0E0F0"
BGCOLOR="#E0E0F0"
WIDTH="70%"
WIDTH="70%"
><TR
><TR
><TD
><TD
><PRE
><PRE
CLASS="PROGRAMLISTING"
CLASS="PROGRAMLISTING"
>    cdl_option CYGHWR_HAL_MIPS_64BIT {
>    cdl_option CYGHWR_HAL_MIPS_64BIT {
        display    "Variant 64 bit architecture support"
        display    "Variant 64 bit architecture support"
        calculated 1
        calculated 1
    }
    }
 
 
    cdl_option CYGHWR_HAL_MIPS_FPU {
    cdl_option CYGHWR_HAL_MIPS_FPU {
        display    "Variant FPU support"
        display    "Variant FPU support"
        calculated 1
        calculated 1
    }
    }
 
 
    cdl_option CYGHWR_HAL_MIPS_FPU_64BIT {
    cdl_option CYGHWR_HAL_MIPS_FPU_64BIT {
        display    "Variant 64 bit FPU support"
        display    "Variant 64 bit FPU support"
        calculated 1
        calculated 1
    }</PRE
    }</PRE
></TD
></TD
></TR
></TR
></TABLE
></TABLE
><P
><P
>These tell the architecture that this is a 64 bit MIPS architecture,
>These tell the architecture that this is a 64 bit MIPS architecture,
that it has a floating point unit, and that we are going to use it in
that it has a floating point unit, and that we are going to use it in
64 bit mode rather than 32 bit mode.</P
64 bit mode rather than 32 bit mode.</P
><P
><P
>The CDL file finishes off with some build options.</P
>The CDL file finishes off with some build options.</P
><TABLE
><TABLE
BORDER="5"
BORDER="5"
BGCOLOR="#E0E0F0"
BGCOLOR="#E0E0F0"
WIDTH="70%"
WIDTH="70%"
><TR
><TR
><TD
><TD
><PRE
><PRE
CLASS="PROGRAMLISTING"
CLASS="PROGRAMLISTING"
>    define_proc {
>    define_proc {
        puts $::cdl_header "#include &lt;pkgconf/hal_mips.h&gt;"
        puts $::cdl_header "#include &lt;pkgconf/hal_mips.h&gt;"
    }
    }
 
 
    compile       var_misc.c
    compile       var_misc.c
 
 
    make {
    make {
        &lt;PREFIX&gt;/lib/target.ld: &lt;PACKAGE&gt;/src/mips_vr4300.ld
        &lt;PREFIX&gt;/lib/target.ld: &lt;PACKAGE&gt;/src/mips_vr4300.ld
        $(CC) -E -P -Wp,-MD,target.tmp -DEXTRAS=1 -xc $(INCLUDE_PATH) $(CFLAGS) -o $@ $&lt;
        $(CC) -E -P -Wp,-MD,target.tmp -DEXTRAS=1 -xc $(INCLUDE_PATH) $(CFLAGS) -o $@ $&lt;
        @echo $@ ": \\" &gt; $(notdir $@).deps
        @echo $@ ": \\" &gt; $(notdir $@).deps
        @tail +2 target.tmp &gt;&gt; $(notdir $@).deps
        @tail +2 target.tmp &gt;&gt; $(notdir $@).deps
        @echo &gt;&gt; $(notdir $@).deps
        @echo &gt;&gt; $(notdir $@).deps
        @rm target.tmp
        @rm target.tmp
    }
    }
 
 
    cdl_option CYGBLD_LINKER_SCRIPT {
    cdl_option CYGBLD_LINKER_SCRIPT {
        display "Linker script"
        display "Linker script"
        flavor data
        flavor data
        no_define
        no_define
        calculated  { "src/mips_vr4300.ld" }
        calculated  { "src/mips_vr4300.ld" }
    }
    }
 
 
}</PRE
}</PRE
></TD
></TD
></TR
></TR
></TABLE
></TABLE
><P
><P
>The <TT
>The <TT
CLASS="LITERAL"
CLASS="LITERAL"
>define_proc</TT
>define_proc</TT
> causes the architecture
> causes the architecture
configuration file to be included into the configuration file for the
configuration file to be included into the configuration file for the
variant. The <TT
variant. The <TT
CLASS="LITERAL"
CLASS="LITERAL"
>compile</TT
>compile</TT
> causes the single source file
> causes the single source file
for this variant, <TT
for this variant, <TT
CLASS="FILENAME"
CLASS="FILENAME"
>var_misc.c</TT
>var_misc.c</TT
> to be compiled. The
> to be compiled. The
<TT
<TT
CLASS="LITERAL"
CLASS="LITERAL"
>make</TT
>make</TT
> command emits makefile rules to combine the
> command emits makefile rules to combine the
linker script with the <TT
linker script with the <TT
CLASS="FILENAME"
CLASS="FILENAME"
>.ldi</TT
>.ldi</TT
> file to generate
> file to generate
<TT
<TT
CLASS="LITERAL"
CLASS="LITERAL"
>target.ld</TT
>target.ld</TT
>. Finally, in the MIPS HALs, the main
>. Finally, in the MIPS HALs, the main
linker script is defined in the variant, rather than the architecture,
linker script is defined in the variant, rather than the architecture,
so <TT
so <TT
CLASS="LITERAL"
CLASS="LITERAL"
>CYGBLD_LINKER_SCRIPT</TT
>CYGBLD_LINKER_SCRIPT</TT
> is defined here.</P
> is defined here.</P
></DIV
></DIV
><DIV
><DIV
CLASS="SECTION"
CLASS="SECTION"
><H2
><H2
CLASS="SECTION"
CLASS="SECTION"
><A
><A
NAME="AEN9778">Cache Support</H2
NAME="AEN9778">Cache Support</H2
><P
><P
>The main area where the variant is likely to be involved is in cache
>The main area where the variant is likely to be involved is in cache
support. Often the only thing that distinguishes one CPU variant from
support. Often the only thing that distinguishes one CPU variant from
another is the size of its caches.</P
another is the size of its caches.</P
><P
><P
>In architectures such as the MIPS and PowerPC where cache instructions
>In architectures such as the MIPS and PowerPC where cache instructions
are part of the ISA, most of the actual cache operations are
are part of the ISA, most of the actual cache operations are
implemented in the architecture HAL. In this case the variant HAL only
implemented in the architecture HAL. In this case the variant HAL only
needs to define the cache dimensions. The following are the cache
needs to define the cache dimensions. The following are the cache
dimensions defined in the MIPS VR4300 variant
dimensions defined in the MIPS VR4300 variant
<TT
<TT
CLASS="FILENAME"
CLASS="FILENAME"
>var_cache.h</TT
>var_cache.h</TT
>.</P
>.</P
><TABLE
><TABLE
BORDER="5"
BORDER="5"
BGCOLOR="#E0E0F0"
BGCOLOR="#E0E0F0"
WIDTH="70%"
WIDTH="70%"
><TR
><TR
><TD
><TD
><PRE
><PRE
CLASS="PROGRAMLISTING"
CLASS="PROGRAMLISTING"
>// Data cache
>// Data cache
#define HAL_DCACHE_SIZE                 (8*1024)        // Size of data cache in bytes
#define HAL_DCACHE_SIZE                 (8*1024)        // Size of data cache in bytes
#define HAL_DCACHE_LINE_SIZE            16              // Size of a data cache line
#define HAL_DCACHE_LINE_SIZE            16              // Size of a data cache line
#define HAL_DCACHE_WAYS                 1               // Associativity of the cache
#define HAL_DCACHE_WAYS                 1               // Associativity of the cache
 
 
// Instruction cache
// Instruction cache
#define HAL_ICACHE_SIZE                 (16*1024)       // Size of cache in bytes
#define HAL_ICACHE_SIZE                 (16*1024)       // Size of cache in bytes
#define HAL_ICACHE_LINE_SIZE            32              // Size of a cache line
#define HAL_ICACHE_LINE_SIZE            32              // Size of a cache line
#define HAL_ICACHE_WAYS                 1               // Associativity of the cache
#define HAL_ICACHE_WAYS                 1               // Associativity of the cache
 
 
#define HAL_DCACHE_SETS (HAL_DCACHE_SIZE/(HAL_DCACHE_LINE_SIZE*HAL_DCACHE_WAYS))
#define HAL_DCACHE_SETS (HAL_DCACHE_SIZE/(HAL_DCACHE_LINE_SIZE*HAL_DCACHE_WAYS))
#define HAL_ICACHE_SETS (HAL_ICACHE_SIZE/(HAL_ICACHE_LINE_SIZE*HAL_ICACHE_WAYS))</PRE
#define HAL_ICACHE_SETS (HAL_ICACHE_SIZE/(HAL_ICACHE_LINE_SIZE*HAL_ICACHE_WAYS))</PRE
></TD
></TD
></TR
></TR
></TABLE
></TABLE
><P
><P
>Additional cache macros, or overrides for the defaults, may also
>Additional cache macros, or overrides for the defaults, may also
appear in here. While some architectures have instructions for
appear in here. While some architectures have instructions for
managing cache lines, overall enable/disable operations may be handled
managing cache lines, overall enable/disable operations may be handled
via variant specific registers. If so then
via variant specific registers. If so then
<TT
<TT
CLASS="FILENAME"
CLASS="FILENAME"
>var_cache.h</TT
>var_cache.h</TT
> should also define the
> should also define the
<TT
<TT
CLASS="LITERAL"
CLASS="LITERAL"
>HAL_XCACHE_ENABLE()</TT
>HAL_XCACHE_ENABLE()</TT
> and
> and
<TT
<TT
CLASS="LITERAL"
CLASS="LITERAL"
>HAL_XCACHE_DISABLE()</TT
>HAL_XCACHE_DISABLE()</TT
> macros.</P
> macros.</P
><P
><P
>If there are any generic features that the variant does not support
>If there are any generic features that the variant does not support
(cache locking is a typical example) then
(cache locking is a typical example) then
<TT
<TT
CLASS="LITERAL"
CLASS="LITERAL"
>var_cache.h</TT
>var_cache.h</TT
> may need to disable definitions of
> may need to disable definitions of
certain operations. It is architecture dependent exactly how this is
certain operations. It is architecture dependent exactly how this is
done.</P
done.</P
></DIV
></DIV
></DIV
></DIV
><DIV
><DIV
CLASS="NAVFOOTER"
CLASS="NAVFOOTER"
><HR
><HR
ALIGN="LEFT"
ALIGN="LEFT"
WIDTH="100%"><TABLE
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
SUMMARY="Footer navigation table"
WIDTH="100%"
WIDTH="100%"
BORDER="0"
BORDER="0"
CELLPADDING="0"
CELLPADDING="0"
CELLSPACING="0"
CELLSPACING="0"
><TR
><TR
><TD
><TD
WIDTH="33%"
WIDTH="33%"
ALIGN="left"
ALIGN="left"
VALIGN="top"
VALIGN="top"
><A
><A
HREF="hal-porting-platform.html"
HREF="hal-porting-platform.html"
ACCESSKEY="P"
ACCESSKEY="P"
>Prev</A
>Prev</A
></TD
></TD
><TD
><TD
WIDTH="34%"
WIDTH="34%"
ALIGN="center"
ALIGN="center"
VALIGN="top"
VALIGN="top"
><A
><A
HREF="ecos-ref.html"
HREF="ecos-ref.html"
ACCESSKEY="H"
ACCESSKEY="H"
>Home</A
>Home</A
></TD
></TD
><TD
><TD
WIDTH="33%"
WIDTH="33%"
ALIGN="right"
ALIGN="right"
VALIGN="top"
VALIGN="top"
><A
><A
HREF="hal-porting-architecture.html"
HREF="hal-porting-architecture.html"
ACCESSKEY="N"
ACCESSKEY="N"
>Next</A
>Next</A
></TD
></TD
></TR
></TR
><TR
><TR
><TD
><TD
WIDTH="33%"
WIDTH="33%"
ALIGN="left"
ALIGN="left"
VALIGN="top"
VALIGN="top"
>Platform HAL Porting</TD
>Platform HAL Porting</TD
><TD
><TD
WIDTH="34%"
WIDTH="34%"
ALIGN="center"
ALIGN="center"
VALIGN="top"
VALIGN="top"
><A
><A
HREF="hal-porting-guide.html"
HREF="hal-porting-guide.html"
ACCESSKEY="U"
ACCESSKEY="U"
>Up</A
>Up</A
></TD
></TD
><TD
><TD
WIDTH="33%"
WIDTH="33%"
ALIGN="right"
ALIGN="right"
VALIGN="top"
VALIGN="top"
>Architecture HAL Porting</TD
>Architecture HAL Porting</TD
></TR
></TR
></TABLE
></TABLE
></DIV
></DIV
></BODY
></BODY
></HTML
></HTML
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.