Forum: FPGA, VHDL & Co. FSL in C hängt


von Olpo O. (olpo)


Lesenswert?

Hallo zusammen,

ich möchte mit Microblaze eine FSL füllen.
Leider sehe ich in fsl.h keine Abfrage der Art bool fsl_full();
Ich kann höchsten ein Paar Parameter setzen. Aber ich weiß nicht genau, 
was sie gedeuten. Vielleicht kann mir das jmd erklären.
1
#define FSL_DEFAULT                             
2
#define FSL_NONBLOCKING                          n
3
#define FSL_EXCEPTION                            e
4
#define FSL_CONTROL                              c
5
#define FSL_ATOMIC                               a
6
7
#define FSL_NONBLOCKING_EXCEPTION                ne
8
#define FSL_NONBLOCKING_CONTROL                  nc
9
#define FSL_NONBLOCKING_ATOMIC                   na
10
#define FSL_EXCEPTION_CONTROL                    ec
11
#define FSL_EXCEPTION_ATOMIC                     ea
12
#define FSL_CONTROL_ATOMIC                       ca
13
14
#define FSL_NONBLOCKING_EXCEPTION_CONTROL        nec
15
#define FSL_NONBLOCKING_EXCEPTION_ATOMIC         nea
16
#define FSL_NONBLOCKING_CONTROL_ATOMIC           nca
17
#define FSL_EXCEPTION_CONTROL_ATOMIC             eca
18
19
#define FSL_NONBLOCKING_EXCEPTION_CONTROL_ATOMIC neca
20
21
#define getfslx(val, id, flags)      asm volatile (stringify(flags) "get\t%0,rfsl" stringify(id) : "=d" (val))
22
#define putfslx(val, id, flags)      asm volatile (stringify(flags) "put\t%0,rfsl" stringify(id) :: "d" (val))
23
24
#define tgetfslx(val, id, flags)     asm volatile ("t" stringify(flags) "get\t%0,rfsl" stringify(id) : "=d" (val))
25
#define tputfslx(id, flags)          asm volatile ("t" stringify(flags) "put\trfsl" stringify(id))
26
27
#define getdfslx(val, var, flags)    asm volatile (stringify(flags) "getd\t%0,%1" : "=d" (val) : "d" (var))
28
#define putdfslx(val, var, flags)    asm volatile (stringify(flags) "putd\t%0,%1" :: "d" (val), "d" (var))
29
30
#define tgetdfslx(val, var, flags)   asm volatile ("t" stringify(flags) "getd\t%0,%1" : "=d" (val) : "d" (var))
31
#define tputdfslx(var, flags)        asm volatile ("t" stringify(flags) "putd\t%0" :: "d" (var))

Ich habe bisher putfslx( val, FSL_DEFAULT) benutzt.
Ich dachte, das wäre das Gegenstück zu NONBLOCKING.
Allerdings hängt sich Microblaze auf, wenn ich FSL_DEFAULT mache und die 
FSL dann voll ist. Wieso macht er nicht weiter, sobald die FSL wieder 
Platz hat?
Was bedeuten die Parameter ATOMIC und EXCEPTION?
Danke

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.