# HG changeset patch # User Pascal Bellard # Date 1549969956 -3600 # Node ID cbcb33ee90443791153ca459c11d9ebaf0f6221a # Parent d1aa8d06c7fbb3b68909bccc65da5a80eae1d0ca Add libsbc diff -r d1aa8d06c7fb -r cbcb33ee9044 libsbc-dev/receipt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libsbc-dev/receipt Tue Feb 12 12:12:36 2019 +0100 @@ -0,0 +1,21 @@ +# SliTaz package receipt. + +PACKAGE="libsbc-dev" +VERSION="1.4" +CATEGORY="development" +SHORT_DESC="Digital audio encoder and decoder for Bluetooth audio output devices, development files" +MAINTAINER="pascal.bellard@slitaz.org" +LICENSE="GPL2" +WEB_SITE="http://www.bluez.org/" +WANTED="libsbc" + +DEPENDS="libsbc pkg-config" + +# Rules to gen a SliTaz package suitable for Tazpkg. +genpkg_rules() +{ + mkdir -p $fs/usr/lib + cp -a $install/usr/include $fs/usr + cp -a $install/usr/lib/*a $fs/usr/lib + cp -a $install/usr/lib/pkgconfig $fs/usr/lib +} diff -r d1aa8d06c7fb -r cbcb33ee9044 libsbc/receipt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libsbc/receipt Tue Feb 12 12:12:36 2019 +0100 @@ -0,0 +1,31 @@ +# SliTaz package receipt. + +PACKAGE="libsbc" +VERSION="1.4" +CATEGORY="multimedia" +SHORT_DESC="Digital audio encoder and decoder for Bluetooth audio output devices" +MAINTAINER="pascal.bellard@slitaz.org" +LICENSE="GPL2" +WEB_SITE="http://www.bluez.org/" +TARBALL="$PACKAGE-$VERSION.tar.xz" +WGET_URL="https://www.kernel.org/pub/linux/bluetooth/sbc-$VERSION.tar.xz" + +# Rules to configure and make the package. +compile_rules() +{ + ./configure \ + --prefix=/usr \ + --disable-static \ + --disable-tester \ + $CONFIGURE_ARGS && + make && + make DESTDIR=$DESTDIR install +} + +# Rules to gen a SliTaz package suitable for Tazpkg. +genpkg_rules() +{ + mkdir -p $fs/usr/lib + cp -a $install/usr/bin $fs/usr + cp -a $install/usr/lib/*.so* $fs/usr/lib +} diff -r d1aa8d06c7fb -r cbcb33ee9044 linld/stuff/src/CRTL.ASM --- a/linld/stuff/src/CRTL.ASM Mon Feb 11 17:14:38 2019 +0100 +++ b/linld/stuff/src/CRTL.ASM Tue Feb 12 12:12:36 2019 +0100 @@ -256,9 +256,15 @@ ;*************************************************************** +;_fastcall int readrm(bx:struct himem *m, ax:int sz); ;_fastcall int read(ax:int fd, bx:void* data, dx:int sz); ;_fastcall int write(ax:int fd, bx:const void* data, dx:int sz); ;*************************************************************** + global @readrm$qp11image_himemi:near +@readrm$qp11image_himemi: + xchg ax,dx ; sz + mov ax,[bx] ; fd + mov bx,[bx-2] ; data global @read$qipvi:near proc @read$qipvi near @@ -366,6 +372,81 @@ endif + ifdef USE_ARGSTR +;*************************************************************** +;_fastcall int argstr(bx:const char *s, ax:const char keywords[], dx:const char **var); +;_fastcall int argnum(bx:char *s, ax:const char keywords[], dx:unsigned long *var); +;*************************************************************** + global @argstr$qpxzcxt1ppxzc:near + proc @argstr$qpxzcxt1ppxzc near + + stc + db 73h ; jnc + global @argnum$qpzcxpxzcpul:near +@argnum$qpzcxpxzcpul: + clc + + xchg ax,bx ; keywords + xchg ax,cx ; s + xchg ax,dx ; vars + sbb dx,dx ; str:-1 num:0 + sbb dx,-4 ; str:2 num:4 + push si di + xchg ax,di ; vars + dec bx + mov al,0 +@@testalt: + sub di,dx +@@test: + cmp al,'=' + je @@found + mov si,cx ; s + add di,dx +@@match: + inc bx + lodsb + or al,20h + cmp al,[bx] + je @@match + cmp al,'/' ; 2f + jne @@notopt + cmp [byte bx],'-' + je @@match +@@notopt: + ifdef EXTRA + add di,dx + cmp [byte bx],'/' + je @@testalt + sub di,dx + endif + cmp [byte bx],'|' + je @@test + mov al,0 + inc bx + cmp [bx-1],al + jne @@notopt + stc + jmp @@nokeyword +@@found: + mov [di],si + dec dx + dec dx + je @@done + push si + call @strtol$qpxzc + mov [di],ax + mov [di+2],dx +@@done: + clc +@@nokeyword: + sbb ax,ax + pop di si + ret + + endp @argstr$qpxzcxt1ppxzc + + else + ;*************************************************************** ;_fastcall int strhead(bx:const char* a, ax:const char* b); ;*************************************************************** @@ -387,6 +468,7 @@ endp @strhead$qpxzct1 + endif ;*************************************************************** ;_fastcall char* malloc_or_die(ax:unsigned size); @@ -1147,6 +1229,23 @@ endp @strtol$qpxzc + ifdef USE_ARGSTR +;*************************************************************** +;_fastcall void set_cmdline(bx:const char *filename); +;*************************************************************** + global @set_cmdline$qpxzc:near + proc @set_cmdline$qpxzc near + call openargs + jc strtol_ret + mov cx,4096 + mov di,[_heap_top] + extrn read_cmdline:near + jmp near read_cmdline ; read_cmdline(ax,di,cx) + + endp @set_cmdline$qpxzc + endif + + ifdef NO386 ;*************************************************************** ;u16 topseg(); diff -r d1aa8d06c7fb -r cbcb33ee9044 linld/stuff/src/CRTL.H --- a/linld/stuff/src/CRTL.H Mon Feb 11 17:14:38 2019 +0100 +++ b/linld/stuff/src/CRTL.H Tue Feb 12 12:12:36 2019 +0100 @@ -21,11 +21,19 @@ void parse_cmdline(); extern _fastcall void strcatb(const char* a,const char* b); +#ifdef USE_ARGSTR +extern _fastcall int argstr(const char *s, const char keywords[], const char **var); +extern _fastcall int argnum(char *s, const char keywords[], unsigned long *var); +extern _fastcall void set_cmdline(const char *filename); +#define strhead(a,b) (strstr(a,b) != (int) a) +#else extern _fastcall int strhead(const char* a,const char* head); +#endif extern _fastcall int fileexist(const char* name); //extern "C" int open(const char* name, int flags); extern _fastcall int open(const char* name); extern _fastcall int close(int fd); +extern _fastcall int readrm(struct image_himem *m, int sz); extern _fastcall int read(int fd, void* data, int sz); extern _fastcall long lseekcur(int fd, int whence); extern _fastcall int puts(const char* s); @@ -42,4 +50,3 @@ //extern "C" unsigned long* malloc_bufv_or_die(struct image_himem *m); extern _fastcall int malloc_or_die(unsigned size); extern _fastcall int malloc_bufv_or_die(struct image_himem *m); -extern _fastcall void set_cmdline(const char *filename); diff -r d1aa8d06c7fb -r cbcb33ee9044 linld/stuff/src/ISO9660.CPP --- a/linld/stuff/src/ISO9660.CPP Mon Feb 11 17:14:38 2019 +0100 +++ b/linld/stuff/src/ISO9660.CPP Tue Feb 12 12:12:36 2019 +0100 @@ -68,14 +68,17 @@ p = x->buffer + 34 + ((p[32] + x->curpos) & -2); do { int len = p[2]; +# if 0 switch (* (short *) p) { - case 0x4D4E: // NM - x->filename = p + 5; - endname = p + len; - break; case 0x5850: // PX x->filemod = * (short *) (p + 4); break; + case 0x4D4E: // NM +# else + if (* (short *) p == 0x4D4E) { +# endif + x->filename = p + 5; + endname = p + len; } p += len; } while (x->buffer + x->curpos + size - p > 2); @@ -119,7 +122,8 @@ isoreset(NULL); } next: - for (name = s; *s && *s != '/'; s++); + name = s; + do s++; while (*s != '/' && *s); c = *s; *s = 0; for (x->curdirsize = 0xFFFF; isoreaddir() == 0;) { diff -r d1aa8d06c7fb -r cbcb33ee9044 linld/stuff/src/JUMP.ASM --- a/linld/stuff/src/JUMP.ASM Mon Feb 11 17:14:38 2019 +0100 +++ b/linld/stuff/src/JUMP.ASM Tue Feb 12 12:12:36 2019 +0100 @@ -132,9 +132,8 @@ push ax ; _csip high push [word si-4] ; _csip low else - extrn _csip:dword; - push [dword _csip] ; _csip mov si,offset _rm_size ; _rm_size, _pm_high, _rm_buf + push [dword si-4] ; _csip endif lodsw xchg ax,cx ; _rm_size diff -r d1aa8d06c7fb -r cbcb33ee9044 linld/stuff/src/LINLD.CPP --- a/linld/stuff/src/LINLD.CPP Mon Feb 11 17:14:38 2019 +0100 +++ b/linld/stuff/src/LINLD.CPP Tue Feb 12 12:12:36 2019 +0100 @@ -25,12 +25,20 @@ "\tinitrd,vga,root=(void)" NL "\tmem=256m" NL "\tcl=auto" NL +#ifdef USE_ARGSTR + "\t-b=1088k" NL +#else "\t-b 1088k" NL +#endif "Use quotes: \"cl=...\" if you need spaces in cmdline" NL "Use cl=@filename to get it from a file" #if 1 NL NL "Examples:" NL +#ifdef USE_ARGSTR + "\tLINLD -f -b=64m initrd=rootfs4.gz,rootfs3.gz,rootfs2.gz,rootfs1.gz \"cl=rw root=/dev/null video=-32\"" +#else "\tLINLD -f -b 64m initrd=rootfs4.gz,rootfs3.gz,rootfs2.gz,rootfs1.gz \"cl=rw root=/dev/null video=-32\"" +#endif NL NL "\tLINLD image=memtest" #endif ); @@ -46,6 +54,35 @@ puts("LINLD v" VERSION_STR "+"); // Parse command line +#ifdef USE_ARGSTR + if (argv[1]) {for (;;) { + const char **clp = &cmdline; + next: + argv++; + if (!*argv) { + puts(*clp); + set_cmdline(*clp); + puts(load_kernel()); + load_initrd(); + boot_kernel(); + } + if ((*(u16 *)*argv|0x2002) == 0x662F) { // -F /f + skip_alloc++; + goto next; + } + if (argstr(*argv,"cl|image|initrd",clp) == 0); + else if (fileexist(*argv) >= 0) + kernel_name=*argv; + else if (*argv) { + argnum(*argv,"root|vga|mem|-b",&root_dev); + *clp = (const char *) buf_cmdline + 1; + strcatb((const char *) buf_cmdline,*argv); + } + else + break; + } + } +#else if (argv[1]) {for (char i=0;;) { char *s; next: @@ -125,6 +162,7 @@ break; } }} +#endif syntax(); // Let compiler be happy diff -r d1aa8d06c7fb -r cbcb33ee9044 linld/stuff/src/LOAD.CPP --- a/linld/stuff/src/LOAD.CPP Mon Feb 11 17:14:38 2019 +0100 +++ b/linld/stuff/src/LOAD.CPP Tue Feb 12 12:12:36 2019 +0100 @@ -112,11 +112,10 @@ const u32 HdrS = 'H' + ('d'<<8) + (u32('r')<<16) + (u32('S')<<24); // register value to launch the kernel real mode code +static u32 csip; #ifdef NO386 -u32 csip; extern "C" u16 topseg(); #else -u32 csip=0x90200000; #define topseg() 0x9000 #endif u16 rm_size; @@ -133,25 +132,21 @@ #define _rm_buf(m) (((u8**)(m))[-1]) #define _pm_high (((u8*)(m))[-3]) #define _rm_size (*(u16*)((u8*)(m)-5)) -#ifdef NO386 #define _csip (*(u32*)((u8*)(m)-9)) - *((u16 *)&csip+1)=topseg()+0x20; -#else -#define _csip csip -#endif - // Open kernel, read first kb, check it - m->errmsg = kernel_file_error; - open_image(kernel_name, m); - char *version_string; { struct kernelparams_t *kernelparams; kernelparams = &(((first1k_t*) (_rm_buf(m) = (u8 *)malloc_or_die(_32k)))->params); #define first1k ((first1k_t*)((u8 *)kernelparams-0x1F1)) + *((u16 *)&_csip+1)=topseg()|0x20; + // Open kernel, read first kb, check it + m->errmsg = kernel_file_error; + open_image(kernel_name, m); + do { // Do not use malloc below until heap_top adjustment (see <*>) - if (read(m->fd, rm_buf, 0x200) == 0x200) { + if (readrm(m, 0x200) == 0x200) { lseekcur(m->fd,-0x200); if(kernelparams->setup_sects == 0) { @@ -171,7 +166,7 @@ m->chunk_size -= _rm_size; // Read remaining rm loader - if (read(m->fd, rm_buf, _rm_size) == _rm_size) break; + if (readrm(m, _rm_size) == _rm_size) break; } die(kernel_file_error); } while (0); diff -r d1aa8d06c7fb -r cbcb33ee9044 linld/stuff/src/TAZBOOT.CPP --- a/linld/stuff/src/TAZBOOT.CPP Mon Feb 11 17:14:38 2019 +0100 +++ b/linld/stuff/src/TAZBOOT.CPP Tue Feb 12 12:12:36 2019 +0100 @@ -188,6 +188,19 @@ s=*argv; i++; if (!s) break; +#ifdef USE_ARGSTR + if ((*(u16 *)s|0x2002) == 0x662F) { // -F /f + skip_alloc++; + goto next; + } + if (argstr(s,"kernel/image|initrd|bootfrom/iso",&kernel_name) == 0); + else if (argnum(s,"root|vga|mem/-e|-b",&root_dev) == 0); + else if(i == 1 && fileexist(s) != -1) { + kernel_name = s; + } + else strcatb(buf_cmdline,*argv); + } +#else if (strhead(s,"kernel=") == 0) { s++; set_kernel: @@ -243,6 +256,7 @@ strcatb(buf_cmdline,*argv); }} } +#endif if (iso && isoreset(iso) >= 0) { char *s = (char *) initrd_name; if (isoopen((char *) kernel_name) >= 0) { diff -r d1aa8d06c7fb -r cbcb33ee9044 linld/stuff/src/VCPI.ASM --- a/linld/stuff/src/VCPI.ASM Mon Feb 11 17:14:38 2019 +0100 +++ b/linld/stuff/src/VCPI.ASM Tue Feb 12 12:12:36 2019 +0100 @@ -92,7 +92,7 @@ ;Note: code/data segs must be flagged use16 (i.e. use ip/sp, not eip/esp) ;Note: base addrs will be fixed up in prepare_vcpi() descriptor gdt_code,(code_seg+readable),priv0,is_present,0fffffh,(gran_page+use_16),0 - global gdt_data + global gdt_data:descr descriptor gdt_data,(data_seg+writable),priv0,is_present,0fffffh,(gran_page+use_16),0 descriptor gdt_tss ,tss386_avail ,priv0,is_present,0ffh ,gran_byte , SEL_VCPI = (gdt_vcpi - gdt_null) diff -r d1aa8d06c7fb -r cbcb33ee9044 linld/stuff/src/pipehole.awk --- a/linld/stuff/src/pipehole.awk Mon Feb 11 17:14:38 2019 +0100 +++ b/linld/stuff/src/pipehole.awk Tue Feb 12 12:12:36 2019 +0100 @@ -41,6 +41,8 @@ hold=0; split($2,args,","); op="" if ($1 == "add") op="+" if ($1 == "sub") op="-" + if ($1 == "inc") { op="+"; args[2]="1"; } + if ($1 == "dec") { op="-"; args[2]="1"; } if (op != "" && regs[1] == args[1]) { if (isnum(args[2])) { for (i = kept++; i > 0; i--) line[i] = line[i-1] @@ -128,6 +130,18 @@ print s; print p; } else if (hold == 10) { + split($2,args,","); op="" + if ($1 == "add") op="+" + if ($1 == "sub") op="-" + if ($1 == "inc") { op="+"; args[2]="1"; } + if ($1 == "dec") { op="-"; args[2]="1"; } + if (op != "" && isnum(args[2])) { + split(line[0],reg,",") + if (substr(reg[1],length(reg[1])-1,2) == args[1]) { + line[0] = substr(line[0],1,length(line[0])-1) op args[2] "]" + next + } + } hold=0 if (/^ mov [sd]i,ax$/) { split($2,args,",")