Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset 2628642 in mainline


Ignore:
Timestamp:
2017-05-18T18:04:13Z (5 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master
Children:
b06414f
Parents:
3ec2acc
Message:

generate inlined binary data via assembler
this is much faster and more flexible than via the C compiler

Files:
5 edited

Legend:

Unmodified
Added
Removed
  • tools/mkarray.py

    r3ec2acc r2628642  
    3737def usage(prname):
    3838        "Print usage syntax"
    39         print("%s <DESTINATION> <LABEL> [SOURCE ...]" % prname)
     39        print("%s <DESTINATION> <LABEL> <AS_PROLOG> [SOURCE ...]" % prname)
    4040
    4141def main():
    42         if (len(sys.argv) < 3):
     42        if (len(sys.argv) < 4):
    4343                usage(sys.argv[0])
    4444                return
     
    4646        dest = sys.argv[1]
    4747        label = sys.argv[2]
     48        as_prolog = sys.argv[3]
    4849       
    4950        header_ctx = []
    5051        data_ctx = []
    51         for src in sys.argv[3:]:
     52       
     53        for src in sys.argv[4:]:
    5254                basename = os.path.basename(src)
    5355                symbol = basename.replace(".", "_")
     
    5961                src_in.close()
    6062               
    61                 header_rec = "extern uint8_t %s[];" % symbol
    62                 header_ctx.append(header_rec)
    63                
    64                 data_rec = "uint8_t %s[] = {\n\t" % symbol
     63                data_rec = "\t.byte "
    6564               
    6665                fmt = 'B'
     
    7473                        if (offset > 0):
    7574                                if ((cnt % 15) == 0):
    76                                         data_rec += ",\n\t"
     75                                        data_rec += "\n\t.byte "
    7776                                else:
    7877                                        data_rec += ", "
     
    8281                        cnt += 1
    8382               
    84                 data_rec += "\n};\n"
    85                 data_ctx.append(data_rec)
     83                data_rec += "\n"
    8684               
    87                 header_rec = "extern size_t %s_size;" % symbol
    88                 header_ctx.append(header_rec)
     85                header_ctx.append("extern uint64_t %s_size;" % symbol)
     86                header_ctx.append("extern uint8_t %s[];" % symbol)
    8987               
    90                 data_rec = "size_t %s_size = %u;\n" % (symbol, offset)
     88                data_ctx.append(".globl %s_size" % symbol)
     89                data_ctx.append(".balign 8");
     90                data_ctx.append(".size %s_size, 8" % symbol)
     91                data_ctx.append("%s_size:" % symbol)
     92                data_ctx.append("\t.quad %u\n" % offset)
     93               
     94                data_ctx.append(".globl %s" % symbol)
     95                data_ctx.append(".balign 8")
     96                data_ctx.append(".size %s, %u" % (symbol, offset))
     97                data_ctx.append("%s:" % symbol)
    9198                data_ctx.append(data_rec)
    9299       
     
    107114        header.close()
    108115       
    109         data = open("%s.c" % dest, "w")
     116        data = open("%s.s" % dest, "w")
    110117       
    111118        data.write('/***************************************\n')
     
    113120        data.write(' * Generated by: tools/mkarray.py      *\n')
    114121        data.write(' ***************************************/\n\n')
    115         data.write("#include \"%s.h\"\n\n" % dest)
     122        data.write(as_prolog)
     123        data.write('.data\n\n')
    116124        data.write("\n".join(data_ctx))
    117125       
  • uspace/app/barber/Makefile

    r3ec2acc r2628642  
    4646SOURCES = \
    4747        barber.c \
    48         images.c
     48        images.s
    4949
    5050IMAGES = \
     
    8080        gfx/frame30.tga.gz
    8181
    82 PRE_DEPEND = images.c images.h
    83 EXTRA_CLEAN = images.c images.h
     82PRE_DEPEND = images.s images.h
     83EXTRA_CLEAN = images.s images.h
    8484
    8585include $(USPACE_PREFIX)/Makefile.common
    8686
    87 image%.c image%.h: $(IMAGES)
    88         $(ROOT_PATH)/tools/mkarray.py images COMPOSITOR_IMAGES $(IMAGES)
     87images.s images.h: $(IMAGES)
     88        $(ROOT_PATH)/tools/mkarray.py images COMPOSITOR_IMAGES "$(AS_PROLOG)" $^
  • uspace/app/vlaunch/Makefile

    r3ec2acc r2628642  
    4545SOURCES = \
    4646        vlaunch.c \
    47         images.c
     47        images.s
    4848
    4949IMAGES = \
    5050        gfx/helenos.tga
    5151
    52 PRE_DEPEND = images.c images.h
    53 EXTRA_CLEAN = images.c images.h
     52PRE_DEPEND = images.s images.h
     53EXTRA_CLEAN = images.s images.h
    5454
    5555include $(USPACE_PREFIX)/Makefile.common
    5656
    57 images.c images.h: $(IMAGES)
    58         $(ROOT_PATH)/tools/mkarray.py images COMPOSITOR_IMAGES $^
     57images.s images.h: $(IMAGES)
     58        $(ROOT_PATH)/tools/mkarray.py images COMPOSITOR_IMAGES "$(AS_PROLOG)" $^
  • uspace/lib/c/arch/mips32/Makefile.common

    r3ec2acc r2628642  
    2929GCC_CFLAGS += -msoft-float -mabi=32
    3030BASE_LIBS += $(LIBSOFTFLOAT_PREFIX)/libsoftfloat.a
     31AS_PROLOG = .module softfloat;.abicalls;
    3132
    3233ENDIANESS = LE
  • uspace/lib/c/arch/mips32eb/Makefile.common

    r3ec2acc r2628642  
    2929GCC_CFLAGS += -msoft-float -mabi=32
    3030BASE_LIBS += $(LIBSOFTFLOAT_PREFIX)/libsoftfloat.a
     31AS_PROLOG = .module softfloat;.abicalls;
    3132
    3233ENDIANESS = BE
Note: See TracChangeset for help on using the changeset viewer.