aboutsummaryrefslogtreecommitdiffstats
path: root/tools/genext2fs
Commit message (Collapse)AuthorAgeFilesLines
* treewide: clean up download hashesFelix Fietkau2016-12-161-1/+1
| | | | | | Replace *MD5SUM with *HASH, replace MD5 hashes with SHA256 Signed-off-by: Felix Fietkau <nbd@nbd.name>
* tools: bring back genext2fs for apm821xxFelix Fietkau2016-07-235-0/+687
| | | | | | | | This reverts commit 8c68c104eaba65273280c7a4727fbb10ab10f5af. It is used for apm821xx, which needs ext2 (not ext4) images for some devices. Signed-off-by: Felix Fietkau <nbd@nbd.name>
* tools: drop unused genext2fsJo-Philipp Wich2015-04-205-687/+0
| | | | | | Signed-off-by: Jo-Philipp Wich <jow@openwrt.org> SVN-Revision: 45518
* tools: remove static linking supportJo-Philipp Wich2015-02-061-1/+1
| | | | | | Signed-off-by: Jo-Philipp Wich <jow@openwrt.org> SVN-Revision: 44285
* tools: genext2fs: add support for blocksize != 1024John Crispin2014-06-024-0/+636
| | | | | | | | | | | | | | | | | | | | | This patch series is extracted from http://ftp.de.debian.org/debian/pool/main/g/genext2fs/genext2fs_1.4.1-4.debian.tar.gz The patches are used in Debian for quite a long time, so I assume that this is solid material. At least, my Ubuntu host fsck.ext4 does not bark :-) The goal is to allow building filesystems with larger blocksizes instead of the current default of 1k. This should improve performance and lifetime when the filesystem is stored e.g. on a SD card (on Raspberry Pi/I2SE Duckbill for example) which uses internal flash memory. Writing to flash memory is slow because writing the data of one block results in erasing a whole erase block of the flash memory. Thus it is preferable to align the filesystem block size on a flash device with the erase blocksize, or at least bring it closer to the later one, to avoid unnecessary write amplification. Signed-off-by: Michael Heimpold <mhei@heimpold.de> SVN-Revision: 40921
* use HOST_STATIC_LINKING instead of hardcoding -staticJo-Philipp Wich2012-08-121-1/+1
| | | | SVN-Revision: 33140
* genext2fs: link staticallyJo-Philipp Wich2012-08-101-0/+1
| | | | SVN-Revision: 33093
* tools/genext2fs: do not include the host getline.h, it breaks the tool in ↵Felix Fietkau2012-02-121-1/+1
| | | | | | subtle ways, and the source already has a getline replacement SVN-Revision: 30479
* tools: clean up Makefiles / make ccache workJohn Crispin2012-01-151-20/+16
| | | | SVN-Revision: 29754
* get rid of $Id$ - it has never helped us and it has broken too many patches ;)Felix Fietkau2009-04-171-1/+0
| | | | SVN-Revision: 15242
* build system refactoring in preparation for allowing packages to do ↵Felix Fietkau2009-02-221-7/+7
| | | | | | host-build steps SVN-Revision: 14610
* genext2fs: update to 1.4.1Nicolas Thill2009-02-172-56/+3
| | | | SVN-Revision: 14536
* Use the only working sourceforge.net mirror for gentext2fs, the others are ↵Florian Fainelli2008-10-281-1/+1
| | | | | | ever not synchronised or timing out SVN-Revision: 13066
* rename tools/ext2fs to tools/genext2fsFelix Fietkau2007-12-242-0/+108
SVN-Revision: 9899
Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
--  This is an implementation of -*- vhdl -*- ieee.std_logic_1164 based only
--  on the specifications.  This file is part of GHDL.
--  Copyright (C) 2015-2021 Tristan Gingold
--
--  This program is free software: you can redistribute it and/or modify
--  it under the terms of the GNU General Public License as published by
--  the Free Software Foundation, either version 2 of the License, or
--  (at your option) any later version.
--
--  This program is distributed in the hope that it will be useful,
--  but WITHOUT ANY WARRANTY; without even the implied warranty of
--  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
--  GNU General Public License for more details.
--
--  You should have received a copy of the GNU General Public License
--  along with this program.  If not, see <gnu.org/licenses>.

use std.textio.all;   --V08
                      --V08
package std_logic_1164 is

  --  Unresolved logic state.
  type std_ulogic is
    (
     'U',  --  Uninitialized, this is also the default value.
     'X',  --  Unknown / conflict value (forcing level).
     '0',  --  0 (forcing level).
     '1',  --  1 (forcing level).
     'Z',  --  High impedance.
     'W',  --  Unknown / conflict (weak level).
     'L',  --  0 (weak level).
     'H',  --  1 (weak level).
     '-'   --  Don't care.
    );

  --  Vector of logic state.
  type std_ulogic_vector is array (natural range <>) of std_ulogic;

  --  Resolution function.
  --  If S is empty, returns 'Z'.
  --  If S has one element, return the element.
  --  Otherwise, 'U' is the strongest.
  --       then  'X'
  --       then  '0' and '1'
  --       then  'W'
  --       then  'H' and 'L'
  --       then  'Z'.
  function resolved (s : std_ulogic_vector) return std_ulogic;

  --  Resolved logic state.
  subtype std_logic is resolved std_ulogic;

  --  Vector of std_logic.
  type std_logic_vector is array (natural range <>) of std_logic; --!V08
  subtype std_logic_vector is (resolved) std_ulogic_vector;       --V08

  --  Subtypes of std_ulogic.  The names give the values.
  subtype X01   is resolved std_ulogic range 'X' to '1';
  subtype X01Z  is resolved std_ulogic range 'X' to 'Z';
  subtype UX01  is resolved std_ulogic range 'U' to '1';
  subtype UX01Z is resolved std_ulogic range 'U' to 'Z';

  --  Logical operators.
  --  For logical operations, the inputs are first normalized to UX01:
  --  0 and L are normalized to 0, 1 and 1 are normalized to 1, U isnt changed,
  --  all other states are normalized to X.
  --  Then the classical electric rules are followed.
  function "and"  (l : std_ulogic; r : std_ulogic) return UX01;
  function "nand" (l : std_ulogic; r : std_ulogic) return UX01;
  function "or"   (l : std_ulogic; r : std_ulogic) return UX01;
  function "nor"  (l : std_ulogic; r : std_ulogic) return UX01;
  function "xor"  (l : std_ulogic; r : std_ulogic) return UX01;
  function "xnor" (l : std_ulogic; r : std_ulogic) return UX01;  --!V87
  function "not"  (l : std_ulogic) return UX01;

  --  Logical operators for vectors.
  --  An assertion of severity failure fails if the length of L and R aren't
  --  equal.  The result range is 1 to L'Length.
  function "and"  (l, r : std_logic_vector) return std_logic_vector; --!V08
  function "nand" (l, r : std_logic_vector) return std_logic_vector; --!V08
  function "or"   (l, r : std_logic_vector) return std_logic_vector; --!V08
  function "nor"  (l, r : std_logic_vector) return std_logic_vector; --!V08
  function "xor"  (l, r : std_logic_vector) return std_logic_vector; --!V08
  function "xnor" (l, r : std_logic_vector) return std_logic_vector; --V93
  function "not"  (l : std_logic_vector) return std_logic_vector;    --!V08

  function "and"  (l, r : std_ulogic_vector) return std_ulogic_vector;
  function "nand" (l, r : std_ulogic_vector) return std_ulogic_vector;
  function "or"   (l, r : std_ulogic_vector) return std_ulogic_vector;
  function "nor"  (l, r : std_ulogic_vector) return std_ulogic_vector;
  function "xor"  (l, r : std_ulogic_vector) return std_ulogic_vector;
  function "xnor" (l, r : std_ulogic_vector) return std_ulogic_vector; --!V87
  function "not"  (l : std_ulogic_vector) return std_ulogic_vector;
                                                                  --V08
  function "and"  (l : std_ulogic_vector; r : std_ulogic       )  --V08
    return std_ulogic_vector;                                     --V08
  function "and"  (l : std_ulogic;        r : std_ulogic_vector)  --V08
    return std_ulogic_vector;                                     --V08
  function "nand" (l : std_ulogic_vector; r : std_ulogic       )  --V08
    return std_ulogic_vector;                                     --V08
  function "nand" (l : std_ulogic;        r : std_ulogic_vector)  --V08
    return std_ulogic_vector;                                     --V08
  function "or"   (l : std_ulogic_vector; r : std_ulogic       )  --V08
    return std_ulogic_vector;                                     --V08
  function "or"   (l : std_ulogic;        r : std_ulogic_vector)  --V08
    return std_ulogic_vector;                                     --V08
  function "nor"  (l : std_ulogic_vector; r : std_ulogic       )  --V08
    return std_ulogic_vector;                                     --V08
  function "nor"  (l : std_ulogic;        r : std_ulogic_vector)  --V08
    return std_ulogic_vector;                                     --V08
  function "xor"  (l : std_ulogic_vector; r : std_ulogic       )  --V08
    return std_ulogic_vector;                                     --V08
  function "xor"  (l : std_ulogic;        r : std_ulogic_vector)  --V08
    return std_ulogic_vector;                                     --V08
  function "xnor" (l : std_ulogic_vector; r : std_ulogic       )  --V08
    return std_ulogic_vector;                                     --V08
  function "xnor" (l : std_ulogic;        r : std_ulogic_vector)  --V08
    return std_ulogic_vector;                                     --V08
                                                                  --V08
  function "and"  (l : std_ulogic_vector) return std_ulogic;      --V08
  function "nand" (l : std_ulogic_vector) return std_ulogic;      --V08
  function "or"   (l : std_ulogic_vector) return std_ulogic;      --V08
  function "nor"  (l : std_ulogic_vector) return std_ulogic;      --V08
  function "xor"  (l : std_ulogic_vector) return std_ulogic;      --V08
  function "xnor" (l : std_ulogic_vector) return std_ulogic;      --V08
                                                                  --V08
  function "sll"  (l : std_ulogic_vector; r : integer)            --V08
    return std_ulogic_vector;                                     --V08
  function "srl"  (l : std_ulogic_vector; r : integer)            --V08
    return std_ulogic_vector;                                     --V08
  function "rol"  (l : std_ulogic_vector; r : integer)            --V08
    return std_ulogic_vector;                                     --V08
  function "ror"  (l : std_ulogic_vector; r : integer)            --V08
    return std_ulogic_vector;                                     --V08

  --  Conversion functions.
  --  The result range (for vectors) is S'Length - 1 downto 0.
  --  XMAP is return for values not in '0', '1', 'L', 'H'.
  function to_bit (s : std_ulogic; xmap : bit := '0') return bit;
  function to_bitvector (s : std_logic_vector; xmap : bit := '0')   --!V08
    return bit_vector;                                              --!V08
  function to_bitvector (s : std_ulogic_vector; xmap : bit := '0')
    return bit_vector;

  function to_stdulogic (b : bit) return std_ulogic;
  function to_stdlogicvector (b : bit_vector) return std_logic_vector;
  function to_stdlogicvector (s : std_ulogic_vector) return std_logic_vector;
  function to_stdulogicvector (b : bit_vector) return std_ulogic_vector;
  function to_stdulogicvector (s : std_logic_vector) return std_ulogic_vector;

  alias to_bit_vector is                                              --V08
    to_bitvector[std_ulogic_vector, bit return bit_vector];           --V08
  alias to_bv is                                                      --V08
    to_bitvector[std_ulogic_vector, bit return bit_vector];           --V08
                                                                      --V08
  alias to_std_logic_vector is                                        --V08
    to_stdlogicvector[bit_vector return std_logic_vector];            --V08
  alias to_slv is                                                     --V08
    to_stdlogicvector[bit_vector return std_logic_vector];            --V08
                                                                      --V08
  alias to_std_logic_vector is                                        --V08
    to_stdlogicvector[std_ulogic_vector return std_logic_vector];     --V08
  alias to_slv is                                                     --V08
    to_stdlogicvector[std_ulogic_vector return std_logic_vector];     --V08
                                                                      --V08
  alias to_std_ulogic_vector is                                       --V08
    to_stdulogicvector[bit_vector return std_ulogic_vector];          --V08
  alias to_sulv is                                                    --V08
    to_stdulogicvector[bit_vector return std_ulogic_vector];          --V08
                                                                      --V08
  alias to_std_ulogic_vector is                                       --V08
    to_stdulogicvector[std_logic_vector return std_ulogic_vector];    --V08
  alias to_sulv is                                                    --V08
    to_stdulogicvector[std_logic_vector return std_ulogic_vector];    --V08
                                                                      --V08
  --  Normalization.
  --  The result range (for vectors) is 1 to S'Length.
  function to_01  (s : std_ulogic_vector; xmap : std_ulogic := '0')   --V08
    return std_ulogic_vector;                                         --V08
  function to_01  (s : std_ulogic;        xmap : std_ulogic := '0')   --V08
    return std_ulogic;                                                --V08
  function to_01  (s : bit_vector;        xmap : std_ulogic := '0')   --V08
    return std_ulogic_vector;                                         --V08
  function to_01  (s : bit;               xmap : std_ulogic := '0')   --V08
    return std_ulogic;                                                --V08
                                                                      --V08
  function to_X01 (s : std_logic_vector) return std_logic_vector;     --!V08
  function to_X01 (s : std_ulogic_vector) return std_ulogic_vector;
  function to_X01 (s : std_ulogic) return X01;
  function to_X01 (b : bit_vector) return std_logic_vector;           --!V08
  function to_X01 (b : bit_vector) return std_ulogic_vector;
  function to_X01 (b : bit) return X01;

  function to_X01Z (s : std_logic_vector) return std_logic_vector;    --!V08
  function to_X01Z (s : std_ulogic_vector) return std_ulogic_vector;
  function to_X01Z (s : std_ulogic) return X01Z;
  function to_X01Z (b : bit_vector) return std_logic_vector;          --!V08
  function to_X01Z (b : bit_vector) return std_ulogic_vector;
  function to_X01Z (b : bit) return X01Z;

  function to_UX01 (s : std_logic_vector) return std_logic_vector;    --!V08
  function to_UX01 (s : std_ulogic_vector) return std_ulogic_vector;
  function to_UX01 (s : std_ulogic) return UX01;
  function to_UX01 (b : bit_vector) return std_logic_vector;          --!V08
  function to_UX01 (b : bit_vector) return std_ulogic_vector;
  function to_UX01 (b : bit) return UX01;

  function "??" (l : std_ulogic) return boolean;                      --V08
                                                                      --V08
  --  Edge detection.
  --  An edge is detected in case of event on s, and X01 normalized value
  --  rises from 0 to 1 or falls from 1 to 0.
  function rising_edge (signal s : std_ulogic) return boolean;
  function falling_edge (signal s : std_ulogic) return boolean;

  --  Test for unknown.  Only 0, 1, L and H are known values.
  function is_X (s : std_ulogic_vector) return boolean;
  function is_X (s : std_logic_vector) return boolean;                --!V08
  function is_X (s : std_ulogic) return boolean;
                                                                         --V08
  --  String conversion                                                  --V08
                                                                         --V08
  alias to_bstring is to_string [std_ulogic_vector return string];       --V08
  alias to_binary_string is to_string [std_ulogic_vector return string]; --V08
                                                                         --V08
  function to_ostring (value : std_ulogic_vector) return string;         --V08
  alias to_octal_string is to_ostring [std_ulogic_vector return string]; --V08
                                                                         --V08
  function to_hstring (value : std_ulogic_vector) return string;         --V08
  alias to_hex_string is to_hstring [std_ulogic_vector return string];   --V08
                                                                         --V08
  --  Input/output                                                       --V08
                                                                         --V08
  procedure write (l : inout line; value : std_ulogic;                   --V08
                   justified : side := right; field : width := 0);       --V08
                                                                         --V08
  procedure write (l : inout line; value : std_ulogic_vector;            --V08
                   justified : side := right; field : width := 0);       --V08
  alias bwrite is write [line, std_ulogic_vector, side, width];          --V08
  alias binary_write is write [line, std_ulogic_vector, side, width];    --V08
                                                                         --V08
  procedure owrite (l : inout line; value : std_ulogic_vector;           --V08
                    justified : side := right; field : width := 0);      --V08
  alias octal_write is owrite [line, std_ulogic_vector, side, width];    --V08
                                                                         --V08
  procedure hwrite (l : inout line; value : std_ulogic_vector;           --V08
                    justified : side := right; field : width := 0);      --V08
  alias hex_write is hwrite [line, std_ulogic_vector, side, width];      --V08
                                                                         --V08
  procedure read (l : inout line;                                        --V08
                  value : out std_ulogic; good : out boolean);           --V08
  procedure read (l : inout line; value : out std_ulogic);               --V08
                                                                         --V08
  procedure read (l : inout line;                                        --V08
                  value : out std_ulogic_vector; good : out boolean);    --V08
  procedure read (l : inout line; value : out std_ulogic_vector);        --V08
  alias bread is read [line, std_ulogic_vector, boolean];                --V08
  alias bread is read [line, std_ulogic_vector];                         --V08
  alias binary_read is read [line, std_ulogic_vector, boolean];          --V08
  alias binary_read is read [line, std_ulogic_vector];                   --V08
                                                                         --V08
  procedure hread (l : inout line;                                       --V08
                   value : out std_ulogic_vector; good : out boolean);   --V08
  procedure hread (l : inout line; value : out std_ulogic_vector);       --V08
  alias hex_read is read [line, std_ulogic_vector, boolean];             --V08
  alias hex_read is read [line, std_ulogic_vector];                      --V08
                                                                         --V08
  procedure oread (l : inout line;                                       --V08
                   value : out std_ulogic_vector; good : out boolean);   --V08
  procedure oread (l : inout line; value : out std_ulogic_vector);       --V08
  alias octal_read is read [line, std_ulogic_vector, boolean];           --V08
  alias octal_read is read [line, std_ulogic_vector];                    --V08
end std_logic_1164;