FSL in C hängt

OP #2510510
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren