[Asterisk-bsd] OSLEC on FreeBSD - floating point in kernel (part 2)

Max Khon fjoe at samodelkin.net
Tue Sep 22 23:01:19 CDT 2009


Hello!

On Wed, Sep 23, 2009 at 1:04 AM, Ian FREISLICH <ianf at clue.co.za> wrote:

>
> > > I was wondering if anyone has actually managed to get this working.
> > > I'm using amd64 and when I select the ECHO_CAN_OSLEC, the compile
> > > fails with the following error:
> > >
> > > Warning: Object directory not changed from original
> > > /usr/ports/misc/zaptel/work/zaptel-bsd-1.4.11.2/zaptel
> > > cc -O2 -pipe -march=athlon64 -fno-strict-aliasing -Wall -D_KERNEL
> > > -DKLD_MODULE -nostdinc
> > >  -I/usr/ports/misc/zaptel/work/zaptel-bsd-1.4.11.2/zaptel/../zaptel -I.
> -I@
> -I@/contrib/altq
> > > -finline-limit=8000 --param inline-unit-growth=100 --param
> > > large-function-growth=1000 -fno-common  -fno-omit-frame-pointer
> > > -mcmodel=kernel -mno-red-zone  -mfpmath=387 -mno-sse -mno-sse2
> -mno-sse3
> > > -mno-mmx -mno-3dnow  -msoft-float -fno-asynchronous-unwind-tables
> > > -ffreestanding -fstack-protector -std=iso9899:1999 -fstack-protector
> -Wall
> > > -Wredundant-decls -Wnested-externs -Wstrict-prototypes
>  -Wmissing-prototype
> s
> > > -Wpointer-arith -Winline -Wcast-qual  -Wundef -Wno-pointer-sign
> > > -fformat-extensions -c oslec_echo.c
> > > oslec_echo.c: In function 'echo_can_update':
> > > oslec_echo.c:164: error: SSE register return with SSE disabled
> > >
> >
> > Which FreeBSD version is it?
> >  It builds fine for me on FreeBSD 6, 7, and 8
>
> You're probably building with OSLEC then.  A standard build of the
> port builds the MG2 echo canceler.
>
> I'm using 9-CURRENT, but you need to be using amd64 *and* to have
> set:
>
> #define ECHO_CAN_OSLEC
>
> in work/zaptel-bsd-1.4.11.2/zaptel/zconfig.h
>
> to get OSLEC (and reproduce this problem).  The MG2 echo canceler
> doesn't converge quickly enough (it takes about 30 seconds) and
> even then doesn't cancel all the echo on my line.  OSLEC on linux
> works great, but I want to ditch linux.
>
> If you're using OSLEC, but on i386, then you're probably going to
> have your floating point math corrupted during calls.
>

I looked through the code briefly. Yes, it looks like it should work if you
just replace float with int32_t.
Does it work for you in this case well enough?

Max
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.digium.com/pipermail/asterisk-bsd/attachments/20090923/2ec11b8e/attachment.htm 


More information about the Asterisk-BSD mailing list